OVH Cloud OVH Cloud

problème de synthaxe dans clause where

5 réponses
Avatar
francisco
Bonjour tout le monde

J'ai relié un formulaire ou il y des textbox à une requête sql comme vous le
voyez et j'ai un message d'erreur erreur d'execution 424 Objet requis et je
ne comprends pas pourquoi

Est ce que je dois au debut de ma requête qui est une macro enregistrée
declarer les TextBox comme cela

Dim TextBox1 as string ou est ce un probleme à l'interieur de ma propre
requête ou j'ai saisi maladroitement quelque chose

je pense que mon erreur vient de la (Ventes_1999.Volume>" & TextBox6.Text &
")" mais je ne sais pas comment la corriger

Vous trouverez ci dessous une partie de ma requ^^ete ou j'ai insereré les
textbox maladroitement

"WHERE (Ventes_1999.CodeProduct=" & TextBox1.Text & ") AND (Ventes_1999" _
, _
".CodeConditionnement=" & TextBox2.Text & ") AND
(Ventes_1999.CodeCouleur=" & TextBox3.Text & ") AND (Ventes_1999.Grammage="
& TextBox4.Text & ") AND (Ventes_1999.PM=" & TextBox5.Text & ") AND
(Ventes_1999.Volume>" & TextBox6.Text & ")" _

Merci tout le monde

5 réponses

Avatar
michdenis
Bonjour Francisco,

Si tu publiais la totalité de la procédure que tu utilises ...et les résultats attendus de ta procédure.


Salutations!


"francisco" a écrit dans le message de news:c0vnvl$lgf$
Bonjour tout le monde

J'ai relié un formulaire ou il y des textbox à une requête sql comme vous le
voyez et j'ai un message d'erreur erreur d'execution 424 Objet requis et je
ne comprends pas pourquoi

Est ce que je dois au debut de ma requête qui est une macro enregistrée
declarer les TextBox comme cela

Dim TextBox1 as string ou est ce un probleme à l'interieur de ma propre
requête ou j'ai saisi maladroitement quelque chose

je pense que mon erreur vient de la (Ventes_1999.Volume>" & TextBox6.Text &
")" mais je ne sais pas comment la corriger

Vous trouverez ci dessous une partie de ma requ^^ete ou j'ai insereré les
textbox maladroitement

"WHERE (Ventes_1999.CodeProduct=" & TextBox1.Text & ") AND (Ventes_1999" _
, _
".CodeConditionnement=" & TextBox2.Text & ") AND
(Ventes_1999.CodeCouleur=" & TextBox3.Text & ") AND (Ventes_1999.Grammage="
& TextBox4.Text & ") AND (Ventes_1999.PM=" & TextBox5.Text & ") AND
(Ventes_1999.Volume>" & TextBox6.Text & ")" _

Merci tout le monde
Avatar
papou
Bonjour francisco
je pense que mon erreur vient de la (Ventes_1999.Volume>" & TextBox6.Text &
")" mais je ne sais pas comment la corriger
Pas sûr à 100% mais je crois bien qu'il faut effectivement y ajouter une

apostrophe (') en début et en fin de ta valeur soit quelque chose comme ça :
'" & TextBox6.Text &"'
A voir...
Cordialement
Pascal


"francisco" a écrit dans le message de
news:c0vnvl$lgf$
Bonjour tout le monde

J'ai relié un formulaire ou il y des textbox à une requête sql comme vous
le

voyez et j'ai un message d'erreur erreur d'execution 424 Objet requis et
je

ne comprends pas pourquoi

Est ce que je dois au debut de ma requête qui est une macro enregistrée
declarer les TextBox comme cela

Dim TextBox1 as string ou est ce un probleme à l'interieur de ma propre
requête ou j'ai saisi maladroitement quelque chose

je pense que mon erreur vient de la (Ventes_1999.Volume>" & TextBox6.Text
&

")" mais je ne sais pas comment la corriger

Vous trouverez ci dessous une partie de ma requ^^ete ou j'ai insereré les
textbox maladroitement

"WHERE (Ventes_1999.CodeProduct=" & TextBox1.Text & ") AND (Ventes_1999" _
, _
".CodeConditionnement=" & TextBox2.Text & ") AND
(Ventes_1999.CodeCouleur=" & TextBox3.Text & ") AND
(Ventes_1999.Grammage="

& TextBox4.Text & ") AND (Ventes_1999.PM=" & TextBox5.Text & ") AND
(Ventes_1999.Volume>" & TextBox6.Text & ")" _

Merci tout le monde





Avatar
francisco
salut michdenis
voici la totalité de ma requête qui est une macro enregistrée qui pointe sur
une table access ventes 1999 via un lien ODBC pour créer cette requête j'ai
été dans l'enregistreur de macro de excel ou j'ai fait Données Données
externes Créer une requête Nouvelle source de données j'ai selectionné mon
type de base de donnée qui est une base access.mdb ensuite j'ai selectionné
la table access sur la quelle je veux filtrer mes données selon les champs
suivants CodeProduct CodeConditionnement CodeCouleur Grammage PM et un
volume supérieur à 50 et l'enregistreur de macro me donne une requête qui
se trouve dans excel et que je nomme Sub requête() Mon objectif final est
donc via une macro enregistré sur excel récupérer des données filtrer qui se
trouvent dans une table access et obtenir le resultat de cette requête sur
excel cela j'arrive à le faire Le probleme c'est que dans ma requête créer
via l'enregistreur de macro mon filtrage de données n'est pas variable donc
j'ai decidé de créer un userform sur excel et des textbox pour rendre mon
filtrage de données variable
donc j'ai remplacé les chiffres qui étaient en dur par exemple "Where
(Ventes_1999.Grammage = 80)" par "Where (Ventes_1999.Grammage =" &
TextBox1.Text & ")" de mon formulaire userform1 de manière à si je veux
connaitre mes ventes 1999 pour un grammage  je n'ai pas à refaire une
deuxième macro enregistrée je voudrais juste avoir à taper 90 dans mon
userform et il me donne pour un code produit un Code conditionnement Code
couleur le Grammage  mais pour cela il faut que j'arrive à faire
marcher mon userform et ses textbox et lier mon userform à ma macro
enregistée le probleme c'est que je dois écrire une connerie quelque part
ou mal declarer les textbox dans ma macro enregistrée

Si ambiguité il y a fait le moi savoir J'espere que j'ai été plus clair
michdenis pour que tu puisses m'aider merci d'avance car j'ai la cafetière
en surchauffe
La requête liée au textbox de mon userform se trouve endessous


Sub Requête()

' Macro enregistrée le 15/02/2004 par francisco
Ajouter à la main
'Sheets("tbd").Select
'Columns("A:IV").Select
'Selection.ClearContents


'
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DBQ=C:Documents and SettingsfranciscoMes
documentsPsm_Analyse.mdb;DefaultDir=C:Documents and SettingsfranciscoMes
docume" _
), Array( _
"nts;Driver={Driver do Microsoft Access (*.mdb)};DriverId%;FIL=MS
Access;MaxBufferSize 48;MaxScanRows=8;PageTimeout=5;SafeTr" _
), Array("ansactions=0;Threads=3;UID­min;UserCommitSync=Yes;")),
Destination _
:=Range("A1"))
.CommandText = Array( _
"SELECT Ventes_1999.CodeProduct, Ventes_1999.CodeConditionnement,
Ventes_1999.CodeCouleur, Ventes_1999.Grammage, Ventes_1999.PM,
Ventes_1999.Volume, Ventes_1999.AverageExMill, Ventes_1999.VariablesCost" _
, _
"s, Ventes_1999.FixedCosts, Ventes_1999.TonnesHeures" & Chr(13) & ""
& Chr(10) & "FROM `C:Documents and SettingsfranciscoMes
documentsPsm_Analyse`.Ventes_1999 Ventes_1999" & Chr(13) & "" & Chr(10) &
"WHERE (Ventes_1999.CodeProduct=" & TextBox1.Text & ") AND (Ventes_1999" _
, _
".CodeConditionnement=" & TextBox2.Text & ") AND
(Ventes_1999.CodeCouleur=" & TextBox3.Text & ") AND (Ventes_1999.Grammage="
& TextBox4.Text & ") AND (Ventes_1999.PM=" & TextBox5.Text & ") AND
(Ventes_1999.Volume>" & TextBox6.Text & ")" _
)
.Name = "Lancer la requête à partir de Access_Psm_Analyse"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:úlse
End With
Range("A1").Select
End Sub
"michdenis" a écrit dans le message de news:

Bonjour Francisco,

Si tu publiais la totalité de la procédure que tu utilises ...et les
résultats attendus de ta procédure.



Salutations!


"francisco" a écrit dans le message de
news:c0vnvl$lgf$

Bonjour tout le monde

J'ai relié un formulaire ou il y des textbox à une requête sql comme vous
le

voyez et j'ai un message d'erreur erreur d'execution 424 Objet requis et
je

ne comprends pas pourquoi

Est ce que je dois au debut de ma requête qui est une macro enregistrée
declarer les TextBox comme cela

Dim TextBox1 as string ou est ce un probleme à l'interieur de ma propre
requête ou j'ai saisi maladroitement quelque chose

je pense que mon erreur vient de la (Ventes_1999.Volume>" & TextBox6.Text
&

")" mais je ne sais pas comment la corriger

Vous trouverez ci dessous une partie de ma requ^^ete ou j'ai insereré les
textbox maladroitement

"WHERE (Ventes_1999.CodeProduct=" & TextBox1.Text & ") AND (Ventes_1999" _
, _
".CodeConditionnement=" & TextBox2.Text & ") AND
(Ventes_1999.CodeCouleur=" & TextBox3.Text & ") AND
(Ventes_1999.Grammage="

& TextBox4.Text & ") AND (Ventes_1999.PM=" & TextBox5.Text & ") AND
(Ventes_1999.Volume>" & TextBox6.Text & ")" _

Merci tout le monde






Avatar
michdenis
Bonjour Francisco,

Une suggestion pour rendre ton code plus lisible :

Tu peux définir la chaîne de ta requête dans une variable :

MaRequete2 = "SELECT base.CODE, base.Nom, base.ADRESSE, base.VILLE, base.TELEPHONE," & vbCrLf & _
"base.CONTACT, base.PROVINCE, base.CODEPOST, base.`CODE-VENDEUR`," & vbCrLf & _
"base.ACHAT, base.VILLE FROM `C:ODBCBase de Données`.base base " & vbCrLf & _
"WHERE (base.VILLE='" & critère1 & "' OR base.VILLE='" & Critère2 & "')"

Et voici quelques exemples de syntaxes de conditions Where :

Les Champs sont du texte

"WHERE (base.VILLE='" & critère1 & "' OR base.VILLE='" & Critère2 & "')"

Le champ est numérique : Dans cette syntaxe le "Champ" est une variable. il peut représenter un champ de ton choix dans
la requête. Observe il n'y a pas de quillemets simple dans cette exemple comparativement au champ texte.

Critère4 = 4000
"WHERE (base." & Champ & ">" & Critère4 & ")"

Il y a aussi moyen d'utiliser l'opérateur "Like" par exemple, si tu recherche un nom de ville débutant par L

Critère5 = "H%"
"WHERE (base.VILLE Like '" & Critère5 & "')"


Et lorsque ta requête est terminée, tu l'insère dans la procédure comme ceci :
.CommandText = Array(MaRequete2)


En espérant que cela puisse t'aider. Je suis bien incapable de corriger à la volée la syntaxe de ta requête !!! Ce type
de truc n'est pas toujours évident.


Salutations!







"francisco" a écrit dans le message de news:c0vvm0$hh7$
salut michdenis
voici la totalité de ma requête qui est une macro enregistrée qui pointe sur
une table access ventes 1999 via un lien ODBC pour créer cette requête j'ai
été dans l'enregistreur de macro de excel ou j'ai fait Données Données
externes Créer une requête Nouvelle source de données j'ai selectionné mon
type de base de donnée qui est une base access.mdb ensuite j'ai selectionné
la table access sur la quelle je veux filtrer mes données selon les champs
suivants CodeProduct CodeConditionnement CodeCouleur Grammage PM et un
volume supérieur à 50 et l'enregistreur de macro me donne une requête qui
se trouve dans excel et que je nomme Sub requête() Mon objectif final est
donc via une macro enregistré sur excel récupérer des données filtrer qui se
trouvent dans une table access et obtenir le resultat de cette requête sur
excel cela j'arrive à le faire Le probleme c'est que dans ma requête créer
via l'enregistreur de macro mon filtrage de données n'est pas variable donc
j'ai decidé de créer un userform sur excel et des textbox pour rendre mon
filtrage de données variable
donc j'ai remplacé les chiffres qui étaient en dur par exemple "Where
(Ventes_1999.Grammage = 80)" par "Where (Ventes_1999.Grammage =" &
TextBox1.Text & ")" de mon formulaire userform1 de manière à si je veux
connaitre mes ventes 1999 pour un grammage  je n'ai pas à refaire une
deuxième macro enregistrée je voudrais juste avoir à taper 90 dans mon
userform et il me donne pour un code produit un Code conditionnement Code
couleur le Grammage  mais pour cela il faut que j'arrive à faire
marcher mon userform et ses textbox et lier mon userform à ma macro
enregistée le probleme c'est que je dois écrire une connerie quelque part
ou mal declarer les textbox dans ma macro enregistrée

Si ambiguité il y a fait le moi savoir J'espere que j'ai été plus clair
michdenis pour que tu puisses m'aider merci d'avance car j'ai la cafetière
en surchauffe
La requête liée au textbox de mon userform se trouve endessous


Sub Requête()

' Macro enregistrée le 15/02/2004 par francisco
Ajouter à la main
'Sheets("tbd").Select
'Columns("A:IV").Select
'Selection.ClearContents


'
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DBQ=C:Documents and SettingsfranciscoMes
documentsPsm_Analyse.mdb;DefaultDir=C:Documents and SettingsfranciscoMes
docume" _
), Array( _
"nts;Driver={Driver do Microsoft Access (*.mdb)};DriverId%;FIL=MS
Access;MaxBufferSize 48;MaxScanRows=8;PageTimeout=5;SafeTr" _
), Array("ansactions=0;Threads=3;UID­min;UserCommitSync=Yes;")),
Destination _
:=Range("A1"))
.CommandText = Array( _
"SELECT Ventes_1999.CodeProduct, Ventes_1999.CodeConditionnement,
Ventes_1999.CodeCouleur, Ventes_1999.Grammage, Ventes_1999.PM,
Ventes_1999.Volume, Ventes_1999.AverageExMill, Ventes_1999.VariablesCost" _
, _
"s, Ventes_1999.FixedCosts, Ventes_1999.TonnesHeures" & Chr(13) & ""
& Chr(10) & "FROM `C:Documents and SettingsfranciscoMes
documentsPsm_Analyse`.Ventes_1999 Ventes_1999" & Chr(13) & "" & Chr(10) &
"WHERE (Ventes_1999.CodeProduct=" & TextBox1.Text & ") AND (Ventes_1999" _
, _
".CodeConditionnement=" & TextBox2.Text & ") AND
(Ventes_1999.CodeCouleur=" & TextBox3.Text & ") AND (Ventes_1999.Grammage="
& TextBox4.Text & ") AND (Ventes_1999.PM=" & TextBox5.Text & ") AND
(Ventes_1999.Volume>" & TextBox6.Text & ")" _
)
.Name = "Lancer la requête à partir de Access_Psm_Analyse"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:úlse
End With
Range("A1").Select
End Sub
"michdenis" a écrit dans le message de news:

Bonjour Francisco,

Si tu publiais la totalité de la procédure que tu utilises ...et les
résultats attendus de ta procédure.



Salutations!


"francisco" a écrit dans le message de
news:c0vnvl$lgf$

Bonjour tout le monde

J'ai relié un formulaire ou il y des textbox à une requête sql comme vous
le

voyez et j'ai un message d'erreur erreur d'execution 424 Objet requis et
je

ne comprends pas pourquoi

Est ce que je dois au debut de ma requête qui est une macro enregistrée
declarer les TextBox comme cela

Dim TextBox1 as string ou est ce un probleme à l'interieur de ma propre
requête ou j'ai saisi maladroitement quelque chose

je pense que mon erreur vient de la (Ventes_1999.Volume>" & TextBox6.Text
&

")" mais je ne sais pas comment la corriger

Vous trouverez ci dessous une partie de ma requ^^ete ou j'ai insereré les
textbox maladroitement

"WHERE (Ventes_1999.CodeProduct=" & TextBox1.Text & ") AND (Ventes_1999" _
, _
".CodeConditionnement=" & TextBox2.Text & ") AND
(Ventes_1999.CodeCouleur=" & TextBox3.Text & ") AND
(Ventes_1999.Grammage="

& TextBox4.Text & ") AND (Ventes_1999.PM=" & TextBox5.Text & ") AND
(Ventes_1999.Volume>" & TextBox6.Text & ")" _

Merci tout le monde






Avatar
francisco
Merci MichDenis et papou pour votre aide
amicalement Francisco
"papou" <DésoléPasDeMail> a écrit dans le message de news:
eP#N#
Bonjour francisco
je pense que mon erreur vient de la (Ventes_1999.Volume>" & TextBox6.Text
&


")" mais je ne sais pas comment la corriger
Pas sûr à 100% mais je crois bien qu'il faut effectivement y ajouter une

apostrophe (') en début et en fin de ta valeur soit quelque chose comme ça
:

'" & TextBox6.Text &"'
A voir...
Cordialement
Pascal


"francisco" a écrit dans le message de
news:c0vnvl$lgf$
Bonjour tout le monde

J'ai relié un formulaire ou il y des textbox à une requête sql comme
vous


le
voyez et j'ai un message d'erreur erreur d'execution 424 Objet requis et
je

ne comprends pas pourquoi

Est ce que je dois au debut de ma requête qui est une macro enregistrée
declarer les TextBox comme cela

Dim TextBox1 as string ou est ce un probleme à l'interieur de ma propre
requête ou j'ai saisi maladroitement quelque chose

je pense que mon erreur vient de la (Ventes_1999.Volume>" &
TextBox6.Text


&
")" mais je ne sais pas comment la corriger

Vous trouverez ci dessous une partie de ma requ^^ete ou j'ai insereré
les


textbox maladroitement

"WHERE (Ventes_1999.CodeProduct=" & TextBox1.Text & ") AND (Ventes_1999"
_


, _
".CodeConditionnement=" & TextBox2.Text & ") AND
(Ventes_1999.CodeCouleur=" & TextBox3.Text & ") AND
(Ventes_1999.Grammage="

& TextBox4.Text & ") AND (Ventes_1999.PM=" & TextBox5.Text & ") AND
(Ventes_1999.Volume>" & TextBox6.Text & ")" _

Merci tout le monde