|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Developpeur Java Inscription : mai 2007 Messages : 284 ![]() |
Bonjour,
je post enfin mon message apres avoir consulté la Faq access, vba.. en vain. Pourtant je sais que ma question ne sortira pas de l'ordinaire, mais je n'ai pas trouvé de sujet similaire sur le forum. Donc ma question est simple; J'a developpé un formulaire via Access qui concerne un ajout d'enregistrement de produit dans une base Access. Tout fonctionne a merveille et les divers contrôles on été fait ( en VBA ). Malgré tout cela il manque un dernier contrôle qui est de savoir si le nouvel enregistrement n'existe pas déja dans la table, même le champs dans lequel l'update va être effectué. Doit on passé par une requête SQL en dur dans le code VBA, ou plutôt appeler une requête préalablement construite via Access ou ... existe t-il d'autres manières ? Merci, et encore désolé si cette question vous a été posé de manière redondante. |
|
00
|
|
|
#2 |
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 080 ![]() |
Bonjour,
4 manières. 1) la requete dans vba, si celle-ci est dynamique (c'est apparement le cas). 2) la requete objet. En dynamique cela oblige à mettre des réf vers le formulaire : - forms.monform.moncontrole - tenir compte des Null dans les controle (controle non saisi) C'est peut être un peu lourd. 3) l'utilisation du recordset DAO (voir le tuto sur DAO). 4) pour un nombre restreint de champs (2, 3) un index peut faire l'affaire. Donc suivant le nombre de champ à controler on utilisera l'une ou l'autre méthode. Si tu dois comparer plusieurs champs DAO est peut être plus simple à mettre en oeuvre. Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste MsGraph et VBA - 1e Partie 2e partie Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010 Complément :Générateur de msgbox Visitez mon Blog Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine |
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Developpeur Java Inscription : mai 2007 Messages : 284 ![]() |
Merci. J'utilise déja 3 recordset car mon formulaire met a jour 3 tables. Je vais utiliser la méthode d'injection SQL directement dans le VBA.
Ensuite je vais écrire Puis effectuer mon controle. Merci |
|
00
|
|
|
#4 | ||
|
Membre confirmé
![]() Developpeur Java Inscription : mai 2007 Messages : 284 ![]() |
Je souhaite juste vous déposer ma requête car je ne suis pas sûr de la synthaxe.
Code :
Edit : Code :
sql = "SELECT * FROM [maTable] WHERE [maTable.monChamps] = 'client-id' ;" |
||
|
00
|
|
|
#5 | ||
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 080 ![]() |
Comme ceci plutot.
Code :
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste MsGraph et VBA - 1e Partie 2e partie Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010 Complément :Générateur de msgbox Visitez mon Blog Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine |
||
|
00
|
|
|
#6 |
|
Membre confirmé
![]() Developpeur Java Inscription : mai 2007 Messages : 284 ![]() |
J'ai rectifié.
Cela dit j'ai maintenant un problème de Data type. J'ai consulté la doc rédigé par Caféine ( http://cafeine.developpez.com/access...ugprint/#LVI-C ) J'ai vu que pour une chaine il faut utiliser des simples quotes, et Access me retourne l'erreur 3464 " Data Type dismatch". Je ne comprend pas car le champ est "text" dans la table. Edit : C'est bon, ca fonctionne, erreur de quote car c'est une variable dynamique. Résolu. Merci |
|
00
|
Copyright © 2000-2012 - www.developpez.com