{Access} Requete SQL en VBA

Résolu
fabnpp Messages postés 4 Statut Membre -  
fabnpp Messages postés 4 Statut Membre -
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
Configuration: Windows XP Internet Explorer 6.0

4 réponses

  1. incaout Messages postés 347 Date d'inscription   Statut Membre Dernière intervention   74
     
    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
  2. fabnpp Messages postés 4 Statut Membre
     
    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
  3. fabnpp Messages postés 4 Statut Membre
     
    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
  4. fabnpp Messages postés 4 Statut Membre
     
    MERCI c'est résolu
    0