{Access} Requete SQL en VBA

Résolu/Fermé
fabnpp Messages postés 4 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 27 juillet 2009 - 24 juil. 2009 à 13:15
fabnpp Messages postés 4 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 27 juillet 2009 - 27 juil. 2009 à 14:11
Bonjour,
Je suis en stage et je suis statisticien et gestionnaire de BDD mais sur oracle et la je dois travailler en VBA sur access 2003, le problème est que je voudrais faire des modifications de table en effectuant un appel de la case voulue (plusieurs donc j'utilise une boucle) ouvrir une msgbox que cette msg box(avec une condition oui ou non) ensuite propose un champ où l'on rentre une nouvelle valeur cette même valeur sera ajoutée à l'ancienne valeur et replacer dans la case de départ
Mes soucis ne sont pas d'ordre requeteur mais d'ordre prog VBA,comment faire marcher la requête sql en VBA et ensuite la mettre dans une variable muette et aussi comment ouvrir une msgbox avec un champ modifiable?
Pourriez-vous m'aider j'épluche le net et les livres depuis 4 jours sans aucun résultat intéressant?


Voici ma requête de départ
select TG.DIFdispo from TG where (TG.num=1)
MERCI PAR AVANCE

4 réponses

incaout Messages postés 347 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 novembre 2012 74
26 juil. 2009 à 20:25
Salut

Utilises tu ADO ou DAO ?

DAO est l'ancienne méthode. En DAO,

dim db as database 'déclare un objet base de données
dim enr as recordset 'crée un objet recordset pour manipuler les données

set db = currentdb 'associe la base de données ouverte
rq = "select TG.DIFdispo from TG where (TG.num=1)"

set enr = db.querydefs(rq).openrecordset 'exécute la requete et récupère les résultats dans un recordset

if enr.recordcount>0 then 'vérifie que des résultats sont présent
enr.movefirst 'se place sur le 1er résultat
while enr.eof = false 'parcours chaque résultat
valeur = enr.fields(0).value 'récupère la valeur du champ 1 dans la variable valeur
reponse = inputbox("veuillez etc...","titre",valeur) 'affiche une boite de saisie avec la valeur initiale
enr.edit 'edite l'enregistrement en cours
enr.fields(0).value = reponse 'insère dans le champ 1 la valeur de la saisie utilisateur
enr.update 'Met à jour l'enregistrement
enr.movenext 'passe au résultat suivant
wend
end if

'ferme les objets
enr.close
db.quit

'libére les variables
set enr = nothing
set db = nothing

A tester et à adapter. Si tu as des questions n'hésites pas.

Cdlt

IC
0
fabnpp Messages postés 4 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 27 juillet 2009
27 juil. 2009 à 09:20
Je ne sais pas si j'utilise DAO ou ADO, il me semble que ADO est plus rapide.
Je viens de tester le code, et problème dans la déclaration des variables access me dit qu'il y a une erreur et me surligne mon démarrage de macro je ne sais pas quoi mettre donc j'ai mis

sub test_database()

merci beaucoup
cordialement
0
fabnpp Messages postés 4 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 27 juillet 2009
27 juil. 2009 à 10:07
après test lors de l'exécution cette ligne
Set enr = db.querydefs![rq].OpenRecordset
pose problème
De plus en regardant le code c'est juste une mise à jour? pas l'addition de la nouvelle valeur à l'ancienne?
je suis désolé, je patauge complétement
Cordialement
0
fabnpp Messages postés 4 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 27 juillet 2009
27 juil. 2009 à 14:11
MERCI c'est résolu
0