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

Condition WHERE : Incompatibilité de type

10 réponses
Avatar
domivax
Bonjour =E0 tous,

Je cr=E9e une requ=EAte sous VBA et j=92ai visiblement des probl=E8mes au
niveau de la syntaxe pour la condition WHERE.

MyQuery =3D "SELECT =85." _
& "FROM =85 " _
& "WHERE (MyTable.MyField) =3D" & [Forms]![MyForm]!
[MyData]

=E7a me renvoie : Erreur d=92ex=E9cution 13 : Incompatibilit=E9 de type

MyField de MyTable est un champ num=E9rique.

Comment dois-je r=E9diger ma condition WHERE ?

Merci pour votre aide.
A bient=F4t.
Xavier

10 réponses

Avatar
Gloops
Bonjour,

Ce qu'il fallait nous dire, c'est de quel type est le champ MyData, et
aussi ce qu'il se passe quand il est nul.

D'autant que Data, pour préciser le type, c'est un nom qui s'engage
vachement :)

D'accord, il y a une conversion automatique, mais enfin plus clair on y
verra, mieux on sera à même de répondre.

D'ailleurs je vois des points de suspension, je me méfie un petit peu d e
ce qu'ils représentent, même si je ne suis pas très sûr que nous
entendrons encore parler de ce problème une fois que MyData aura été
remplacé par Nz(MyData).
________________________________________________
a écrit, le 30/08/2008 13:47 :
Bonjour à tous,

Je crée une requête sous VBA et j’ai visiblement des problèmes au
niveau de la syntaxe pour la condition WHERE.

MyQuery = "SELECT …." _
& "FROM … " _
& "WHERE (MyTable.MyField) =" & [Forms]![MyForm]!
[MyData]

ça me renvoie : Erreur d’exécution 13 : Incompatibilité de type

MyField de MyTable est un champ numérique.

Comment dois-je rédiger ma condition WHERE ?

Merci pour votre aide.
A bientôt.
Xavier


Avatar
domivax
Bonjour et merci pour la réponse,

J’ai effectivement été un peu minimaliste en posant mon problème. L es
points de suspension, c’était pour vous éviter de lire des données
inutiles, au fait voilà ce que je veux faire :

J’ai un formulaire (MainForm) avec une ListBox (MyListBox) alimentée
par MyTable (2 champs : numéro client (numérique) ClientId, nom du
client (texte) ClientName)

J’ai crée un autre formulaire de recherche que j’ai nommé (LookUp) et
c’est dans ce formulaire que ce trouve mon champ (MyData) qui est un
champ numérique, ce formulaire contient également un bouton (Search)
qui contient le code.

L’utilisateur utilisera le formulaire (LookUp) pour faire sa recherche
du numéro de compte qui alimentera la ListBox uniquement avec la
donnée recherchée.

Ma macro sous bouton Search :

Private Sub SearchButton_Click()
MyQuery = "SELECT MyTable.ClientId, MyTable.ClientName " _
& "FROM MyTable " _
& "WHERE (MyTable. ClientId) =" & [Forms]![LookUp]!
[MyData]

Forms!MainForm.MyListBox.RowSource = MyQuery

DoCmd.Close
End Sub

et si le champ (Data) est Null, il faut que rien ne se passe.

J’espère que mes explications sont complètes pour me venir en aide.

Merci beaucoup.
A bientôt.
Xavier
Avatar
Blaise Cacramp
--
Bonjour ou bonsoir, selon.

& "WHERE (MyTable.MyField) =" & [Forms]![MyForm]!
[MyData] & ";"



Cdt, Blaise
---- ---- ----


a écrit dans le message de news:

Bonjour à tous,

Je crée une requête sous VBA et j’ai visiblement des problèmes au
niveau de la syntaxe pour la condition WHERE.

MyQuery = "SELECT …." _
& "FROM … " _
& "WHERE (MyTable.MyField) =" & [Forms]![MyForm]!
[MyData]

