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 :

[VB6] acces à DB à tables multiples


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Par défaut [VB6] acces à DB à tables multiples
    Bonjour,

    Je suis debutant dans la programmation VB6 pour l'acces au BD.
    Mon probleme et le suivant:

    J'ai une DB (access97) à 8 tables qui contiennent le paramétrage d'un automate de biologie médicale.
    Ces 8 tables ont un champ commun appelé "AppCode" et d'autre champs qui leur sont propre (jusque là tout va bien).

    Je souhaiterai developper un tit prog (un peu comme le celui du tuto ADODC, acces aux base de données trouvé sur ce site).
    En effet, je veux faire apparaître dans des textbox (plus pratiques), en fonction du champ "AppCode", les différents champs de ces 8 tables pour pouvoir les modifier.

    De même je veux pouvoir supprimer, créer, de nouvelles applications (AppCode) et remplir les champs correspondants pour les 8 tables.

    Comment reprendre le prog du tutoriel pour l'appliquer dans mon cas?
    En effet ouvrir une tables et la modifier, no pb.
    Par contre, faire apparaitre simultanément plusieurs champs provenant de differentes tables en fonction du champ "Appcode", et pouvoir les modifer... la c cro dur...

    si qq1 peut m'aider et me mettre sur la voie
    merci

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

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

    Content de te revoir ici .

    Bon, comme je te l'avais dit en privé, tu devrais probablement revoir un peu l'analyse de tes besoins. Tel que tu exposes le problème, à priori je pense qu'une seule table y suffirait, puisque le même champ de liaison est reproduit dans chacune des huit que tu prévois. Si je comprends bien, à une "application" correspond huit ensembles de données, chacun de ces ensemble ayant des données particulière. Mais, à une "application" données ne corespondent que 8 ensembles de données, et non plusieurs fois huit ensemble.

    Comme celà, la seule justification pour huit tables serait un question d'organisation :

    Sinon, le problème est seulement une question de présentation, et donc une seule table suffirait. La présentation serait réglée en utilisant des frames, une pour chaque ensemble de données.

    Donc, avant d'aller plus loins, précises et éventuellement détailles un peu.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Par défaut
    re,

    Pour donner un peu plus d'explication, la DB à en realité 28 tables qui reprennent le parametrage de l'automate:
    - le parametrage des tests en eux memes (les 9 tables qui m'interesse)
    - le parametrage de l'automate et de l'interface (les autres tables)

    la BD est dans ce format qui ne peut etre modifié car sinon elle n'est plus reconnu et donc l'automate plante.

    je veux simplement modifier ces 9 tables avec mon tit prog pour eviter de le faire chez les clients... j'arrive chez le client et je rapatrie la DB sur l'automate et tout roule.

    Pour en revenir aux 9 tables, je ne peux donc pas modifier l'integriter de la BD sous peine de voire l'automate planter ou refuser mes applications... ce n'est pas le but.

    C donc pourquoi je veux faire ce petit prog pour visualiser et modifier tous les champs des 9 tables dans des textbox en fonction du champ "AppCode".

    La deuxième chose que je souhaiterai pouvoir faire c l'ajout/suppression d'application (Appcode) et de tout les champs correspondants sur les 8 tables.

    Voila j'espere avoir été clair, et merci de votre aide

    Je peux vous envoyer une copie de le BD si vous voulez voir a koi elle ressemble.

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

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut
    Bonsoir

    Ok. Envoie la copie de la BD.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Par défaut
    Bonjour

    Je vous ai envoyé la BD sur votre boite mail

    Merci pour votre aide.

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

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

    Bien reçu la database, et c'est à peu près ce à quoi je m'attendais. J'avais donc quelque peu anticipé avec une base et des tables bidons, mais le principe sera le même.

    En fait, il y a une table "mère" qui est dans l'exemple qui suit la table principale (correspondant à ta table Test), et des tables filles, suivant une structure hiérarchique de type rateau.

    Donc, tout d'abord, regarde à l'adresse http://jacma.chez-alice.fr/MultiTables.gif pour avoir une idée de ce que tu pourrais obtenir.

    Quant au code, j'ai utilisé un DataEnvironment, avec un objet Command "mère" et des objets Command "File". Si tu ne connais pas bien le Data Environment, consulte mon praticiel "Initiationà l'accès aux données". Tu verras comment utiliser un DE, mais également comment récupérer et utiliser la chaîne SQL pour créer et utiliser un recordset hiérarchique.

    L'exemple est basé sur 4 tables, mais il est facile de le compléter pour huit, avec tes propres 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
    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
    Option Explicit
    Dim rsPrincipale As ADODB.Recordset
    Dim rsTable1 As ADODB.Recordset
    Dim rsTable2 As ADODB.Recordset
    Dim rsTable3 As ADODB.Recordset
    Dim bndPrincipale As BindingCollection
    Dim bndTable1 As BindingCollection
    Dim bndTable2 As BindingCollection
    Dim bndTable3 As BindingCollection
     
    Private Sub dlApplications_Click()
    'Pour sélectionner l'application dans la liste
     
      Dim strApplication As String
     
      strApplication = dlApplications.Text
      rsPrincipale.MoveFirst
      rsPrincipale.Find "Designation = '" & strApplication & "'"
     
    End Sub
     
    Private Sub Form_Load()
     
      Set rsPrincipale = New ADODB.Recordset
      Set rsTable1 = New ADODB.Recordset
      Set rsTable2 = New ADODB.Recordset
      Set rsTable3 = New ADODB.Recordset
      Set bndPrincipale = New BindingCollection
      Set bndTable1 = New BindingCollection
      Set bndTable2 = New BindingCollection
      Set bndTable3 = New BindingCollection
     
      'Cette chaîne SQL a été générée automatiquement par le Data Environment.
      'Elle est ici à titre d'information, car nous utilisons ici
      'le data environment et non du code pour accéder aux données.
      'Pour l'intéger dans du code, voir le praticiel "initiation à l'ccès aux données"
      'dans la feuille SQL.
      'SHAPE {SELECT * FROM `TablePrincipale`}  AS cmdPrincipale APPEND
      ' ({SELECT * FROM `Table1`}  AS cmdTable1 RELATE 'AppCode' TO 'AppCode') AS cmdTable1,
      ' ({SELECT * FROM `Table2`}  AS cmdTable2 RELATE 'AppCode' TO 'AppCode') AS cmdTable2,
      ' ({SELECT * FROM `Table3`}  AS cmdTable3 RELATE 'AppCode' TO 'AppCode') AS cmdTable3
     
      deMultitables.rscmdPrinc.Open
     
      Set rsPrincipale = deMultitables.rscmdPrinc
     
      Set rsTable1 = deMultitables.rscmdPrinc!cmdTab1.Value
      Set rsTable2 = deMultitables.rscmdPrinc!cmdTab2.Value
      Set rsTable3 = deMultitables.rscmdPrinc!cmdTab3.Value
     
      Set bndPrincipale.DataSource = rsPrincipale 'deMultitables.rscmdPrincipale
      bndPrincipale.Add txtTP(0), "Text", "AppCode"
      bndPrincipale.Add txtTP(1), "Text", "Designation"
     
      Set bndTable1.DataSource = rsTable1
      bndTable1.Add txtT1(0), "Text", "AppCode"
      bndTable1.Add txtT1(1), "Text", "Data1"
      bndTable1.Add txtT1(2), "Text", "Data2"
     
      Set bndTable2.DataSource = rsTable2
      bndTable2.Add txtT2(0), "Text", "AppCode"
      bndTable2.Add txtT2(1), "Text", "Data1"
      bndTable2.Add txtT2(2), "Text", "Data2"
     
      Set bndTable3.DataSource = rsTable3
      bndTable3.Add txtT3(0), "Text", "AppCode"
      bndTable3.Add txtT3(1), "Text", "Data1"
      bndTable3.Add txtT3(2), "Text", "Data2"
     
    End Sub
    Vois déjà ce que tu peux en tirer et si ça coince, n'hésite pas à poser des questions.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Par défaut
    merci pour cette reponse tres rapide,

    cependant g deux trois questions:

    deMultitables et rscmdPrinc ne sont pas definit >>> ADODB.Recordset ?
    quand je les declarent comme ADODB.Recordset g une erreur: "methode ou menbre de donnée introuvable" sur la ligne "deMultitables.rscmdPrinc.Open"

    c dû à quoi?

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

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut
    DeMultitables est le DataEnvironment. Il faut ajouter une référence à "Data Envirinment Instance 1.0" au projet (menu Projet/Référence). Il faut également vérifier que la référence à "Microsoft ActiveX Objects 2.x Library" a bien été établie, et pendant que tu y est, indiquer également la référence à "Micosoft Data Binding Collection".

    Pour ce qui est de "deMutitables.rscmdPrinc, c'est le recordset sous jacent du DataEnvironment, créé automatiquement

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Par défaut
    re,

    ce sont les premières choses que g verifier et elles sont coché mais lors de l'execution g l'erreur "variable non definit" sur demultitables...???

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

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut
    Question bête, mais ton Data Environment est-il bien créé, avec ses commandess?

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Par défaut
    ben oui, g repris ton modele (http://jacma.chez-alice.fr/MultiTables.gif)
    un listbox et des textbox

    g merdouillé ou?

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

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut
    As tu bien quelque chose comme cela: http://jacma.chez-alice.fr/DataEnv.gif

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Par défaut
    dans mon projet (a droite) g ma form (avec listbox et textbox) et g un dataenvironement1 (dans concepteur) mais il est vide (je n'ai pas l'arborescence).

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

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut
    Donc tu ne l'a pas créé.
    Clides droir sur conepeteur, item ajouter, etc. Connais-tu le proncipe?

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Par défaut
    malheureusement j'utilise vb6 de facon tres basique, qq appli pour excel et word mais jamais pour acces au base de donnée

    je sais pas trop faire

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

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut
    Dans ce cas, consuklte la section 1 de mon praticiel "Recordset et grilles hiérarchique". Toute la démarche de créatin d'un Data Environment y est expliquée.

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Par défaut
    je créé le dataenvironement et g lancé le prog>>> pas de bug mais les txtT1 et txtT2 n'affichent rien alors que les txtT3 et txtTP affichent les données

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

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut
    Tu as bien créé une base de données adhoc avec les tables adhoc également?
    De toute façon, je suis en train d'adaper mon exemple pour fondtionner avec tes tables. Je ne devtais pas en avoir pour longtemps et ce sera plus facile de s'expliquer.

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Par défaut
    Oui enfin je pense... je suis désolé de paraitre aussi nul mais les BD c pas ma tasse de thé (tiens ca rime)
    en tout cas je te remercie pour toute l'aide que tu m'apportes et le tps que tu y passes

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

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut
    Bonsoir

    Tu peux télécharger à l'adresse http://jacma.chez-alice.fr/DataEnvironment.zip une amorce de programme avec tes tables. Tu pourras y voir le projet complet, avec tous les composants et les paramétrages.

    Le projet est testé. Je n'y ai repris que 4 tables, mais tu devrais pouvoir facilement compléter. Je l'ai mis téléchargeable à cette adresse afin que les lecteurs voulant en profiter le puissent.

    Tiens moi au courant.

Discussions similaires

  1. [VB6] accès a plusieurs tables access97
    Par waspy59 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 20/03/2006, 10h46
  2. problème droit accès à une table
    Par lio33 dans le forum Administration
    Réponses: 3
    Dernier message: 04/10/2005, 19h35
  3. tables multiples au lieu de table unique
    Par rafawel dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 13/07/2005, 11h41
  4. [ADO] [MSACCESS] Problème d'accès à une table nommée OF
    Par FredRaid dans le forum Bases de données
    Réponses: 3
    Dernier message: 15/02/2005, 17h22
  5. [vb6] Modifier structure table Access sous VB6
    Par jlvalentin dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 25/03/2004, 17h45

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