OVH Cloud OVH Cloud

VBA et SQL

1 réponse
Avatar
laurent m
Bsr

suis un grand debutant....

1. je souhaite introduire une clause sql ds une proc vba
du style

dim texte as string

texte = "SELECT Hierarchie.code1, Hierarchie.code2, Hierarchie.code3 " & _
"FROM Hierarchie " & _
"WHERE (((Hierarchie.code1)='01'))"

DoCmd.RunSQL texte, -1

---> access repond qu'il ne s'agit pas d'une instruction sql. il y avoir un
pb de syntaxe...

2, a l'issue de cette seq sql je souhaite faire 2 traitement

a. si rien ne correspond
renvoyer un message a l'ecran (via msgbox par exmple)
b. ds le cas contraire, faire (par exemple) une boucle sur les enreg

les questions sont
quel est le test qui va dire (en francais courant°
si ton sql = vide alors
...
et "do loop ---- until"

merci a ts

1 réponse

Avatar
joyeux atchoum
Bonjour

Etant donné que tu souhaite réagir en fonction du résultat de ta
requete, je te suggére de regarder du coté de DAO ou ADO.

Pour DAO cela pourrait donnée

Dim rst as DAO.recordset
Dim strSql as String

strSql = blabla
set rst = currentdb.opentrecordset("strSQL")

if rst.eof AND rst.Bof then
'agir selon cas vide
else
'se position sur le premier enregistrement
rst.movefirst
'tant que le dernier enregistrement n'est pas atteint
wile not rst.eof
'agir sur l'enregistrement
'passe à l'enregistrement
rst.movenext
loop
end if

Au lieu du do loop, tu peux faire aussi un foreach.

Quant a ta question concernant ton code, il se trouve, et l'aide le dit
trés bien, qu'il n'est possible d'utiliser une requete Selection avec
docmd.runsql
Avec runsql tu ne peux faire que des requetes actions, c'est à dire
suppression, création, modification de table, d'index,...

ja
qui doit reveiller ses neurones de bon matin