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 6 et antérieur Discussion :

[VB]Utiliser plusieurs table liées avec un contrôle Data


Sujet :

VB 6 et antérieur

  1. #21
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 80
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Points : 1 241
    Points
    1 241
    Par défaut
    J'ai regardé un peu tes tables. Il y a un problème de taille: toutes les liaisons ne sont pas établies.

    Ainsi par exemple (et je me suis arrêté là) dans ta table SousCat2, il y a une sous catégorie ID_SousCategorie2 = 1 qui n'a aucun enregistrement enfant dans la table SousCat3.... Fin de la cascade et plantage Et a première vue, ce n'est pas le seul cas.

    Fais une petite expérience avec le code suivant, code qui utilise tes propres tables avec leur données. Tu constateras que cela plante à la ligne Maintenant, pour le premier enregistrement de la table SousCat3 qui fait référence à a "ID_SousCategorie2 = 10", transforme le 10 en 1 et relance ton programme. Tu verras que cela ne plante plus à ce niveau et que "msgbox rsSousCat3.RecordCount" te renvoie 1. Bien sûr, celà plante plus loin, mais à toi d'établir correctement les liaisons pour que la cascade n'ait pas de rupture.
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Private Sub Form_Load()
     
      Dim SQL As String
      Set cn = New ADODB.Connection
     
      'Création des recordset
      Set rsFourn = New ADODB.Recordset
      Set rsCat = New ADODB.Recordset
      Set rsSousCat1 = New ADODB.Recordset
      Set rsSousCat2 = New ADODB.Recordset
      Set rsSousCat3 = New ADODB.Recordset
     
      'Création des liens
      Set BndCat = New BindingCollection
     
      'ouverture de la BD
      cn.Provider = "MSDataShape"
      cn.Open "Data Provider = Microsoft.Jet.OLEDB.4.0;" & " Data Source = C:\Developpez.com\Essais Réponses\Stocks\Stocks1.mdb"
     
      SQL = " SHAPE {SELECT * FROM `CATEGORIE`}  AS Command1 APPEND " _
            & "(( SHAPE {SELECT * FROM `SOUSCATEGORIE1`}  AS Command2 APPEND " _
            & "(( SHAPE {SELECT * FROM `SOUSCATEGORIE2`}  AS Command3 APPEND " _
            & "(( SHAPE {SELECT * FROM `SOUSCATEGORIE3`}  AS Command4 APPEND " _
            & "({SELECT * FROM `FOURNITURE`}  AS Command5 " _
            & "RELATE 'ID_SousCategorie3' TO 'ID_SousCategorie3') AS Command5) AS Command4 " _
            & "RELATE 'ID_SousCategorie2' TO 'ID_SousCategorie2') AS Command4) AS Command3 " _
            & "RELATE 'ID_SousCategorie1' TO 'ID_SousCategorie1') AS Command3) AS Command2 " _
            & "RELATE 'ID_Categorie' TO 'ID_Categorie') AS Command2"
     
      rsCat.Open SQL, cn, adOpenDynamic, adLockOptimistic, adCmdText
      rsCat.MoveFirst
      MsgBox rsCat.RecordCount
     
      Set rsSousCat1 = rsCat!Command2.Value
      rsSousCat1.MoveFirst
      MsgBox rsSousCat1.RecordCount
      Set rsSousCat2 = rsSousCat1!Command3.Value
      rsSousCat2.MoveFirst
      MsgBox rsSousCat2.RecordCount
      Set rsSousCat3 = rsSousCat2!Command4.Value
      rsSousCat3.MoveFirst
      MsgBox rsSousCat3.RecordCount
      Set rsFourn = rsSousCat3!Command5.Value
      rsSousCat1.MoveFirst
      MsgBox rsFourn.RecordCount
     
      Set BndCat.DataSource = rsCat
     
      With BndCat
       .Add Text1(0), "Text", "Denomination" ', , "Dénomination"
       .Add Text1(5), "Text", "Quantite" ', , "Quantitée"
       .Add Text1(6), "Text", "Prix" ', , "Prix"
       .Add Text1(7), "Text", "Professionel", , "Professionel"
       .Add Text1(8), "Text", "Remarque_Fourniture", , "Remarque"
      End With
     
    End Sub

  2. #22
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    Je vois ce que tu veux dire. Mais as-tu vu la difficulté de ma BD dans le sens ou je dois créer des "Vides" pour que chaque fourniture ait une bonne liaison "F - SC3 - SC2 - SC1 - C".

    Je trouve ça énormément lourd, mais j'ai rien trouvé d'autres.

    Je vais corriger ma BD pour qu'elle soit correcte.

    J'ai modifié comme tu m'as dit (transformé le 10 en 1 dans ma BD), il est passé la ligne mais il a encore callé au niveau de la liaison
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    With BndCat 
       .Add Text1(0), "Text", "Denomination" ', , "Dénomination" 
       .Add Text1(5), "Text", "Quantite" ', , "Quantitée" 
       .Add Text1(6), "Text", "Prix" ', , "Prix" 
       .Add Text1(7), "Text", "Professionel", , "Professionel" 
       .Add Text1(8), "Text", "Remarque_Fourniture", , "Remarque" 
      End With
    avec le fameux "Type incompatible". Cela fonctionnait chez toi?

    Ne cherche plus, je vais remettre base en ordre et je repartirai sur de bonne base.

    Bonne fin d'après-midi

  3. #23
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 80
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Points : 1 241
    Points
    1 241
    Par défaut
    Citation Envoyé par yangoal25
    J'ai modifié comme tu m'as dit (transformé le 10 en 1 dans ma BD), il est passé la ligne mais il a encore callé au niveau de la liaison ... avec le fameux "Type incompatible". Cela fonctionnait chez toi?
    Oui, dès que toutes la chaîne de liaison est respectée. Là, on en a rétablie qu'une seule... Mais c'est bien la source du problème, ce n'est ni une affaire de type, ni quelque chose au niveau de la collection binding.

    Ne cherche plus, je vais remettre base en ordre et je repartirai sur de bonne base.i
    C'est effectivement ce qu'il faut faire. Quand tu auras rétabli toutes les connections, ton message d'erreur disparaîtra.. Bon courage et tiens nous au courant.

  4. #24
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    Bonjour Jacma,


    Comme tu sais, et malgré que ma base de données soit correcte, j'ai un message d'erreur :

    "Invalid Field Name supplied"

    qui apparait au niveau de la liaison :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    With BndCat
       .Add Text1(0), "Text", "Denomination", , "Dénomination"
       .Add Text1(5), "Text", "Quantite", , "Quantitée"
       .Add Text1(6), "Text", "Prix", , "Prix"
       .Add Text1(7), "Text", "Professionel", , "Professionel"
       .Add Text1(8), "Text", "Remarque_Fourniture", , "Remarque"
      End With
    Je vous remercie tous pour votre aide.

    yangoal25

  5. #25
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 80
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Points : 1 241
    Points
    1 241
    Par défaut
    Bonjour

    Comme je te l'ai dis en privé, la source de la binding collection doit correspondre au niveau des éléments que tu veux afficher. Dans ton code, la source de la binding est rsCat, de premier niveau (voir le code précédent) et tu veux afficher dans tes text boxes les données de rsFourn (dernier niveau). Cela ne peut pas coller. Les binding a rajouter à la collection sont donc comme suit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With bndCat
     .Add Text1(0), "Text", "ID_Categorie"
     .Add Text1(1), "Text", "Int_Categorie"
    End With
    et là tu auras bien les catégories affichées dans tes textes boxes.
    Quant aux produits correspondant à la catégorie en cours, à tois de les faire apparaître dans une grille (une simple DataGrid ayant pour source rsFour y suffira).
    Je pense qu'à l'heure actuelle, tu as absolument tous les éléments pour avancer et surtout comprendre. Tant que tu ne feras pas le lien entre les niveaux du recordset hiérarchique (les commmand2,3.. et les sous recordsets qui leurs sont liés), et les textes boxes déclarées dans ta binding collection, ça coincera.

  6. #26
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    Salut Jacma,


    J'ai compris ce que tu essaie de me dire péniblement, lol.

    Dur à rentrer mais ca va. Cela fonctionne.

    Je te remercie pour ces précieux conseil.

    Yangoal25

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [WD15] Fiche avec parcours et plusieurs table liées
    Par aciron dans le forum WinDev
    Réponses: 2
    Dernier message: 08/07/2010, 18h23
  2. Réponses: 2
    Dernier message: 02/08/2006, 10h25
  3. Table liée avec elle même
    Par jozzz dans le forum Access
    Réponses: 1
    Dernier message: 12/06/2006, 11h53
  4. requete sur 2 tables liées avec même nom de champs
    Par Australia dans le forum Access
    Réponses: 5
    Dernier message: 02/02/2006, 11h38
  5. utiliser plusieurs table et qreport
    Par StephCal dans le forum Bases de données
    Réponses: 7
    Dernier message: 25/10/2004, 09h28

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