Vba access erreur 3061 trop peu de paramètre

Résolu/Fermé
sf44 Messages postés 3 Date d'inscription vendredi 18 février 2011 Statut Membre Dernière intervention 19 février 2011 - 18 févr. 2011 à 18:08
sf44 Messages postés 3 Date d'inscription vendredi 18 février 2011 Statut Membre Dernière intervention 19 février 2011 - 19 févr. 2011 à 14:10
Bonjour,

J'ai un petit souci sur cette fonction que je veux intégrer dans une zone de texte pour calculer le mode d'une serie de donnée.

Elle fonctionne sur une requete avec beaucoup de donnée mais pas sur sa sous requete. Et ca retourne erreur 3061 trop peu de paramètre 3 attendu

Voici ce que j'ai fait :

Public Function CalculMode(strExpression As String, strDomaine As String) As Variant
'declaration variable
Dim strsql As String
Dim rst As DAO.Recordset
'affectation
strsql = "SELECT TOP 1 " & strExpression & " as mode FROM " & strDomaine & " GROUP BY " & strExpression & " ORDER BY Count(" & strExpression & ") DESC;"
Set rst = CurrentDb.OpenRecordset(strsql)
'affectation qu resultat de la fonction
If rst.RecordCount = 0 Then
CalculMode = "pas possible"
Else
CalculMode = rst("mode")
End If
'libération
rst.Close
Set rst = Nothing
End Function

Je ne parviens pas à trouver mon erreur qui est à priori sur la requete


Merci de votre aide

2 réponses

sf44 Messages postés 3 Date d'inscription vendredi 18 février 2011 Statut Membre Dernière intervention 19 février 2011
19 févr. 2011 à 13:14
bonjour,
j'ai l'impression que mon problème provient des sous requete qui utilise des valeurs de control. VBA doit pas reconnaitre le truc [formulaire]!modifiable

il faut que j'utilise cela je pense mais une autre erreur apparait : erreur de compilation utlisation incorrecte du mot cle ME

Je ne comprend pas, pouvez-vous m'aider : 2 est ma requete

'declaration variable des controles
Dim strmodmov As String
Dim strmodit As String
Dim strmodsup As String

'affectation a partir des controles
strmodmov = Me.Modifiable2.Value
strmodit = Me.Modifiable9.Value
strmodsup = Me.Modifiable11.Value


'affectation
strsql = "SELECT TOP 1 " & strExpression & " as mode " & vbCrLf & _
"FROM " & strDomaine & " " & vbCrLf & _
"WHERE 2.[mov code]=" & strmodmov & " and 2.item='" & strmodit & "' and 2.[supplier no]='" & strmodsup & "'" & vbCrLf & _
"GROUP BY " & strExpression & "" & vbCrLf & _
"ORDER BY Count(" & strExpression & ") DESC;"
Set rst = CurrentDb.OpenRecordset(strsql)
0
sf44 Messages postés 3 Date d'inscription vendredi 18 février 2011 Statut Membre Dernière intervention 19 février 2011
19 févr. 2011 à 14:10
j'ai resolu mon pb, l'erreur que j'ai faite :
utiliser une sous requete avec des [formulaire]![formulaire1]...
à la place de ME j'ai mis Forms![ecran].Modifiable2.Value avec ecran le nom du formulaire.
Je peux pas mettre la table 2 sans les crochets

voila
0