Exécuter une requette SQL avec VBA (Access)

Signaler
Messages postés
231
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
10 juin 2009
-
Messages postés
2
Date d'inscription
samedi 6 décembre 2008
Statut
Membre
Dernière intervention
2 avril 2010
-
Bonjour,
je veux exécuter une requette sql à partir de vba access (modul)
l'objectif de ce programme est de récuperer la valeur d'un critère et de l'appliquer dans plusieurs requettes
voila un appercu de mon code :

Dim val As String
Dim s As String
Dim rst As DAO.Recordset
Dim bds As DAO.Database


Set bds = CurrentDb
val = ("Saisir une date"))
s = "SELECT .NB_COL, Sum([Total unités]) AS [SommeDeTotal unités] FROM matable GROUP BY NB_COL, [Date] HAVING ((([Date])=[" & val & "]));"
Set rst = bds.OpenRecordset(s, dbOpenTable, dbAppendOnly)

Mais le problème est que jai tourjours un message d'erreur,

Merci de votre aide
Un problème = des solutions
programation .....

3 réponses

Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
salut,
Un problème = des solutions
Mais ou est donc le problème ?
Sans desciption de l' erreur, on ne saura jamais de quoi il s' agit.

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
en devinant ça serait peut être
HAVING ((([Date])=#[" & val & "]#));"

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
Messages postés
2
Date d'inscription
samedi 6 décembre 2008
Statut
Membre
Dernière intervention
2 avril 2010

apparemment dao genere un erreur a l ouverture du recordset

1- ouvre ton recordset avec un Type dbOpenDynaset ainsi :
set rRecordset= dDatabase.OpenRecordset(sSqlcommande,dbOpenDynaset,..)

2- pour l avenir prevoit de préinformer ton code en inserant
avant ta ligne de code suceptible de generer une erreur
la routine ligne suivante :
ON ERROR GOTO ERROR1
... ta ligne de code possiblement "incertaine" ...
... suite de ton code
... derniere ligne de ton code (hors End Sub ou End Function etc)
... quitter la procedure
EXIT Sub (ou Function, etc)' pour ne pas lire ERROR1 si aucune erreur
ERROR1: ' à placer avant le End Sub ou end function etc
MSGBOX VBA.ERR.DESCRIPTION ' (affiche, ou recupère autrement)
...si possible : code reecrivant la ligne ayant provoqué l erreur
... retour a la ligne ayant provoqué l erreur(GOTO 0)
...a defaut:retour a la ligne suivante RESUME NEXT... etc
...ou bien fin de la routine EXIT ..
...fermer la procedure
End Sub (ou End Function etc ) ' fin de ta routine

cordialement
ATRFV