ça me renvoie : Erreur d’exécution 13 : Incompatibilité de type

MyField de MyTable est un champ numérique.

Comment dois-je rédiger ma condition WHERE ?

Merci pour votre aide.
A bientôt.
Xavier
Avatar
Gloops
Aïe, c'est possible qu'il y ait tout, mais j'ai du mal à le faire ent rer
dans ma tête :)

Bon alors on a dit que le formulaire de recherche s'appelle Lookup.
Qu'est-ce qu'il y a, dessus ? Le Search_Button, j'imagine ?
Ah, oui, et le contrôle MyData qui contient une valeur numérique.

Bon, au début de la procédure du bouton, on mettra
If IsNull(MyData) Then
Exit Sub
End If

Comme ça, ce cas est traité.

Le MyQuery me semble pas mal, sauf un truc qui me défrise : l'espace
entre MyTable. et ClientId

A part ça on a bien un espace à la fin de chaque ligne donc de ce cô té
pas de problème.

Il faudrait l'afficher dans la fenêtre d'exécution
DoCmd.Print MyQuery
pour se rendre bien compte de ce qu'il y a dedans.
En plus, ça permet de copier ça dans le presse-papiers, de le coller
dans l'éditeur de requêtes, et de voir comment ça réagit. Souvent ,
arrivé à ce stade, on a un message d'erreur plus explicite.

Bien entendu, si il y a un nom de champ dans la requête qui n'est pas
conforme à ce qu'il est dans la table, je ne peux pas m'en rendre compt e.
________________________________________________
a écrit, le 30/08/2008 17:11 :
Bonjour et merci pour la réponse,

J’ai effectivement été un peu minimaliste en posant mon problèm e. Les
points de suspension, c’était pour vous éviter de lire des donné es
inutiles, au fait voilà ce que je veux faire :

J’ai un formulaire (MainForm) avec une ListBox (MyListBox) alimenté e
par MyTable (2 champs : numéro client (numérique) ClientId, nom du
client (texte) ClientName)

J’ai crée un autre formulaire de recherche que j’ai nommé (Look Up) et
c’est dans ce formulaire que ce trouve mon champ (MyData) qui est un
champ numérique, ce formulaire contient également un bouton (Search )
qui contient le code.

L’utilisateur utilisera le formulaire (LookUp) pour faire sa recherch e
du numéro de compte qui alimentera la ListBox uniquement avec la
donnée recherchée.

Ma macro sous bouton Search :

Private Sub SearchButton_Click()
MyQuery = "SELECT MyTable.ClientId, MyTable.ClientName " _
& "FROM MyTable " _
& "WHERE (MyTable. ClientId) =" & [Forms]![LookUp]!
[MyData]

Forms!MainForm.MyListBox.RowSource = MyQuery

DoCmd.Close
End Sub

et si le champ (Data) est Null, il faut que rien ne se passe.

J’espère que mes explications sont complètes pour me venir en aid e.

Merci beaucoup.
A bientôt.
Xavier


Avatar
Gloops
Blaise Cacramp a écrit, le 31/08/2008 15:51 :
(plein de choses qui constituent une signature -hein ?)


______________

Je me suis rendu compte que j'avais laissé une question en plan, et
qu'il fallait éviter de se curer le nez en même temps qu'on y répon dait :)

En définitive, on dirait que tu as répondu comme moi (en plus sobre,
certes).

Tiens il en est où Xavier ?
Avatar
Blaise Cacramp
--
Bonjour ou bonsoir, selon.


Xavier ?
au GDLUX

Cdt, Blaise
---- ---- ----


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

Blaise Cacramp a écrit, le 31/08/2008 15:51 :
(plein de choses qui constituent une signature -hein ?)


______________

Je me suis rendu compte que j'avais laissé une question en plan, et
qu'il fallait éviter de se curer le nez en même temps qu'on y répondait :)

En définitive, on dirait que tu as répondu comme moi (en plus sobre,
certes).

