IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Mise en forme des données


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 22
    Par défaut Mise en forme des données
    Bonjour à tous,

    je suis en train de coder un module d'impression, et je veux mettre en forme les données directement en VB.NET

    J'ai un problème concernant la lecture des lignes de ma requête, je ne sais pas comment faire..

    Voilà ma requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If debut = 1 Then
                Dim req As String
                req = "select ID, NOM, PRENOM from CLIENT"
                Dim cmd As New OleDbCommand(req, maconnexion)
                rdr = cmd.ExecuteReader()
                rdr.Read()
                numpage = 1
            End If
    Et c'est là que je bloque, comment récupérer les données issues de la requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    While count < linesPerPage
                line = ????????
                If line Is Nothing Then Exit While
                yPos = ev.MarginBounds.Top + count * f.GetHeight(ev.Graphics)
                ev.Graphics.DrawString(line, f, Brushes.Black, ev.MarginBounds.Left, yPos, New StringFormat())
                count += 1
            End While
    Merci pour votre aide!

  2. #2
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut
    Bonjour

    place le code du if de ta requette dans une fonction qui rend un OleDbDataReader

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     private Function GetListName() As OleDbDataReader
     
            Dim recordset As OleDbDataReader
            recordset = Nothing
            req = "select ID, NOM, PRENOM from CLIENT"
           Dim cmd As New OleDbCommand(req, maconnexion)
            Try
                recordset = cmd.ExecuteReader
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
            Return recordset
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    private  recordset As OleDbDataReader  
     
    private sub show()
      recordset = GetListName
       While recordset.Read
         yPos = ev.MarginBounds.Top + count * f.GetHeight(ev.Graphics)
                ev.Graphics.DrawString(line, f, Brushes.Black, ev.MarginBounds.Left, yPos, New StringFormat())
       end while
     
    end sub

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    Comme la partie impression de page est activé par un évènement, il faut déclarer le reader en private hors de la méthode btnImprimer_Click (comme printFont d'ailleur)

    String.Format permet de formater une ligne (tu pourrais aussi rajouter le numéro de ligne par exemple)
    PadRight permet d'avoir un même nombre de caractère sur la chaîne en retour
    Je ne sais de quel type est ton ID j'ai mis un exemple avec un entier (reader.GetInt32) pour la lecture, si c'est une string regarde les valeurs suivantes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
        Private printFont As Font
        Private reader As OleDbDataReader
     
        Private Sub btnImprimer_Click(sender As System.Object, e As System.EventArgs) Handles btnImprimer.Click
            ' tes éléments de requete
            ' ...
                Try
                    Dim prdoc As New System.Drawing.Printing.PrintDocument()
                    printFont = New Font("Courier New", 10) ' utilise une police non proportionnelle qui permet la régularité des caractères pour l'affichage
                    reader = cmd.ExecuteReader()
                    AddHandler prdoc.PrintPage, AddressOf Me.prdoc_PrintPage
                    If reader.HasRows Then
                        reader.Read() ' pour être prêt 
                        prdoc.Print()
                    Else
                        MessageBox.Show("Aucune ligne.")
                    End If
                Catch ex As Exception
                    MsgBox(ex.ToString)
                End Try
                reader.Close()
        End Sub
     
        ' L'évènement PrintPage est envoyé pour chaque page qui doit être imprimée.
        Private Sub prdoc_PrintPage(ByVal sender As Object, ByVal ev As System.Drawing.Printing.PrintPageEventArgs)
            Dim linesPerPage As Single = 0
            Dim yPos As Single = 0
            Dim count As Integer = 0
            Dim UneLigne As String = Nothing
            Dim bLigne As Boolean = True ' présence d'autres éléments à lire
     
            ' Calcule le nombre de ligne par page.
            linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics)
     
            ' Iprime chaque ligne issu de la BDD.
            While count < linesPerPage And bLigne
                UneLigne = String.Format(" {0}  {1}  {2} ", reader.GetInt32(0).ToString.PadRight(10), reader.GetString(1).PadRight(30), reader.GetString(2).PadRight(30)) ' constitue la ligne avec espacement régulier
                yPos = ev.MarginBounds.Top + count * printFont.GetHeight(ev.Graphics)
                ev.Graphics.DrawString(UneLigne, printFont, Brushes.Black, ev.MarginBounds.Left, yPos, New StringFormat())
                count += 1
                bLigne = reader.Read ' la lecture du reader indique s'il y a d'autres éléments en bBDD
            End While
     
            ' d'autres éléments de la BDD?, une autre page à imprimer.
            If bLigne Then ev.HasMorePages = True Else ev.HasMorePages = False
        End Sub
    Au fait, pense à marquer ta discussion précédante en résolue s'il-te-plait.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 22
    Par défaut
    Merci beaucoup pour cette aide!

    J'aimerais maintenant ajouter une image:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim img As Image = Image.FromFile("img.png")
             ev.Graphics.DrawImage(img, xpos + largeurcol, ypos + 15)
    Mais l'IDE m'indique que: "Image est ambigu, importé des espaces de noms ou des types 'Microsoft.Office.Interop.Access, System.Drawing' "

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Tu dois avoir les 2 références, écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            Dim img As System.Drawing.Image = System.Drawing.Image.FromFile("img.png")
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 22
    Par défaut
    Merci rv26t, ce problème est résolu.

    Maintenant, je souhaite afficher des informations que je suis allé récupérer dans la base de données sur une ou plusieurs lignes.

    Ceci est le libellé de l'article; j'aimerais qu'il y ait un retour automatique à la ligne si ce libellé dépasse 100 caractères par exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ev.Graphics.DrawString(tableau(i, 1), f, Brushes.Black, xpos + 100, ypos + 35)
    Merci pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mise en forme des données sous Excel
    Par mhamedbj dans le forum Cognos
    Réponses: 2
    Dernier message: 27/08/2011, 16h00
  2. [2008] Mise en forme des données
    Par Valochette dans le forum SSRS
    Réponses: 2
    Dernier message: 12/05/2011, 09h34
  3. [MySQL] probleme de mise en forme des données
    Par arakiri dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 01/06/2007, 11h01
  4. [MySQL] Mise en forme des données
    Par Silborn dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/12/2006, 18h00
  5. Réponses: 6
    Dernier message: 16/06/2006, 14h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo