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

Type incompatible (erreur 13) dù à une recherche d'article

6 réponses
Avatar
Fguy
Bonjour,

J'ai une table qui contient 3 champs, un champ code de type string, un champ
article de type string et un champ prix type monétaire.

J'ai donc aussi un formulaire basé sur cette table.
La table s'appelle tblVérification et le formulaire frmVérification.

Le but est de rechercher les articles ayant le même nom et le même prix.
Donc, en fait, lorsqu'on encode un article du même code mais avec un prix
différent, un message devrait apparraître.


Avec la fonction ci-dessous, j'ai l'erreur 13

Private Sub Prix_AfterUpdate()
Dim meF As Form, rstRem As Recordset, maBD As Database
Dim Critere, meG As Form
Set maBD = CurrentDb
Set rstRem = maBD.OpenRecordset("tblVérification", dbOpenDynaset)
If EstChargé("frmVérification" Then
Set meF = Forms![frmVérification]
Critere = "code= '" & meF![Code] & "'" And "prix= " & meF!Prix
With rstRem
.FindFirst Critere
If Not .NoMatch Then
MsgBox "Ce prix existe déjà pour cet article", vbCritical,
"Remarque"
End If
End With
End If
End Sub

J'ai donc le message d'erreur lorsque le code s'exécute à la ligne qui
commence par critère=
J'ai bien vu que code est de type string et prix de type numérique, mais
comment corriger cette erreur?
D'avance merci,

Guy FALESSE

6 réponses

Avatar
db
Le 21/08/2011 13:40, Fguy a écrit :
Critere = "code= '" & meF![Code] & "'" And "prix= " & meF!Prix



Il faudrait plutôt écrire :

Critere = "code= '" & meF![Code] & "' And prix= " & meF!Prix

en supprimant les guillemets autour de And

db
Avatar
Fguy
Salut db,

Merci pour ta réponse.
Cela fonctionne très bien sauf que lorsque j'utilise le point du pavé
numérique lorsque je veux écrire 2,5 € par exemple, je reçois une erreur
d'exécution 3077, erreur de syntaxe (virgule) dans l'expression.
Si je mets le point pour écrire 2.5 €, il me met 25 €, bizarre, je me
demande si je n'ai pas un programme qui fout le bazar.


"db" a écrit dans le message de groupe de discussion :
4e50f433$0$1391$

Le 21/08/2011 13:40, Fguy a écrit :
Critere = "code= '" & meF![Code] & "'" And "prix= " & meF!Prix



Il faudrait plutôt écrire :

Critere = "code= '" & meF![Code] & "' And prix= " & meF!Prix

en supprimant les guillemets autour de And

db
Avatar
Fguy
Salut db,

C'était bien textor qui foutait le bazar.
Maintenant, donc, j'ai toujours cette erreur 3077, (virgule) dans
l'expression.
Donc, il faudra "chipoter" avec les guillemets et autres apostrophe, mais
comment là...
Fguy

"Fguy" a écrit dans le message de groupe de discussion :
4e51001d$0$5042$

Salut db,

Merci pour ta réponse.
Cela fonctionne très bien sauf que lorsque j'utilise le point du pavé
numérique lorsque je veux écrire 2,5 € par exemple, je reçois une erreur
d'exécution 3077, erreur de syntaxe (virgule) dans l'expression.
Si je mets le point pour écrire 2.5 €, il me met 25 €, bizarre, je me
demande si je n'ai pas un programme qui fout le bazar.


"db" a écrit dans le message de groupe de discussion :
4e50f433$0$1391$

Le 21/08/2011 13:40, Fguy a écrit :
Critere = "code= '" & meF![Code] & "'" And "prix= " & meF!Prix



Il faudrait plutôt écrire :

Critere = "code= '" & meF![Code] & "' And prix= " & meF!Prix

en supprimant les guillemets autour de And

db
Avatar
Fguy
Salut,

Si je mets on error resume next , je n'ai plus le message d'erreur dû à la
virgule, par contre le message disant que l'article existe déjà apparait,
pas de chance.:-(
@+

Fguy

"Fguy" a écrit dans le message de groupe de discussion :
4e5102e4$0$5040$

Salut db,

C'était bien textor qui foutait le bazar.
Maintenant, donc, j'ai toujours cette erreur 3077, (virgule) dans
l'expression.
Donc, il faudra "chipoter" avec les guillemets et autres apostrophe, mais
comment là...
Fguy

"Fguy" a écrit dans le message de groupe de discussion :
4e51001d$0$5042$

Salut db,

Merci pour ta réponse.
Cela fonctionne très bien sauf que lorsque j'utilise le point du pavé
numérique lorsque je veux écrire 2,5 € par exemple, je reçois une erreur
d'exécution 3077, erreur de syntaxe (virgule) dans l'expression.
Si je mets le point pour écrire 2.5 €, il me met 25 €, bizarre, je me
demande si je n'ai pas un programme qui fout le bazar.


"db" a écrit dans le message de groupe de discussion :
4e50f433$0$1391$

Le 21/08/2011 13:40, Fguy a écrit :
Critere = "code= '" & meF![Code] & "'" And "prix= " & meF!Prix



Il faudrait plutôt écrire :

Critere = "code= '" & meF![Code] & "' And prix= " & meF!Prix

en supprimant les guillemets autour de And

db
Avatar
db
Le 21/08/2011 15:06, Fguy a écrit :
Salut db,

C'était bien textor qui foutait le bazar.
Maintenant, donc, j'ai toujours cette erreur 3077, (virgule) dans
l'expression.
Donc, il faudra "chipoter" avec les guillemets et autres apostrophe,
mais comment là...



C'est sans doute que le critère (syntaxe SQL) attend un nombre au format
américain (avec un . comme séparateur décimal)

Pas testé : essayer
Critere = "code= '" & meF![Code] & "' And prix= " & replace(meF!Prix,
"," , ".")

(ne fonctionne qu'à partir d'Access 2000)

db
Avatar
Fguy
salut db,

Impeccable, ça fonctionne bien.
Encore un grand merci :-) et bonne fin de week-end; :-)

Fguy

"db" a écrit dans le message de groupe de discussion :
4e510d3d$0$16400$

Le 21/08/2011 15:06, Fguy a écrit :
Salut db,

C'était bien textor qui foutait le bazar.
Maintenant, donc, j'ai toujours cette erreur 3077, (virgule) dans
l'expression.
Donc, il faudra "chipoter" avec les guillemets et autres apostrophe,
mais comment là...



C'est sans doute que le critère (syntaxe SQL) attend un nombre au format
américain (avec un . comme séparateur décimal)

Pas testé : essayer
Critere = "code= '" & meF![Code] & "' And prix= " & replace(meF!Prix,
"," , ".")

(ne fonctionne qu'à partir d'Access 2000)

db