Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème VBA/SQL

3 réponses
Avatar
Pal
Bonjour,

Je suis en train de concevoir un formulaire dans Access 2002 que je
programme en vba.

Comment récupérer le résultat d'une requête SQL de type "SELECT" dans vba
pour pouvoir la manipuler?
Ca pourra notamment me servir pour récupérer seulement certains noms et
prénoms pour les ajouter dans des combo, ou pour faire des tests.

Par exemple, avant de faire:
CurrentDb.Execute "INSERT INTO Personne (Nom, Prénom) Values (" & SQL & ")"
j'aimerais bien faire un truc du genre:
résultat = CurrentDb.Execute "SELECT Nom, Prénom FROM Personne"
et quitter si le résultat est différent de Null ou un équivalent.

Quelqu'un pourrait-il m'aider? Ca fait déjà plusieurs jours que je cherche.

Merci!

3 réponses

Avatar
Raymond [mvp]
Bonjour.

on ne peut pas exécuter de requêtes selection par execute.
lis la page http://access.vba.free.fr/execution_standard.htm qui te donnera
le code à utiliser pour manipuler une requête sélection avec ou sans
paramètres
pour savoir si tu obtiens un résultat (au moins 1 enregistrement) il faut
utiliser DCount sur une requête enregistrée.
If DCount("*", "Requête1") = 0 Then ' il n'y a rien
dans les exemples que tu trouveras su la page ci-dessus, pour savoir si tu
as au moins un enregistrement il faut tester la propriété BOF:
Set Rs = Qry.OpenRecordset
If Rs.BOF Then
' ici si pas d'enregistrement
End If

Set Rs = CurrentDb.OpenRecordset("requête1")
If Rs.BOF Then
' ici si pas d'enregistrement
End If

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Pal" <#paliegeois#@netcourrier.com> a écrit dans le message de
news:
Bonjour,

Je suis en train de concevoir un formulaire dans Access 2002 que je
programme en vba.

Comment récupérer le résultat d'une requête SQL de type "SELECT" dans vba
pour pouvoir la manipuler?
Ca pourra notamment me servir pour récupérer seulement certains noms et
prénoms pour les ajouter dans des combo, ou pour faire des tests.

Par exemple, avant de faire:
CurrentDb.Execute "INSERT INTO Personne (Nom, Prénom) Values (" & SQL &
")"

j'aimerais bien faire un truc du genre:
résultat = CurrentDb.Execute "SELECT Nom, Prénom FROM Personne"
et quitter si le résultat est différent de Null ou un équivalent.

Quelqu'un pourrait-il m'aider? Ca fait déjà plusieurs jours que je
cherche.


Merci!




Avatar
Pal
GE-NIAL, merci pour l'info


"Raymond [mvp]" a écrit dans le message de
news: O$
Bonjour.

on ne peut pas exécuter de requêtes selection par execute.
lis la page http://access.vba.free.fr/execution_standard.htm qui te
donnera

le code à utiliser pour manipuler une requête sélection avec ou sans
paramètres
pour savoir si tu obtiens un résultat (au moins 1 enregistrement) il faut
utiliser DCount sur une requête enregistrée.
If DCount("*", "Requête1") = 0 Then ' il n'y a rien
dans les exemples que tu trouveras su la page ci-dessus, pour savoir si tu
as au moins un enregistrement il faut tester la propriété BOF:
Set Rs = Qry.OpenRecordset
If Rs.BOF Then
' ici si pas d'enregistrement
End If

Set Rs = CurrentDb.OpenRecordset("requête1")
If Rs.BOF Then
' ici si pas d'enregistrement
End If

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Pal" <#paliegeois#@netcourrier.com> a écrit dans le message de
news:
Bonjour,

Je suis en train de concevoir un formulaire dans Access 2002 que je
programme en vba.

Comment récupérer le résultat d'une requête SQL de type "SELECT" dans
vba


pour pouvoir la manipuler?
Ca pourra notamment me servir pour récupérer seulement certains noms et
prénoms pour les ajouter dans des combo, ou pour faire des tests.

Par exemple, avant de faire:
CurrentDb.Execute "INSERT INTO Personne (Nom, Prénom) Values (" & SQL &
")"

j'aimerais bien faire un truc du genre:
résultat = CurrentDb.Execute "SELECT Nom, Prénom FROM Personne"
et quitter si le résultat est différent de Null ou un équivalent.

Quelqu'un pourrait-il m'aider? Ca fait déjà plusieurs jours que je
cherche.


Merci!








Avatar
Daniel STROOBANTS
Bonsoir,

C'est par hasard que j'ai lu votre demande. Je suis loin d'être un
spécialiste mais je programme aussi en VBA et j'ai eu à résoudre ce genre de
problème. La solution que j'ai trouvée était adaptée au petit programme que
j'écrivais dans le sens où j'ai écrit une requête SQL, ensuite j'ai créé un
formulaire basé sur cette requête et j'ouvrais ce formulaire le temps de
récupérer le contenu du ou des champs désiré(s) dans une variable VBA.

Ce n'est qu'après la fermeture du formulaire que je teste la valeur dans le
style

If Not IsNull(variable) then
...exécution des actions désirées ...
Else
Exit Sub
Endif

Il devrait être possible de récupérer le résultat de la requête uniquement
en VBA mais il faut bien reconnaitre que la syntaxe VBA de ces requêtes est
assez capricieuse et qu'il faut utiliser la concaténation (&) d'une façon
adéquate. Pour ma part j'ai préféré la première solution.

Daniel
"Pal" <#paliegeois#@netcourrier.com> a écrit dans le message de
news:
Bonjour,

Je suis en train de concevoir un formulaire dans Access 2002 que je
programme en vba.

Comment récupérer le résultat d'une requête SQL de type "SELECT" dans vba
pour pouvoir la manipuler?
Ca pourra notamment me servir pour récupérer seulement certains noms et
prénoms pour les ajouter dans des combo, ou pour faire des tests.

Par exemple, avant de faire:
CurrentDb.Execute "INSERT INTO Personne (Nom, Prénom) Values (" & SQL & ")"
j'aimerais bien faire un truc du genre:
résultat = CurrentDb.Execute "SELECT Nom, Prénom FROM Personne"
et quitter si le résultat est différent de Null ou un équivalent.

Quelqu'un pourrait-il m'aider? Ca fait déjà plusieurs jours que je cherche.

Merci!