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

ADO.NET Discussion :

comment remplire le dataset a partir de plusieurs tables?


Sujet :

ADO.NET

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 34
    Points : 10
    Points
    10
    Par défaut comment remplire le dataset a partir de plusieurs tables?
    salut
    j'ai un probleme dans une application de facturation.
    comment remplire un dataadapter a partir de requete sql

    le probleme c'est que j'ai un form pour afficher les factures dont il affiche les donnes de facture
    voiala le code:


    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
    Imports System.Data
    Imports System.Data.OleDb
    Public Class factures
    Dim ConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source =" & Application.StartupPath & "\stockguard.mdb"
    Dim Conn As New OleDbConnection(ConStr)
    Dim DataSet1 As New DataSet
    Dim SQLstr As String = "SELECT * FROM ventes"
    Private Sub factures_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
    MyBase.Load
    Conn.Open()
    Dim DataAdapter1 As New OleDbDataAdapter(SQLstr, Conn)
    DataAdapter1.Fill(DataSet1, "ventes")
    Conn.Close()
    TextBox1.DataBindings.Add("Text", DataSet1, "Table1.code")
    TextBox2.DataBindings.Add("Text", DataSet1, "Table1.numero")
    TextBox3.DataBindings.Add("Text", DataSet1, "Table1.codeclient")
    ChangePosition()
    End Sub
    pour le moment le code marche très bien .

    mais je veux aussi ramener le nom de client d'une autre table
    et j'ai modifié la requete

    mais le probleme c'est en dataadapter.fill n'accepte qu'un seul nom de tableau
    pouvez vous m'aider svp ?
    merci

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Je suis pas vraiement sur de comprendre ce que tu veux faire au final mais je vais tenter de donner quelques pistes:

    Un tableAdapter permet l'interraction UNE dataTable avec une table ou vue d'une base de donnée. Dans le cas d'une vue contenant une jointure sur plusieurs tables il ne permet que le chargement des données (fill).

    Idéalement tu utilises une datatable et un adapter par Table disponible sur la base de donnée.

    Dans ton cas tu as: DataTable_Client, DataTable_Facture, TableAdapter_Client et TableAdapter_Facture.

    Ensuite tu utilises un lien entre la DataTable Client et Facture afin de pouvoir naviguer entre les deux tables si besoin.

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 34
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par sinople Voir le message
    Je suis pas vraiement sur de comprendre ce que tu veux faire au final mais je vais tenter de donner quelques pistes:

    Un tableAdapter permet l'interraction UNE dataTable avec une table ou vue d'une base de donnée. Dans le cas d'une vue contenant une jointure sur plusieurs tables il ne permet que le chargement des données (fill).

    Idéalement tu utilises une datatable et un adapter par Table disponible sur la base de donnée.

    Dans ton cas tu as: DataTable_Client, DataTable_Facture, TableAdapter_Client et TableAdapter_Facture.

    Ensuite tu utilises un lien entre la DataTable Client et Facture afin de pouvoir naviguer entre les deux tables si besoin.
    c'est une idée proche de ce que vous avez citez.
    mais je save pas comment utilisé une jointure de datatable
    avez vous un exemple svp
    et merci pour votre aide

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    La liaison se crée dans l'éditeur du dataset. (Normalement ces liaisons se crée automatiquement avec l'assistant.)


    Ensuite pour l'utilisation ça dépend du cas de figure mais voila quelques exemples d'utilisation.

    1. Dans les objet rows de la datable fille on retrouve un objet représentant le row mère (A regarder en stoppant le code avec un espion)

    Ce qui donne un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dataset.TableFille.Rows(x).NomTableMère(ChampsTablemère)
    2. On peut aussi créer une colonne expression (calculée) dans les datatables et y inclure dans la syntaxe de l'expression des valeurs de la mère / fille (pour la mère il faut une fonction de regrouppement avec bien sur...). Voir l'aide MSDN pour la syntaxe des colonne expression. Pratique pour l'affichage dans un datagridview celui-la.

  5. #5
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Modifier sqlstr en y insérant le INNER JOIN.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sqlstr= New SqlDataAdapter(" SELECT ventes.*,clients.* FROM ventes "  &
                " INNER JOIN clients" &
                " ON clients.codeclient=ventes.nomclient "
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  6. #6
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 34
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par sinople Voir le message
    La liaison se crée dans l'éditeur du dataset. (Normalement ces liaisons se crée automatiquement avec l'assistant.)


    Ensuite pour l'utilisation ça dépend du cas de figure mais voila quelques exemples d'utilisation.

    1. Dans les objet rows de la datable fille on retrouve un objet représentant le row mère (A regarder en stoppant le code avec un espion)

    Ce qui donne un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dataset.TableFille.Rows(x).NomTableMère(ChampsTablemère)
    2. On peut aussi créer une colonne expression (calculée) dans les datatables et y inclure dans la syntaxe de l'expression des valeurs de la mère / fille (pour la mère il faut une fonction de regrouppement avec bien sur...). Voir l'aide MSDN pour la syntaxe des colonne expression. Pratique pour l'affichage dans un datagridview celui-la.
    merci pour l'aide
    mais je travaille pas avec l'assisstant
    seulment avec le code.

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 34
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Graffito Voir le message
    Modifier sqlstr en y insérant le INNER JOIN.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sqlstr= New SqlDataAdapter(" SELECT ventes.*,clients.* FROM ventes "  &
                " INNER JOIN clients" &
                " ON clients.codeclient=ventes.nomclient "
    merci pour l'aide
    mais ça marche pas

  8. #8
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Citation Envoyé par vbinfo Voir le message
    merci pour l'aide
    mais ça marche pas
    Désolé, faute de frappe .
    Au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    clients.codeclient=ventes.nomclient
    c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    clients.codeclient=ventes.codeclient
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  9. #9
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 34
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Graffito Voir le message
    Désolé, faute de frappe .
    Au lieu de : clients.codeclient=ventes.nomclient
    c'est : clients.codeclient=ventes.codeclient
    d'accord
    mais ça n'a rien changé
    ou dois je mettre tous ça ?
    merci

  10. #10
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    En modifiant ton instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim SQLstr As String = "SELECT * FROM ventes"
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  11. #11
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 34
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Graffito Voir le message
    En modifiant ton instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim SQLstr As String = "SELECT * FROM ventes"
    erreur
    Une valeur de type 'string' ne peut pas être convertie en oledbdataadapter

  12. #12
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 34
    Points : 10
    Points
    10
    Par défaut
    ya t'il une autre solution svp ?

  13. #13
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Vous souffrez parce que vous aimez utiliser la dernière technologie et sans dicernement.
    Peux-tu me poster sur le forum, la definition des tables ventes et clients ?

    Nous allons le faire via un seul dataset.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

Discussions similaires

  1. [.net2.0] comment remplir un dataset typé
    Par dietrich dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 23/01/2007, 13h57
  2. [C#] Comment remplir un dataset depuis un detailsView
    Par LE NEINDRE dans le forum ASP.NET
    Réponses: 4
    Dernier message: 09/11/2006, 16h03
  3. Réponses: 1
    Dernier message: 13/06/2006, 09h23
  4. [C#] creer un dataset a partir de plusieurs fichiers XML
    Par ager1912 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 16/05/2006, 18h17
  5. Réponses: 19
    Dernier message: 13/03/2006, 13h06

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