waspy59
Messages postés189Date d'inscriptionmercredi 24 novembre 2004StatutMembreDernière intervention15 mai 2013
-
11 mars 2006 à 20:14
cs_jperre
Messages postés268Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention19 janvier 2017
-
13 mars 2006 à 10:18
bonjour,
j'ai besoin de votre aide pour gerer l'acces a une base de données (.MDB) access 97 a partir de vb6.
j'ai donc une base de données appelée PARAM.MDB contenant plusieures tables:
- TESTSTDCalibrator
- TestReagent
- TestCalibration...
toutes ces tables ont un champ commun appelé "AppCode".
Ce que je souhaiterai faire,c:
sur une form contenant des textbox, je voudrait faire apparaitre les valeurs de differents champs venant de differentes tables en fonction du champ "codeappli". Mais je sais pas faire :-(
ex: textbox1>>>> valeur du champ "calibcode" (table "TESTSTDcalibrator")
textbox2>>>> valeur du champ "SDlimite" (table "Testcalibration")
ceci afin de visualiser et modifier des parametres de configuration d' automate.
cs_jperre
Messages postés268Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention19 janvier 20172 12 mars 2006 à 08:45
Pour accéder à plusieurs tables, il faut que l'objet Data du formulaire pointe sur une requête et non sur chacune des tables. Le code SQL à utiliser est de la forme
"SELECT Table1.Champ1, Table2.Champ2, Champ3, Champ4 FROM Table1, Table2 WHERE Table1.Champ1=Table2.Champ1[ORDER BY Champ1, Champ2];"
ou
"SELECT Table1.Champ1, Table2.Champ2, Champ3, Champ4 FROM Table1 INNER JOIN Table2 ON Table1.Champ1=Table2.Champ1[ORDER BY Champ1, Champ2];"
Dans la requête sélection, les champs de même nom qui appartiennent à plusieurs tables doivent être précédés du nom de la table propriétaire, les champs qui n'appartiennent qu'à une seule table n'ont pas à être précédés du nom de la table propriétaire.
waspy59
Messages postés189Date d'inscriptionmercredi 24 novembre 2004StatutMembreDernière intervention15 mai 2013 12 mars 2006 à 15:14
bonjour,
merci pour ta reponse rapide, mais je suis debutant avec les bases de données, pourrais tu etre plus explicite en me donnant un exemple concret?
Par exemple sur une form avec:
- un objet data
- une textbox ciblant le champ "calibcode" de la table "TESTSTDcalibrator"
- une textbox ciblant le champ "SDlimite" de la table "Testcalibration"
-et une textbox ciblant le champ "bottlecode" de la table "testqualitative"
sachant que ces tables ont comme champ communs le champs "Appcode", quel code dois je mettre pour obtenir les valeurs des champs ci dessus en fonction du champ "Appcode"?
cs_jperre
Messages postés268Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention19 janvier 20172 12 mars 2006 à 16:20
En admettant que le controle Data nommé Data1 soit placé dans le formulaire d'affichage
Propriétés de Data1 :
.BOFAction=0-MoveFirst
.Connect= Access (pour Access 97)
.DatabaseName="Chemin...\PARAM.mdb"
.RecordsetType=1-Dynaset
.RecordSource="SELECT calibcode, SDLimite, bottlecode FROM TESTSTDcalibrator, Testcalibrator, testqualitative WHERE TESTSTDcalibrator.Appcode=Testcalibrator.Appcode AND TESTSTDcalibrator.Appcode=testqualitative.Appcode;"
Ensuite, pour les contrôles TextBox :
Propriétés :
.DataSource=Data1
.DataField="calibcode"
...
idem pour les deux autres champs
cs_jperre
Messages postés268Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention19 janvier 20172 13 mars 2006 à 10:18
L'erreur est certainement due à une mauvaise écriture du code SQL (ex un nom de champ qui est mal ortographié,..). Pour découvrir où elle se trouve, le plus simple,c'est de copier le code SQL, ouvrir la base de données avec Access, aller dans requêtes, nouvelle requête, puis venir dans SQL et coller le code en question dans la fenêtre SQL. Ensuite, lancer la requête, Access donne nettement plus d'informations sur l'erreur.