OVH Cloud OVH Cloud

OpenRecordSet

2 réponses
Avatar
Stéphane Lavergne
Bonjour

Dans 1 même module de formulaire, j'ai 2 procédures différentes qui ouvre 1
recordset.
Dans les références, j'ai :
Visual Basic For Applications
Microsoft Access 10.0 Object Library
Microsoft Scripting Runtime
Microsoft DAO 3.3 Object Library

Je suis sur Windows XP Pro et Office XP Pro.
Toutes les mises à jours Windows et Office Update sont effectuées.

Dans la 1ère procédure, j'ai ceci :

Private Sub MonControl1_BeforeUpdate(Cancel As Integer)

Dim db As Database
Dim rs As Recordset
Dim rq As String
Dim nb_enr As Integer

Set db = CurrentDb
rq = "Select * From [Ma Table 1] Where MonChamp1=" & _
Me.MonControl1 & " And MonChamp2=" & Me.MonControl2 & " And (" & _
"MonChamp3=" & Me.MonControl3 & " Or MonChamp4=" & _
Me.MonControl4 & ");"

Set rs = db.OpenRecordset(rq)

nb_enr = rs.RecordCount

If nb_enr = 0 Then

'...

End If

Set rs = Nothing
Set db = Nothing

End Sub

Cette procédure ci-dessus fonctionne.


Par contre, la procédure ci-dessous ne fonctionne pas. Elle est dans le même
module de mon formulaire.

Private Sub MonControl10_AfterUpdate()

Call MaProcedure

End Sub

Sub MaProcedure()

Dim db2 As Database
Dim rs2 As Recordset
Dim rq2 As String
Dim nb_enr2 As Byte

Set db2 = CurrentDb
rq2 = "SELECT * FROM [Ma Table 2]" & _
" WHERE MonChamps10=" & Me.MonControl10 & _
" AND MonChamps11=" & MonControl11 & ";"

Set rs2 = db2.OpenRecordset(rq2)

nb_enr2 = rs2.RecordCount

If nb_enr2 > 0 Then
Me.MonControl12 = rs2.Fields("MonChamps12")

End If

Set rs2 = Nothing
Set db2 = Nothing

End Sub

L'erreur se produit à la ligne
Set rs2 = db2.OpenRecordset(rq2)

Avec l'erreur d'éxécution '3061' :
Trop peu de paramètres. 1 attendu.
Fin / Débogage / Aide


Je ne vois pas pourtant pas de différences entre les 2 procédures.
Merci de votre aide.

--
Cordialement,

Stéphane Lavergne

2 réponses

Avatar
Xavier HUE
Bonjour Stéphane,

??
" AND MonChamps11=" & MonControl11 & ";"
Pas plutôt

" AND MonChamps11=" & Me.MonControl11 & ";"

Autre piste:
Es-tu certain des noms des champs dans [Ma Table 2]?
Peut-être qu'un nom de champs dans ta requête est mal
orthographié.

Place un point d'arrêt sur la ligne rq2 = "SELECT *
FROM ...

Lance ta procédure,

Dans la fenêtre de deboggage tu tapes:

rq2 = "SELECT * FROM [Ma Table 2] WHERE MonChamps10=" &
Me.MonControl10

Tu valides, puis tu continues l'exécution de ta proc.
Si ça marche, répète l'opération avec uniquement
MonChamps11 et MonControl11.

Ca va déjà te permettre de savoir où ça pêche exactement.

Cordialement.

Avatar
Stéphane Lavergne
Merci Xavier

Je dois être fatigué...
En effet, une erreur du nom de champs est la cause de l'erreur.

Stéphane


"Xavier HUE" a écrit dans le message de
news:110c801c3f55d$42cb76e0$
Bonjour Stéphane,