web-dev-qa-db-fra.com

Erreur d'exécution '3061'. Trop peu de paramètres. Attendu 1. (Access 2007)

J'ai la ligne 'set recordset' suivante que je ne peux pas travailler. Les paramètres semblent corrects selon toute l'aide disponible que je peux trouver sur le sujet.

L'erreur affiche:

"Erreur d'exécution '3061'. Trop peu de paramètres. Attendu 1."

Voici la ligne de code:

Set rs = dbs.OpenRecordset("SELECT Centre_X, Centre_Y FROM [qry_all_details] 
WHERE ID = " & siteID & ";", dbOpenSnapshot)

Where rs is the recordset (Dim rs As Recordset) and dbs = CurrentDb()

Toute aide serait appréciée.

J'ai essayé de supprimer la cause WHERE sans effet et d'utiliser également les guillemets simples entre guillemets doubles, mais sans joie.

Merci beaucoup.

14
uk52rob

"Erreur d'exécution '3061'. Trop peu de paramètres. Attendu 1."

Je crois que cela se produit lorsque le ou les noms de champ de votre requête SQL ne correspondent pas à ceux de la table, c’est-à-dire qu’un nom de champ de la requête est incorrect ou que le tableau manque peut-être complètement.

44
david

tu as:

WHERE ID = " & siteID & ";", dbOpenSnapshot)

vous avez besoin:

WHERE ID = "'" & siteID & "';", dbOpenSnapshot)

Notez les citations supplémentaires ('). . . ça me tue à chaque fois

Edit: ajout d'une citation double manquante

11
DATS

Mon problème a également été résolu par les guillemets simples autour du nom de la variable

5
Brad

(Pour ceux qui lisent toutes les réponses). Mon cas était simplement le fait que j'avais créé une expression SQL en utilisant le format Forms! Table! Control. Ce format est Ok dans une requête, mais DAO ne le reconnaît pas. Je suis surpris que personne n'a commenté cela.

Cela ne marche pas:

Dim rs As DAO.Recordset, strSQL As String
strSQL = "SELECT * FROM Table1 WHERE Name = Forms!Table!Control;"
Set rs = CurrentDb.OpenRecordset(strSQL)

C'est acceptable:

Dim rs As DAO.Recordset, strSQL, val As String
val = Forms!Table!Control
strSQL = "SELECT * FROM Table1 WHERE Name = '" & val & "';"
Set rs = CurrentDb.OpenRecordset(strSQL)
4
John Doe

Mon problème s’est avéré, j’ai modifié un tableau pour ajouter une colonne intitulée Char. Comme il s’agit d’un réservé Word dans MS Access il avait besoin de brakcets carrés (les guillemets simples ou doubles ne servent à rien) dans l’ordre. pour que l'instruction alter fonctionne avant que je puisse ensuite mettre à jour la colonne nouvellement créée.

2
Coops

J'ai eu le même message d'erreur avant que… .. dans mon cas, cela a été causé par le transtypage ..__ Vérifiez si siteID est une chaîne. Si c'est le cas, vous devez ajouter des guillemets simples.

espérons que cela vous aidera.

1
Pramine

J'ai la même erreur avec quelque chose comme:

Set rs = dbs.OpenRecordset _
( _
  "SELECT Field1, Field2, FieldN " _
  & "FROM Query1 " _
  & "WHERE Query2.Field1 = """ & Value1 & """;" _
, dbOpenSnapshot _
)

J'ai corrigé l'erreur en remplaçant "Query1" par "Query2"

1
Alan M Robertson

Assurez-vous que [qry_all_details] existe et est exécutable. Je soupçonne qu'il ou toute requête qu'il utilise, manque le paramètre.

1
AMissico

Dans mon cas, j'ai eu cette erreur lorsque j'ai essayé d'utiliser dans une requête une nouvelle colonne, que j'ai ajoutée à la table MySQL (liée à MS Access), mais que je n'ai pas rafraîchie dans MS Access.

Pour actualiser une table distante liée:

  1. Ouvrez le "Gestionnaire de tables liées" (onglet "Données externes" du ruban);
  2. Cochez une case près de la table que vous souhaitez actualiser.
  3. Appuyez sur le bouton "OK".
0
tm-

Dans mon cas, j'avais simplement changé la façon dont j'avais créé une table et modifié par inadvertance le nom du champ que j'avais essayé d'interroger. Assurez-vous que les noms de champs auxquels vous faites référence dans la requête existent réellement dans la table/requête que vous interrogez.

0
Jim22

La requête a-t-elle plus que le paramètre siteID, car si vous voulez exécuter la requête, un paramètre n'est toujours pas renseigné, ce qui vous donne l'erreur

0
rob