IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Résultat d'une requête dans une variable


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 18
    Points : 10
    Points
    10
    Par défaut Résultat d'une requête dans une variable
    Bonjour,

    A partir d'un formulaire sous Access 2002 j'exécute une requête.
    Je voudrais afficher un message de type "Etes-vous sûr de vouloir supprimer 10 enregistrements ?".
    Pour cela j'ai besoin de connaître le nombre d'enregistrement(s) concerné(s) afin d'afficher le message.
    J'ai à mon avis deux solutions :

    La première (trouvée sur le forum) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Const REQUETE As String = "DELETE inventaire.* FROM inventaire WHERE (((inventaire.num_inv)=Formulaires!Inventaire!suppr_materiel_liste));"
    Dim q As DAO.QueryDef
     
    Dim n As Long
    DBEngine.BeginTrans
    Set q = CurrentDb.QueryDefs(REQUETE)
    q.Execute
    If MsgBox("Vous allez insérer " & q.RecordsAffected & _
    " nouveaux enregistrements." & vbCrLf & _
    "Etes vous sûr de vouloir continuer ?", vbYesNo + vbQuestion, "Insertion") = vbYes Then
     
    DBEngine.CommitTrans
    Else
    DBEngine.Rollback
    End If
    J'ai par ailleurs dû supprimer les "&" pour que ça fonctionne (je ne sais d'ailleurs pas à quoi ça sert).

    Cela me donne ensuite l'erreur suivante sur la ligne "Set q = CurrentDb.QueryDefs(REQUETE)" :
    Erreur d'exécution '3265': Elément non trouvé dans cette collection;

    Après avoir rajouter 2 références (Microsoft ActiveX Data Objects 1.0 Library et Microsoft DAO 3.6 Object Library je crois) j'ai toujours cette erreur.

    La seconde solution serait d'utiliser une requête de type
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count(inventaire.num_inv) AS Expr1 FROM inventaire WHERE (((inventaire.num_inv)=Formulaires!Inventaire!suppr_materiel_liste));
    Cette requête fonctionne mais je n'arrive pas à utiliser son résultat pour ensuite l'insérer dans une MsgBox.

    Merci par avance de votre aide.
    Je reste à votre disposition si vous souhaitez plus d’infos.

    Julien

  2. #2
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Est-ce que quelqu'un pourrait me dire quel est le choix le plus judicieux entre ces différentes références :
    - Microsoft ActiveX Data Objects 1.0 Library
    - Microsoft ActiveX Data Objects 2.0 Library
    - Microsoft ActiveX Data Objects 2.1 Library
    - Microsoft ActiveX Data Objects 2.5 Library
    - Microsoft ActiveX Data Objects 2.6 Library
    - Microsoft ActiveX Data Objects 2.7 Library

    Autre chose, après avoir désactivé "Microsoft ActiveX Data Objects 1.0 Library" j'ai voulu le réactiver mais impossible de le retrouver dans la liste...

  3. #3
    Membre chevronné
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    La seconde solution serait d'utiliser une requête de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count(inventaire.num_inv) AS Expr1 FROM inventaire WHERE (((inventaire.num_inv)=Formulaires!Inventaire!suppr_materiel_liste));
    Cette requête fonctionne mais je n'arrive pas à utiliser son résultat pour ensuite l'insérer dans une MsgBox.
    Tu peux faire celà en utilisant un RecordSet. Cependant dans ton cas, je pense qu'il serait plus simple de faire appel à la fonction DCount().

    Ensuite :
    Est-ce que quelqu'un pourrait me dire quel est le choix le plus judicieux entre ces différentes références :
    Déjà, es-tu sûr que tu ais besoin de la bibliothèque ADO ? Tu sembles utiliser DAO dans ton code. Et si c'est un sujet totalement détaché de ton autre problème, tu peux créer un nouveau sujet pour ça.

    En espérant t'aider.

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Merci beaucoup je vais faire comme ça (avec la fonction Dcount).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réutiliser des données d'une requête dans une requête
    Par mims1664 dans le forum Requêtes
    Réponses: 12
    Dernier message: 06/02/2009, 14h12
  2. Résultat d'un champ d'une requête dans une variable
    Par PsychedeChed dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 11/01/2009, 12h50
  3. Réponses: 4
    Dernier message: 02/07/2008, 11h32
  4. Réponses: 2
    Dernier message: 02/06/2006, 11h26
  5. Réponses: 4
    Dernier message: 01/12/2005, 14h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo