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 :

afficher un rapport local à partir d'une combobox [Débutant]


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Autoditacte
    Inscrit en
    Septembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Autoditacte

    Informations forums :
    Inscription : Septembre 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut afficher un rapport local à partir d'une combobox
    Bonjour mes ami(e)s développeurs(euses),

    Je voudrais avoir des aides concernant l'utilisation des rapports local.
    J'ai une application qui gère des produits, clients, et autres pour un garage. l'utilisateur pourra enregistrer une commande.
    Ce que je souhaiterais faire c'est afficher un bon de commande en fonction du client choisi dans une combo box.

    Code du combo box qui fonctionne parfaitement :
    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
    Public Sub ComboClients()
            strConn = "Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\EstDistribution.mdf;Integrated Security=True"
     
     
            ObjetConnection = New SqlConnection(strConn)
            ObjetConnection.Open()
            strSql = "SELECT * FROM clients"
            ObjetCommand = New SqlCommand(strSql)
            ObjetCommand.Connection() = ObjetConnection
     
            Dim myReader As SqlDataReader = ObjetCommand.ExecuteReader()
            Dim dt As New DataTable
            dt.Columns.Add("colone1")
            dt.Columns.Add("colonne2")
     
     
            Do While myReader.Read
                Dim v1 = myReader.Item(0)
                Dim v2 As String = myReader.GetString(1) & " " & myReader.GetString(2)
                dt.Rows.Add(v1, v2)
            Loop
            myReader.Close()
            cbClients.DataSource = dt
            cbClients.DisplayMember = "colonne2"
     
            ObjetConnection.Close()
     
            cbClients.SelectedIndex = -1
            cbClients.SelectedItem = Nothing
        End Sub
    je rempli donc ma combo box sur 2 colonne qui affichera le nom et prénom du client

    la tout se complique pour moi, j'arrive pas à afficher la commande concernant le client. dans mon data-set, j'ai créer une data-table qui fait appelle à une requête avec des jointure qui m'affiche toutes les commandes présente dans la base de données.

    Voici le code au niveau du changement de la combobox :

    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
     
    strConn = "Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\EstDistribution.mdf;Integrated Security=True"
    dv = CType(Me.cbClients.SelectedItem, DataRowView) 'Défini l'item 0 de la combobox
            ObjetConnection = New SqlConnection(strConn)
            ObjetConnection.Open()
           Dim daCommandesClientsDetails As SqlClient.SqlDataAdapter = New SqlDataAdapter("SELECT date_commande, nom, prenom, email," &
            "adresse, tel, libelle, reference, stock, prix, description, quantite FROM clients" &
            "INNER JOIN commande ON commande.id_client = clients.id_client INNER JOIN concerne" &
            "ON concerne.id_commande = commande.id_commande INNER JOIN produits ON produits.id_produit = concerne.id_produit" &
            "WHERE clients.id_client = " & dv(0), strConn)
     
            Dim dt1 = New DataTable
            daCommandesClientsDetails.Fill(dt1)
     
            ReportViewer1.ProcessingMode = ProcessingMode.Local
     
            If System.IO.File.Exists(System.IO.Directory.GetCurrentDirectory() & "\..\..\RapportBonCommande.rdlc") Then
            ReportViewer1.LocalReport.ReportPath = System.IO.Directory.GetCurrentDirectory() & "\..\..\RapportBonCommande.rdlc"
            ElseIf System.IO.File.Exists(System.IO.Directory.GetCurrentDirectory() & "\RapportBonCommande.rdlc") Then
            ReportViewer1.LocalReport.ReportPath = _
                System.IO.Directory.GetCurrentDirectory() & "\RapportBonCommande.rdlc"
            End If
            ReportViewer1.LocalReport.DataSources.Clear()
            ReportViewer1.LocalReport.DataSources.Add(New ReportDataSource("EstDistributionDataSet", dt1))
     
            ReportViewer1.RefreshReport()
    j'ai une erreur au niveau de la synthaxe : Incorrect syntax near '.'.

    Je vous remercie d'avance ^^

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Points : 27
    Points
    27
    Par défaut
    Bonjour,

    Ajoute un espace devant chaque ligne avant de poursuivre la définition de ta chaîne SQL après un retour à la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    " adresse, tel, libelle, reference, stock, prix, description, quantite FROM clients" &
    " INNER JOIN commande ON commande.id_client = clients.id_client INNER JOIN concerne" &
    " ON concerne.id_commande = commande.id_commande INNER JOIN produits ON produits.id_produit = concerne.id_produit" &
    " WHERE clients.id_client = " & dv(0), strConn)

  3. #3
    Candidat au Club
    Homme Profil pro
    Autoditacte
    Inscrit en
    Septembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Autoditacte

    Informations forums :
    Inscription : Septembre 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci mais maintenant j'ai une erreur sur ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim daCommandesClientsDetails As SqlClient.SqlDataAdapter = New SqlDataAdapter("SELECT date_commande, nom, prenom, email," &
            " adresse, tel, libelle, reference, stock, prix, description, quantite FROM clients" &
            " INNER JOIN commande ON commande.id_client = clients.id_client INNER JOIN concerne" &
            " ON concerne.id_commande = commande.id_commande INNER JOIN produits ON produits.id_produit = concerne.id_produit" &
            " WHERE clients.id_client = " & dv(0), strConn)
    Voici l'erreur : La référence d'objet n'est pas définie à une instance d'un objet.

    Cordialement

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Points : 27
    Points
    27
    Par défaut
    Et bien regarde au niveau de ta variable dv(0)
    Essaye

  5. #5
    Candidat au Club
    Homme Profil pro
    Autoditacte
    Inscrit en
    Septembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Autoditacte

    Informations forums :
    Inscription : Septembre 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    ça ne fonctionne pas non plus !!

    Pour les autres formulaire, dv(0) fonctionne au moment de choisir un élément dans la combobox pour afficher des informations dans des textbox ou des listview. Je pense que le problème ne vient pas de la mais d'un autre côté mais je ne sais pas ou exactement

    peut être au niveau de la connection?

    j'ai déclarer ce bout de code plus haut que j'avais oublier de mettre ^^' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ObjetConnection = New SqlConnection(strConn)
            ObjetConnection.Open()
    et remplacer le "strConn" celui après la requête par "ObjetConnection" mais ça ne fonctionne pas non plus

  6. #6
    Candidat au Club
    Homme Profil pro
    Autoditacte
    Inscrit en
    Septembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Autoditacte

    Informations forums :
    Inscription : Septembre 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    J'ai re-modifié mon code. J'ai ajouté une condition sur la sélection d'index de la combo-box afin de vérifier si l'index retourné est supérieure à -1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If cbClients.SelectedIndex > -1 Then
     
                  '....Le code entier....
     
    End If
    l'application se lance sans générer d'erreur mais un message s'affiche dans le viewer : "Une instance de source de données manque pour la source de données 'BonCommande'.
    j'essaie de chercher un solution en attendant vos réponses ^^

    Cordialement



    [Edit]

    J'ai trouver la solution

    l'erreur se trouvait sur cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ReportViewer1.LocalReport.DataSources.Add(New ReportDataSource("EstDistributionDataSet", dt1))
    j'ai donc remplacer "EstDistributionDataSet" par "BonCommande" qui est autre que le nom de DataSet défini dans l'assistant du rapport ^^

    Merci pour ton aide Zozodev

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

Discussions similaires

  1. [Turbo Pascal] Programme qui affiche le jour à partir d'une date
    Par rafikadel dans le forum Turbo Pascal
    Réponses: 22
    Dernier message: 27/03/2020, 19h33
  2. sélectionner Une ComboBox et Afficher le Resultat a partir d'une BD dans TextField
    Par KMeriam dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 01/09/2010, 17h21
  3. [C#] Récupération de données à partir d'une combobox
    Par Choumy dans le forum Windows Forms
    Réponses: 10
    Dernier message: 09/02/2008, 17h51
  4. afficher un jtable a partir d'une selection jlist
    Par lilmo dans le forum Composants
    Réponses: 1
    Dernier message: 31/12/2006, 10h49
  5. Réponses: 2
    Dernier message: 15/11/2006, 19h57

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