utilisation des recordset
J'ai un souci avec l'utilisation des recordset
voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| Private Sub pec_Exit(Cancel As Integer)
'Déclarations obligatoires et préalables
' il est nécessaire de cocher la biblothèque dao
Dim db As DAO.Database
Dim rs1 As DAO.Recordset
'Variables locales
Dim mmontant As Double
Dim Mesures As String
Dim mnum As Double
Dim sql As String
'valorisation du pacage
mnum = Me!num
'valorisation du sql
'sql = "Select * from [marequete] where num = " & mnum
sql = "Select * from [marequete] "
Set db = Application.CurrentDb
Set rs1 = db.OpenRecordset(sql)
'mise a zéro du mmontant
mmontant = 0
DoCmd.Requery
'Logiquement Access doit commencer par traiter le 1er enregistrement
'Mais il est préférable de s'en assurer
rs1.MoveFirst
'Pour vérifier le fonctionnement de notre procédure
'Ici, débute la boucle
Do
'On injecte le contenu du champ dans une variable
mmontant = mmontant + rs1(4)
'On passe à l'enregistrement suivant
rs1.MoveNext
'Et ceci jusqu'à la fin du recordset
Loop Until rs1.EOF = True
' on ecrit le montant total ds la zone texte tot_montant
Me!TOT_MONTANT = mmontant
End Sub |
lorsque dans la requete "marequete" je met en dur le critère num l'application fonctionne comme je le souhaite.
Lorsque dans cette même requête je fait référence au num qui est dans un formulaire j'obtiens le message d'erreur : 'erreur d'exécution 3061, trop peu de paramètres 1 attendu" pourquoi ?
Si je veux utiliser la clause where dans la sélection sql du recordset (sql = "Select * from [marequete] where num = " & mnum) j'obtiens l'erreur d'exécution 3071, cette expression présente une erreur de syntaxe ou est trop complexe pour être évaluée, par exemple une expression numérique peut contenir des éléments trop compliqués. Essayer de la simplifier en affectant des parties a des variables."
Je ne vois pas ce qu'il y a de compliqué la dedans,
Merci pour votre aide .
utilisation de querydef avec parametres
merci, malheureusement je patine toujours, j'ai le message erreur d'exécution 3665, élément non trouvé dans cette collection
Code:
qdf.Parameters("[Num]") = mnum '<== si requête paramétrée
Merci pour votre aide.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| Private Sub pec_Exit(Cancel As Integer)
'Déclarations obligatoires et préalables
' il est nécessaire de cocher la biblothèque dao
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim rs1 As DAO.Recordset
'Variables locales
Dim mmontant As Double
Dim Mesures As String
Dim mnum As Double
Dim sql As String
'référence à la requête
Set qdf = CurrentDb.QueryDefs("marequete")
'valorisation du pacage
mnum = Me!num
'valorisation du sql
'sql = "Select * from [marequete] where num = " & mnum
sql = "Select * from [marequete] "
Set db = Application.CurrentDb
qdf.Parameters("[Num]") = mnum '<== si requête paramétrée
Set rs1 = db.OpenRecordset(sql)
'mise a zéro du mmontant
mmontant = 0
DoCmd.Requery
'Logiquement Access doit commencer par traiter le 1er enregistrement
'Mais il est préférable de s'en assurer
rs1.MoveFirst
'Pour vérifier le fonctionnement de notre procédure
'Ici, débute la boucle
Do
'On injecte le contenu du champ dans une variable
mmontant = mmontant + rs1(4)
'On passe à l'enregistrement suivant
rs1.MoveNext
'Et ceci jusqu'à la fin du recordset
Loop Until rs1.EOF = True
' on ecrit le montant total ds la zone texte tot_montant
Me!TOT_MONTANT = mmontant
End Sub |