VB6 ACCESS

ch_salim Messages postés 32 Date d'inscription   Statut Membre Dernière intervention   -  
xav1611 Messages postés 526 Date d'inscription   Statut Membre Dernière intervention   -
Salut tout le monde,
Je suis en train de faire une application en VB6 reliee a une base de données Access.
J'ai trois problemes...

I - Le premier est que dans le data reposition je doit specifier le "path" de la base de données. Je voudrais que le chemin de l'application soit le meme pour la base de données (en utilisant un controle data bien entendu)
Code ???

II - Le deuxieme c'est qu'en desactivant le controle "command" (command.enabled=false) qui represente en fait la cle primaire d'une des tables dans Access et qui est de type NumeroAuto, ca plante.
Je le desactive parce que ce champ est de type NumeroAuto
est ce que l'utilisateur doit saisir le n° sur la form (en execution) et qui represente la cle primaire de la table liee; ou ca se fait automatiquement, si oui quel est le code qu'il faut mettre.

III - Troisieme probleme
Dans chaque form liee avec une table access, il y a les champs texte pour les differents champs de la table.
mais quand il y a une cle etrangere, est ce qu'il faut la mettre dans la form ???
est ce que c'est mis a jour automatiquement ? Comment faire ?
Je voudrais bien avoir le code....

Je vous remercie infiniment pour votre aide.

--->L'informaticien toujours en quete<---

2 réponses

vbseb Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
I/panneaux de config>outils d'admin
tu ajoutes une base access puis tu specifie le chemin et tu lui donnes un nolm ce qui te permettra d'appeller ta base ds ton code vb directement par le nom plutot que par le path

sinon tu fous ta base a l'endroit ou il y a l'exe et tu essaye de te debrouiller avec ce chemin app.path qui te sort le chemin de ton appli... c une autre maniere mais bon

II/ comprends pas ta question

III/Je connais pas la structure de ta base mais perso je pense pas que ta clef etrangere soit mise a jour comme ca par magie .
0
ch_salim Messages postés 32 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour la reponse
1. pour le chemin j'ai mis

set databasename=opendatabase(app.path & "mabase.mdb")

sinon pour les autres questions je les reposes plus explicitement.

2. j'ai une cle primaire dans une table Access qui est de type numeroAuto. cela veut dire qu'elle s'incremente toute seule.
dans la form de VB, je dois mettre le champ correspondant.
mais quel code faut il mettre pour qu'elle s'incremente seule et sans que l'utilisateur saisisse ce numero là ?

3. Dans Un SGBDR, toutes les tables sont liees, de ce fait, dans quelques tables, il ya des cles etrangeres.
DAns vb, imaginons que je doive remplir une table de la BDD par l'intermediaire d'une form, alors il ya le champ de la cle primaire, et les autres.... mais la cle secondaire qu'il y a dans cette mme table ? est qu'il faut mettre un champ text pour celui ci ?
et si c les cas, il sera mis a jour mais les enregistrements qui en dependent ??? que faut il faire

j'espere avoir ete clair.... et MERCI beaucoup !!!!!!!

--->L'informaticien toujours en quete<---
0
Kemrit13 > ch_salim Messages postés 32 Date d'inscription   Statut Membre Dernière intervention  
 
Pour la quetion 2:

Lorsque tu fais intervenir la méthode "data1.Recordset.AddNew" , si t'es champs sont liés, alors ils seront effacer automatiquement et ta clefs (même si NumAuto) sera incrémenté aprés l'evenement "Data1_Validate". C'est le pilote MICROSOFT JET qui gérent tout.

Salut @ +

PS: J'aurais aussi une question: prq Acces? Perso j'ai aussi utilisé ça, mais c'est la m..de pour les req SQL car elles ne sont conformes au langage SQL pure. Les perf aussi sont minim et impossible d'utilisé de connexion multiple... La question est: T'aurais pas un autre SGBDR pour moi???
0
xav1611 Messages postés 526 Date d'inscription   Statut Membre Dernière intervention   13
 
Bonjour,

Pour completer la réponse de Kemrit13, j'ai aussi eu un projet de ce type à faire... Pourquoi Access et VB? Parceque c'etait imposé par le personne à qui je devais fournir le programme...
Sinon, pour ce qui est de SQL, la solution que j'avais trouvé la plus efficace consistait à ne me servir d'Access que comme "stockage", et de faire toutes les créations, les modications et les ajouts en SQL, dans du code VBa, en utilisant runSQL("requete"), ce qui a pour interet de pouvoir utiliser du SQL.
Pour ton troisième problème, je comprends pas. C'est à toi de voir si l'information reprise dans la clef etrangère est importante ou pas...
S'il s'agit d'un code couleur pour un produit, il vaut peut être mieux indiquer la couleur, par contre s'il s'agit du code du fabricant et que tu n'en n'as pas besoin, tu n'es pas obligé de l'afficher, et ça t'evitera en plus de faire des requetes select avec des champs qui proviennent de plein de table, ce qui alourdit vite les traitements...

Si c'est pour eviter les erreurs, en empechant la saisie d'une valeur qui ne se trouve pas dans la table liée, il vaut mieux proposer une liste déroulante avec les differents champs valides basée sur ta (tes) clef(s) secondaire. Cette solution est un peu plus longue à mettre en place, mais elle t'assure qu'aucunes erreurs de saisie ne pourront être commises (tu peux donc te passer ensuite des messages d'erreur d'Access, ce qui fait déjà un peu plus propre...).

Il y a quelques détails à regler pour mettre en place cette solution, comme par exemple ne pas afficher la valeur de la clef mais plutot la designation, c'est plus clair, mais je te laisse découvrir les joies d'Access et de VBa...

Bon courage,
0