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. #1
    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 [VB]Utiliser plusieurs table liées avec un contrôle Data
    Bonjour à tous,


    Dans le cadre de mon tfe je créé une application de gestion de stock.

    La fenêtre contenant la gestion du stock proprement dite possède des éléments qui sont lié dans ma base de données Access.

    Concrètement :

    J'ai ma table "Fourniture" qui est liée avec ma table "Sous-Catégorie3" quie est liée avec ma table "Sous-Catégorie2" qui est liée avec ma table "Sous-Catégorie1" qui est liée avec ma table "Catégorie".

    Dans ma page, je vais bien chercher le lien vers ma table "Fourniture". Mais j'aimerais afficher dans des textbox le fait de que ma fourniture X est dans la sous-catégorie3 Y, dans la Sous-Catégorie2 Z etc ...

    J'ai lié ma table founiture avec un contrôle Data.

    Comment m'y prendre?

    Je vous remercie.

  2. #2
    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

    Bien que n'ayant pas testé, je ne pense pas que celaà soit possible, mais cela reste à vérifier.

    Quoiqu'il en soit, à ce niveau tu as tout intérêt à utiliser le provider MSDataShape, pour la mise en forme des données hiérarchiques. Ainsi, tu obtient un recordset hiérarchique, très souple et puissant à l'utilisation. Et il est très facile à mettre en oeuvre. Du reste, c'est ce provider qui est utilisé lorsque l'on utilise le DataEnvironment avc des pbjets Command mère et fille(s).

    Regardes notamment le praticiel "Accès aux données ADO", accessible par l'adresse en signature. L'utilisation de ce provider y est expliquée.

  3. #3
    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
    Ton lien à l'air très intéressant. Je vais m'y attarder.

    Je te remercie

  4. #4
    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
    Tu as également "Grille et recordset hiérarchique qui devrait t'intéresser (par le même lien en signature).

  5. #5
    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 aussi qu'il y a un tutoriel pour le treeview.

    Je crois que je vais trouver beaucoup de réponse.

    Un grand merci

  6. #6
    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
    Je vois aussi qu'il y a un tutoriel pour le treeview.
    Celui-ci, tu as dû fureter pour le retrouver, car il est seulement annoncé, mais en cours de relecture...
    Logiquement le lien devrait renvoyer actuellement sur une page "En travaux".

  7. #7
    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 t'avouerai que je n'ai pas cliqué sur le lien

  8. #8
    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 ne sais pas si tu es fort en sql, mais il me met une erreur dans la requête sql (j'ai essayé d'adapter le code du tutorial à mon programme)

    Pense-tu pouvoir m'aider?

  9. #9
    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
    C'est probable. En tout cas je l'espère... Mais je ne suis pas vraiment fort, juste quelques connaissances que j'ai mis en pratique.

    Envoies toujours...

    PS: tu as aussi un bon moyen de vérifier la conception de ta chaîne SQL: le DataEnvironment. Tu en fait un, avec ta table principale comme Command1, et la ou les tables en tant que Command fille(s) de Command1.

    Puis tu affiches le code SQL généré automatiquement (Item "Information de hiérarchie dans le menu contextuel de la commande mère)par le DE et tu as ta chaîne.

    C'est expliqué dans le praticiel pré-cité (recordsets hiérarchiques).

  10. #10
    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
    Ma requête sql fonctionne grâce à ce tutorial.

    J'ai une erreur au niveau de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    With (BndPublishers)
       .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
    Il me met l'erreur sur la première ligne en disant type incompatible.

    Crois-tu pouvoir m'aider?

  11. #11
    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.

    Essaies de voir ce qui se passe si tu mets cette ligne en commentaire. Regardes aussi pour la ou les lignes suivantes car il se peut que l'erreur ne soit pas au niveau de la ligne en cours mais au niveau de la ligne qui la suit.

    Et si c'est le cas, comme cette ligne suivante traite d'une quantité, il est possible que le format du champ lié de ta base soit en numérique...

    Je ne peux être plus précis en l'état. Tiens moi au courant.

  12. #12
    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,

    Je comme à être découragé. J'essaie grâce aux tutoriel que tu me donne d'avancer mais ca se bloque au même endroit que je t'ai expliqué plus haut.

    J'ai beau tout mettre en commentaire, les lignes suivantes bloquent.

    Trop compliqué pour moi, je vais revoir mon application à la baisse point de vue développement.

    Je te remercie quand même

    yangoal25

  13. #13
    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
    Ne te décourages pas. Persistes, c'est la seule façon de progresser.

    Explique exactement ce que tu as fais, ajout par ajout d'un objet Bindind dans ta collection BndPublishers. Si la première ligne est en commentaire et les autres non, que se passe-t-il? As tu le même message d'erreur?

    Essaies aussi de voir ce qui se passe en mettant en commentaire les deux lignes suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    .Add Text1(5), "Text", "Quantite", , "Quantitée" 
    .Add Text1(6), "Text", "Prix", , "Prix"
    Et essaie de ne mettre qu'une seule ligne "add" à la fois et dis moi ce qui se passe.

    Et as-tu été voir les types des champs dans ta base de données?

  14. #14
    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 te remercie pour tes encouragements.

    Le truc c'est que je n'ai pas envie de vous embêter à vous poser des questions à chaque ligne d'erreur.

    J'ai testé toute les possibilités, et à chaque fois il y a le problème de "type incompatible"

    Je vais te coller tout le code pour que tu vois l'entièreté du form load.

    Pour ce qui est de mes champs de la BD, tout ce qui est "Denomination" et "Int_..." sont du texte et malgré ça, il ne le prend pas. Le prix et la quantité sont des numérique et les "ID_... " sont des numéros automatiques.

    Le code sql est ce qui découle du data environnement. La liaison entre les tables :

    CATEGORIE , SOUSCATEGORIE1, SOUSCATEGORIE2, SOUSCATEGORIE3, FOURNITURE

    Merci de parcourir ce code. S'il y a des choses que tu ne comprend pas dans ma démarche je suis à ta disposition.

    Merci

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
     
     
    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 lien
    Set BndFourn = New BindingCollection
    Set BndCat = New BindingCollection
    Set BndSousCat1 = New BindingCollection
    Set BndSousCat2 = New BindingCollection
    Set BndSousCat3 = New BindingCollection
     
    'ouverture de la BD
     
    cn.Provider = "MSDataShape"
    cn.Open "Data Provider = Microsoft.Jet.OLEDB.3.51;" & " Data Source = C:\TFE\Stock2.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"
     
    'Ouverture des recorsets
    rsFourn.Open SQL, cn, adOpenDynamic, adLockOptimistic, adCmdText
    rsCat.Open SQL, cn, adOpenDynamic, adLockOptimistic, adCmdText
    rsSousCat1.Open SQL, cn, adOpenDynamic, adLockOptimistic, adCmdText
    rsSousCat2.Open SQL, cn, adOpenDynamic, adLockOptimistic, adCmdText
    rsSousCat3.Open SQL, cn, adOpenDynamic, adLockOptimistic, adCmdText
     
     
    'Se placer sur le 1er
    rsFourn.MoveFirst
    rsCat.MoveFirst
    rsSousCat1.MoveFirst
    rsSousCat2.MoveFirst
    rsSousCat3.MoveFirst
     
    'Liaison du recordset à la source de donnée des liens
    Set BndFourn.DataSource = rsFourn
    Set BndCat.DataSource = rsCat
    Set BndSousCat1.DataSource = rsSousCat1
    Set BndSousCat2.DataSource = rsSousCat2
    Set BndSousCat3.DataSource = rsSousCat3
     
    'Test de recordset vide
     
    With rsFourn
       If .RecordCount = 0 Then
         StatusBar1.Panels.Item(1).Text = "Aucun compte n'a été créé"
         StatusBar1.Panels.Item(2).Text = "Prêt..."
         Exit Sub
        End If
    End With
     
    With rsCat
       If .RecordCount = 0 Then
         StatusBar1.Panels.Item(1).Text = "Aucun compte n'a été créé"
         StatusBar1.Panels.Item(2).Text = "Prêt..."
         Exit Sub
        End If
    End With
     
    With rsSousCat1
       If .RecordCount = 0 Then
         StatusBar1.Panels.Item(1).Text = "Aucun compte n'a été créé"
         StatusBar1.Panels.Item(2).Text = "Prêt..."
         Exit Sub
        End If
    End With
     
    With rsSousCat2
       If .RecordCount = 0 Then
         StatusBar1.Panels.Item(1).Text = "Aucun compte n'a été créé"
         StatusBar1.Panels.Item(2).Text = "Prêt..."
         Exit Sub
        End If
    End With
     
    With rsSousCat3
       If .RecordCount = 0 Then
         StatusBar1.Panels.Item(1).Text = "Aucun compte n'a été créé"
         StatusBar1.Panels.Item(2).Text = "Prêt..."
         Exit Sub
        End If
    End With
     
    'Affectation des recordsets aux textbox
     
    With BndFourn
       .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
     
    BndCat.Add Text1(1), "Text", "Int_Categorie", , "Catégorie"
     
    BndSousCat1.Add Text1(2), "Text", "Int_SousCategorie1", , "Sous-Catégorie1"
     
    BndSousCat2.Add Text1(3), "Text", "Int_SousCategorie2", , "Sous_Categorie2"
     
    BndSousCat3.Add Text1(4), "Text", "Int_SousCategorie3", , "Sous-Catégorie3"
     
     
    'Set DataGrid1.DataSource = rsFourn!ID_SousCategorie3.Value
     
    'Call MAJ_BarreEtat
     
    End Sub

    Si tu n'as pas le temps, je comprendrai.

    Merci à tous ceux qui voient ce forum et qui pourraient apporter leur aide

  15. #15
    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
    Et le module est :

    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
     
     
    Option Explicit
    Dim cn As ADODB.Connection
    Dim rsCat As ADODB.Recordset
    Dim rsSousCat1 As ADODB.Recordset
    Dim rsSousCat2 As ADODB.Recordset
    Dim rsSousCat3 As ADODB.Recordset
    Dim rsFourn As ADODB.Recordset
    Dim recordsetEC As Recordset
    Dim BndCat As BindingCollection
    Dim BndFourn As BindingCollection
    Dim BndSousCat1 As BindingCollection
    Dim BndSousCat2 As BindingCollection
    Dim BndSousCat3 As BindingCollection
    Dim lgTotalCategorie As Long
    Dim lgTotalSousCategorie3 As Long
    Dim lgTotalRecordsEC As Long
    Pour être complet .

  16. #16
    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
    Le truc c'est que je n'ai pas envie de vous embêter à vous poser des questions à chaque ligne d'erreur.
    Tu n'embêtes personne, le forum est là pour aider. Et, en ce qui me concerne, je préfère, comme c'est le cas pour toi, aider quelqu'un qui fait des efforts...

    Ceci étant, dans ta démarche, il me semble qu'il y a une incompréhension au niveau de l'utilisation des tables liées de ton recordset. Ton recordset rsFourn tel qu'il est ouvert par le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rsFourn.Open SQL, cn, adOpenDynamic, adLockOptimistic, adCmdText
    contient l'ensemble des tables (table principale et tables liées). Donc tous les autres recordsets que tu ouvres ensuite sont identiques, faisant référence à la même chaîne SQL.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    rsCat.Open SQL, cn, adOpenDynamic, adLockOptimistic, adCmdText 
    rsSousCat1.Open SQL, cn, adOpenDynamic, adLockOptimistic, adCmdText 
    rsSousCat2.Open SQL, cn, adOpenDynamic, adLockOptimistic, adCmdText 
    rsSousCat3.Open SQL, cn, adOpenDynamic, adLockOptimistic, adCmdText
    Si tu veux traiter une table spécifique qui est prise en compte dans ta chaîne SQL en créant un recordset pour cela, il te faut faire référence à l'alias correspondant défini dans la dite chaîne. Pour bien comprendre, j'ai simplifié en ne traitant que deux tables.
    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
    Private Sub Form_Load()
     
      Dim SQL As String
      Set cn = New ADODB.Connection
     
     
      SQL = " SHAPE {SELECT * FROM `Categories`}  AS cmdCategories APPEND " _
            & "({SELECT * FROM `Fournitures`}  AS cmdFournitures " _
            & "RELATE 'CodeCat' TO 'CodeCat') AS cmdFournitures"
     
             '"SHAPE {SELECT * FROM `Categories`}  AS cmdCategories APPEND " _
             '& "({SELECT * FROM `Fournitures`}  AS cmdFournitures " _
             '& "RELATE 'CodeCat' TO 'CodeCat') AS cmdFournitures
     
      cn.Provider = "MSDataShape"
      cn.Open "Data Provider = Microsoft.Jet.OLEDB.4.0;" _
              & " Data Source = C:\Developpez.com\Essais Réponses\Stocks\Stocks.mdb"
     
      'Création des recordset
      Set rsFourn = New ADODB.Recordset
      Set BndFourn = New BindingCollection
     
      rsFourn.Open SQL, cn, adOpenDynamic, adLockOptimistic, adCmdText
      MsgBox rsFourn.RecordCount
     
      'Set BndFourn.DataSource = rsFourn	'FAUX VOIR LIGNE SUIVANTE
      Set BndFourn.DataSource = rsFourn!cmdFournitures.Value
     
      With BndFourn
       .Add txtStocks(0), "Text", "Denomination", , "Dénomination"
       .Add txtStocks(1), "Text", "Quantite", , "Quantitée"
       .Add txtStocks(2), "Text", "Prix", , "Prix"
       .Add txtStocks(3), "Text", "Professionnel", , "Professionel"
       .Add txtStocks(4), "Text", "Remarque_Fourniture", , "Remarque"
      End With
     
    End Sub
    La ligne importante est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set BndFourn.DataSource = rsFourn!cmdFournitures.Value
    dans laquelle la source de ton DataBinding est la table Fournitures (puisque c'est les données de cette table que tu veux afficher), dont l'alias dans ta chaîne SQL est cmdFournitures. Ce n'est qu'un des (sous) recordset qu'il est possible de créer à partir du recordset (principal) rsFourn tel que créé avec ta chaîne SQL et qui contient toutes les autres tables.

    J'ai testé le code ci-dessus qui fonctionne sans problème. Tu peux déjà commencer à travailler sur ces bases. Je regarderai ce soir avec les liaisons en cascade. Si tu pouvais m'envoyer en MP ou plutôt directement par email ta base Acces et toutes ces tables, cela m'éviterais de les recréer pour tester.

    Dernier point: tes catégories, sous catégorie et autres sous/sous, c'est pour essayer ou cela correspond-il au réel? De toutes façons, pour un début, il me semble ambitieux de commencer par 5 tables. Et, pour résoudre un problème compliqué, essaies de le décomposer (ce que j'ai fait en ne traitant ici que deux tables).

  17. #17
    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
    Un grand merci pour ton dévouement.

    Tout mon programme est à mon boulot.

    Je t'enverrai ma base de données demain matin. Je modifierai les codes comme tu me l'indique.

    Je te remercie et te souhaite une bonne soirée.

  18. #18
    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,


    Tu verra avec la BD que je t'ai envoyé que "Fourniture" est relié à la 'SousCategorie3". J'ai donc modifié ton sql dans ce sens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    SQL = " SHAPE {SELECT * FROM `FOURNITURE`}  AS cmdCategories APPEND " _
            & "({SELECT * FROM `SOUSCATEGORIE3`}  AS cmdFournitures " _
            & "RELATE 'ID_SousCategorie3' TO 'ID_SousCategorie3') AS cmdFournitures"
    La ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      MsgBox rsFourn.RecordCount
    m'affiche le bon nombre d'enregistrement dans la BD.

    Mais après, il me remet le problème : Type incompatible

    J'ai essayé de mettre en commentaire chaque ligne, mais il me met toujours cette erreur.

    Cela marchait chez toi? J'ai l'impression que le BndFourn ne m'aime pas, lol

    Bonne journée

  19. #19
    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

    J'ai bien reçu tes tables. Je vais regarder dans la journée.

    Concernant ta nouvelle chaîne SQL, il me semble qu'il y a un problème au niveau de la hiérarchie des tables. Si j'ai bien interprété, ta table xCatégorie sert à indiquer la catégorie d'une fourniture. En conséquence tu as une relation de un (catégorie) à plusieurs (fourniture), une fourniture étant liée à une catégorie, mais une catégorie pouvant concerner plusieurs fournitures. La table "maître" est donc la table catégories et la table fille la table fournitures.

    Donc, ton code est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SQL = " SHAPE {SELECT * FROM `Categories`}  AS cmdCategories APPEND " _ 
            & "({SELECT * FROM `Fournitures`}  AS cmdFournitures " _ 
            & "RELATE 'CodeCat' TO 'CodeCat') AS cmdFournitures
    comme indiqué dans mon précédent message. L'important ici est le premier SELECT * FROM 'Categories' et le second SELECT * FROM 'Fournitures'.

    Pour bien représenter la hiérarchie des table, voici ce que donne un DataEnvironment développé:
    ..................................
    Remarque bien la cascade dont la source est ici la table Categorie, qui contient une table sous catégorie qui elee-même contient une autre table sous catégorie... Des poupée russes pour arriver à la table qui t'intérese (Fournitures) au dernier rang de la hiérarchie.

    Remarques aussi qu'à chaque niveau, tu as en virtuellement un recordset qui contient toute la hiérarchie des tables des niveaux inférieurs. Pour travailler avec ces différent recordset, encore faut-il passer du stade virtuel au satde réel en créant les dits recordset:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set rsSousCat1 = rsCat!cmdsCategories.Value
    Set rsSousCat2 = rsSousCat1!cmdssCategories.Value
    Set rsSousCat3 = rsSousCat2!cmdsssCategories.Value
    Set rsFourn = rsSousCat3!cmdFournitures.Value
    Voila de quoi travailler aujourd'hui. Bon courage. Et bon courage aussi à tius ceux qui suivent le post et surtout qui l'appliquent. Cela te montre que ton sujet est loin d'embêter (comme tu le craignais) et qu'au contraire il intéresse beaucoup .

  20. #20
    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 suis 100% d'accord avec toi pour le data environnement. j'ai la même structure (grâce à ton tutoriel).

    Si je comprend bien, la requête sql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     SQL = " SHAPE {SELECT * FROM `Categories`}  AS cmdCategories APPEND " _ 
            & "({SELECT * FROM `Fournitures`}  AS cmdFournitures " _ 
            & "RELATE 'CodeCat' TO 'CodeCat') AS cmdFournitures
    fonctionne pour toutes les tables entre catégorie (la table père) et fourniture (la table fille la plus basse)? car il n'y a pas de lien direct entre Categorie et Fourniture.

    Je vois que tu as bien cerné mon problème.

    Je vais essayé d'ajouter les nouveaux recodset.

    Je te remercie et bonne journée

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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