Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Compter enregistrement dans un recordset

6 réponses
Avatar
Hervé DUCARNE
Bonjour,

Je bloque sur une requête dans un recordset dont voici le code :
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT table.champ FROM table WHERE table.champ =
me!textchamp;", dbOpenDynaset)
rs.MoveLast
nb = rs.RecordCount
MsgBox (nb)

J'ai sur la ligne set rs = ...................................
avec comme erreur 3061 (trop peu de paramètres ; 1 attendu).

table est le nom de la table, champ le champ dans la table et textchamp une
zone de texte du formulaire contenant le bouton où est placé ce code.
Tout ceci pour regarder si il y a déjà un champ dans la table avant de
l'insérer...

Merci !

6 réponses

Avatar
Gafish
Bonjour,

Set rs = db.OpenRecordset("SELECT table.champ FROM table WHERE table.champ
me!textchamp;", dbOpenDynaset)



Il faut dans ta requête que tu mettes
"SELECT table.champ FROM table WHERE table.champ = " & me!textchamp & ";"
ou si ton champ est de type texte
"SELECT table.champ FROM table WHERE table.champ = ' " & me!textchamp & " '
;"

Arnaud


Avatar
Hervé DUCARNE
Merci beaucoup ça fonctionne !

Mais peux-tu ùe dire en 2 mots pourquoi on ne peut mettre directement
".....=me!wxxxx", que l'on est obligé de "couper" la requête en 2 ??

Aussi, quand doit-on mettre des ' et des ".

Merci encore.

@+


"Gafish" a écrit dans le message de
news:%
Bonjour,

Set rs = db.OpenRecordset("SELECT table.champ FROM table WHERE
table.champ


me!textchamp;", dbOpenDynaset)




Il faut dans ta requête que tu mettes
"SELECT table.champ FROM table WHERE table.champ = " & me!textchamp & ";"
ou si ton champ est de type texte
"SELECT table.champ FROM table WHERE table.champ = ' " & me!textchamp & "
'

;"

Arnaud







Avatar
Gafish
Merci beaucoup ça fonctionne !

Mais peux-tu ùe dire en 2 mots pourquoi on ne peut mettre directement
".....=me!wxxxx", que l'on est obligé de "couper" la requête en 2 ??


En fait si tu mets directement me!xxxx il va prendre ca comme un texte, ce
que tu veux toi, ce n'est pas me!xxxx mais le contenu de me!xxxx, la valeur,
d'où la nécessité de sortir de la chaîne de caractère. En fait la requête
est simplement un texte interprêté ensuite.

Aussi, quand doit-on mettre des ' et des ".



Ce texte de la requête est mis entre " " car ton openrecordset attend un
texte qui est une requête SQL valide.
Les ' font partie de la syntaxe SQL pour les champs de type string (texte).
Ils servent à encadrer une valeur d'un champ texte.


Arnaud

Avatar
Hervé DUCARNE
En fait si tu mets directement me!xxxx il va prendre ca comme un texte, ce
que tu veux toi, ce n'est pas me!xxxx mais le contenu de me!xxxx, la
valeur,

d'où la nécessité de sortir de la chaîne de caractère. En fait la requête
est simplement un texte interprêté ensuite.


Salut et merci,
mais, quand je saisi directement dans access (sans vba) une requête, je ne
la coupe pas en 2...


Ce texte de la requête est mis entre " " car ton openrecordset attend un
texte qui est une requête SQL valide.
Les ' font partie de la syntaxe SQL pour les champs de type string
(texte).

Ils servent à encadrer une valeur d'un champ texte.


Même remarque : si je saisi une requête dans access, je peux bien mettre :
SELECT xxx from ttt where xxx like "blabla".
Là il reconnaît bien que le texte est encadré par des " et non pas par des '

Tu me diras, si je l'entoure par des ' ça fonctionne aussi §:o)

@+


Arnaud




Avatar
Gafish
Salut et merci,
mais, quand je saisi directement dans access (sans vba) une requête, je ne
la coupe pas en 2...


Oui, car l'assistant requête attend une requête SQL directement, il est fait
pour cela, tandis qu'en VBA, tu passes par une fonction, openrecordset, qui
attend comme paramètre un texte. Pour lui spécifier le texte, tu l'entoures
de " "


Même remarque : si je saisi une requête dans access, je peux bien mettre :
SELECT xxx from ttt where xxx like "blabla".
Là il reconnaît bien que le texte est encadré par des " et non pas par des
'


Tu me diras, si je l'entoure par des ' ça fonctionne aussi §:o)



Les deux marchent car Access est souple avec le SQL, idem si tu ne mets pas
de ; à la fin de ta requête... mais si l'on parle norme SQL les champs
textes sont entourés de simple quote.

Avatar
Hervé DUCARNE
Merci pour ces explications !

@+

"Gafish" a écrit dans le message de
news:

Salut et merci,
mais, quand je saisi directement dans access (sans vba) une requête, je
ne


la coupe pas en 2...


Oui, car l'assistant requête attend une requête SQL directement, il est
fait

pour cela, tandis qu'en VBA, tu passes par une fonction, openrecordset,
qui

attend comme paramètre un texte. Pour lui spécifier le texte, tu
l'entoures

de " "


Même remarque : si je saisi une requête dans access, je peux bien mettre
:


SELECT xxx from ttt where xxx like "blabla".
Là il reconnaît bien que le texte est encadré par des " et non pas par
des


'

Tu me diras, si je l'entoure par des ' ça fonctionne aussi §:o)



Les deux marchent car Access est souple avec le SQL, idem si tu ne mets
pas

de ; à la fin de ta requête... mais si l'on parle norme SQL les champs
textes sont entourés de simple quote.