Tiens il en est où Xavier ?
Avatar
Gloops
Ah bon ?

Alors en clair, il pose une question et il se sauve ...
Mouaif.


(Tiens au fait, au risque d'insister, as-tu vu que tu as mis deux petits
traits sur la première ligne de ton message, raison pour laquelle
celui-ci n'apparaît pas en citation ci-dessous ? Je soupçonne que ce
n'est pas fait exprès.)

Blaise Cacramp a écrit, le 05/09/2008 12:40 :
(Xavier parti au GDLUX - ah, des vacances au Luxembourg ?)
Avatar
Blaise Cacramp
Bonjour ou bonsoir, selon.

En fait le "bonjour bonsoir" est dans la signature, puis quelques lignes
vierges et le "cdt".
Je clique au milieu et je tapes mon texte.
Les deux petits traits sont ajoutés par OE. Et je ne savais pas que cela
"coupait" le message. Sais-tu me donner une référence pour cela ? non
point que je mette en doute tes dires mais pour approfondir cela.

Quand au Xavier, je ne vois pas de qui tu parles. Je connais deux Xavier :
le premier est mort dans son lit à +/- 35 ans, le second, du côté de ma
belle-famille, travaille au GDLUX avec sa petite femme et son petit gosse.
Ça fait belle lurette que je n'ai plus vu. Et c'est pas lui qui va poster
ici.



Cdt, Blaise
---- ---- ----


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

Ah bon ?

Alors en clair, il pose une question et il se sauve ...
Mouaif.


(Tiens au fait, au risque d'insister, as-tu vu que tu as mis deux petits
traits sur la première ligne de ton message, raison pour laquelle
celui-ci n'apparaît pas en citation ci-dessous ? Je soupçonne que ce
n'est pas fait exprès.)

Blaise Cacramp a écrit, le 05/09/2008 12:40 :
(Xavier parti au GDLUX - ah, des vacances au Luxembourg ?)
Avatar
Gloops
Blaise Cacramp a écrit, le 09/09/2008 14:24 :
Bonjour ou bonsoir, selon.

En fait le "bonjour bonsoir" est dans la signature, puis quelques ligne s
vierges et le "cdt".
Je clique au milieu et je tapes mon texte.
Les deux petits traits sont ajoutés par OE. Et je ne savais pas que cela
"coupait" le message. Sais-tu me donner une référence pour cela ? non
point que je mette en doute tes dires mais pour approfondir cela.




Alors là tu me poses une colle, je n'ai fait que répéter quelque ch ose
qui a déjà été dit dans les newsgroups (d'habitude plutôt ceux qui
parlent de messageries). J'imagine qu'il faut chercher du côté des
normes de messagerie (on dit RFC si je me rappelle bien), on doit
trouver les liens dans les FAQ, je chercherais bien FAQ dans les
newsgroups qui parlent de messagerie -chercher RFC donne aussi des
résultats.

Sinon il y a des sites de vulgarisation probablement plus digestes. Un
temps il y avait salemioche.net, mais ce site a été remanié. Il me
semble que les pages auxquelles je pense sont disponibles à une autre
adresse. Je l'ai mentionné un jour, là j'ai oublié et je ne vais pa s
chercher ce soir, désolé.

Voici quelques thèmes de recherche qui peuvent déboucher sur des tuya ux
intéressants :

messagerie
pop
imap
champ de message
from to cc
mailto
pop signature message

Alors pour la première c'est vrai qu'on peut tomber sur des messageries
de presse, pour la deuxième il sera beaucoup question de musique ...
Mais on devrait quand même aussi trouver dans le sujet.

A tout hasard, j'utilise Thunderbird, et pour ce logiciel le support
francophone (pour bonne partie assuré par des bénévoles) se trouve là :

http://www.geckozone.org/

Entre autres il y a des forums.

Et puis Microsoft aussi traite le sujet et fournit Outlook / Outlook
Express.

Quand au Xavier, je ne vois pas de qui tu parles. Je connais deux Xavi er :
le premier est mort dans son lit à +/- 35 ans, le second, du côté de ma
belle-famille, travaille au GDLUX avec sa petite femme et son petit gos se.
Ça fait belle lurette que je n'ai plus vu. Et c'est pas lui qui va p oster
ici.




Regarde en tête de ce fil, la signature du gars qui a posé une questi on.

C'est vrai qu'il a pu aussi lui arriver malheur, on ne le lui souhaite pa s.
Avatar
chpa
Bonsoir,
Pour ma part je procède comme cela, c'est plus clair :

dim MyVar as integer 'Je suppose que le champ est numérique.
MyVar = [Forms]![LookUp]![MyData]

dim strQry as string
strQry = "SELECT MyTable.ClientId, MyTable.ClientName "
strQry = strQry & "FROM MyTable "

Donc pour un numérique :
strQry = strQry & "WHERE (MyTable. ClientId) =" & MyVar & ";"

Si c'est un string :
strQry = strQry & "WHERE (MyTable. ClientId) =""" & MyVar & """;"

en supposant que MyVar n'est pas nulle (tester la variable).

"Gloops" a écrit dans le message de
news:u0sV0$
Aïe, c'est possible qu'il y ait tout, mais j'ai du mal à le faire entrer
dans ma tête :)

Bon alors on a dit que le formulaire de recherche s'appelle Lookup.
Qu'est-ce qu'il y a, dessus ? Le Search_Button, j'imagine ?
Ah, oui, et le contrôle MyData qui contient une valeur numérique.

Bon, au début de la procédure du bouton, on mettra
If IsNull(MyData) Then
Exit Sub
End If

Comme ça, ce cas est traité.

Le MyQuery me semble pas mal, sauf un truc qui me défrise : l'espace
entre MyTable. et ClientId

A part ça on a bien un espace à la fin de chaque ligne donc de ce côté
pas de problème.

Il faudrait l'afficher dans la fenêtre d'exécution
DoCmd.Print MyQuery
pour se rendre bien compte de ce qu'il y a dedans.
En plus, ça permet de copier ça dans le presse-papiers, de le coller
dans l'éditeur de requêtes, et de voir comment ça réagit. Souvent,
arrivé à ce stade, on a un message d'erreur plus explicite.

Bien entendu, si il y a un nom de champ dans la requête qui n'est pas
conforme à ce qu'il est dans la table, je ne peux pas m'en rendre compte.
________________________________________________
a écrit, le 30/08/2008 17:11 :
Bonjour et merci pour la réponse,

J’ai effectivement été un peu minimaliste en posant mon problème. Les
points de suspension, c’était pour vous éviter de lire des données
inutiles, au fait voilà ce que je veux faire :

J’ai un formulaire (MainForm) avec une ListBox (MyListBox) alimentée
par MyTable (2 champs : numéro client (numérique) ClientId, nom du
client (texte) ClientName)

J’ai crée un autre formulaire de recherche que j’ai nommé (LookUp) et
c’est dans ce formulaire que ce trouve mon champ (MyData) qui est un
champ numérique, ce formulaire contient également un bouton (Search)
qui contient le code.

L’utilisateur utilisera le formulaire (LookUp) pour faire sa recherche
du numéro de compte qui alimentera la ListBox uniquement avec la
donnée recherchée.

Ma macro sous bouton Search :

Private Sub SearchButton_Click()
MyQuery = "SELECT MyTable.ClientId, MyTable.ClientName " _
& "FROM MyTable " _
& "WHERE (MyTable. ClientId) =" & [Forms]![LookUp]!
[MyData]

Forms!MainForm.MyListBox.RowSource = MyQuery

DoCmd.Close
End Sub

et si le champ (Data) est Null, il faut que rien ne se passe.

J’espère que mes explications sont complètes pour me venir en aide.

Merci beaucoup.
A bientôt.
Xavier