Pb OleDbDataAdapter

Le
Emilie
Bonjour

Je fais une requete paramétrée sur deux tables Access
et j'ai un problème avec cette ligne :

myOleDbDataAdapter.SelectCommand.parameters(MaTab1.LeChamps).value="MaTab2.Lechamps"
elle ne trouve pas d'enregistrement, par contre si je mets la valeur :
myOleDbDataAdapter.SelectCommand.parameters(MaTab1.LeChamps).value="ToTo"
cela fonctionne

Pouvez-vous m'indiquer l'erreur de la premiere ligne

Merci par avance
Emilie
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrice
Le #17514721
J'ai l'impression que tu t'attends à ce que l'on ait :
- WHERE MaValeur=MaTab2.Lechamps

MaTab2.LeChamps étant une colonne accessible dans la requête. En fait on
obtiendra :
- WHERE MaValeur='MaTab2.Lechamps' donc on compare avec la chaîne de
caractère 'MaTab2.Lechamps'

Difficile de dire quoi faire faute de connaitre le but mais je pense que là
on devrait sans doute avoir carrément une requête SQL différente plutôt que
de jouer sur un simple paramètre. Ne mettre des paramètres qyue pour
rempalcer les valeurs littérales.

--
Patrice

"Emilie" discussion : 48f35d1b$0$887$
Bonjour

Je fais une requete paramétrée sur deux tables Access
et j'ai un problème avec cette ligne :

myOleDbDataAdapter.SelectCommand.parameters(MaTab1.LeChamps).value="MaTab2.Lechamps"
elle ne trouve pas d'enregistrement, par contre si je mets la valeur :
myOleDbDataAdapter.SelectCommand.parameters(MaTab1.LeChamps).value="ToTo"
cela fonctionne

Pouvez-vous m'indiquer l'erreur de la premiere ligne

Merci par avance
Emilie




Emilie
Le #17515031
Bonjour Patrice

Merci pour ta réponse, mais je ne comprends pas,
dans le select de la première table j'ai un champs MaTable2.Lechamps
dans celui de la seconde j'ai un champs MaTable1.Lechamps

donc je souhaite écrire whère MaTable1.Lechamps=MaTab2.Lechamps

Emilie

"Patrice"
J'ai l'impression que tu t'attends à ce que l'on ait :
- WHERE MaValeur=MaTab2.Lechamps

MaTab2.LeChamps étant une colonne accessible dans la requête. En fait on
obtiendra :
- WHERE MaValeur='MaTab2.Lechamps' donc on compare avec la chaîne de
caractère 'MaTab2.Lechamps'

Difficile de dire quoi faire faute de connaitre le but mais je pense que
là on devrait sans doute avoir carrément une requête SQL différente plutôt
que de jouer sur un simple paramètre. Ne mettre des paramètres qyue pour
rempalcer les valeurs littérales.

--
Patrice

"Emilie" discussion : 48f35d1b$0$887$
Bonjour

Je fais une requete paramétrée sur deux tables Access
et j'ai un problème avec cette ligne :

myOleDbDataAdapter.SelectCommand.parameters(MaTab1.LeChamps).value="MaTab2.Lechamps"
elle ne trouve pas d'enregistrement, par contre si je mets la valeur :
myOleDbDataAdapter.SelectCommand.parameters(MaTab1.LeChamps).value="ToTo"
cela fonctionne

Pouvez-vous m'indiquer l'erreur de la premiere ligne

Merci par avance
Emilie







Patrice
Le #17515391
Donc le problème est qu'au lieu de produire

where MaTable1.Lechamps=MaTab2.Lechamps

Tu obtiens

whère MaTable1.Lechamps='MaTab2.Lechamps'

Exactement comme dans le deuxième cas tu as :

where MaTable1.Lechamps='Toto'

Et non pas :

whère MaTable1.Lechamps=Toto

Un paramètre permet de remplacer une valeur littérale (la vlaeur d'un
nombre, d'une date, d'un booléean etc...) pas de remplacer arbitrairement
n'importe quelle partie d'une instruction SQL.

--
Patrice

"Emilie" discussion : 48f36aec$0$905$
Bonjour Patrice

Merci pour ta réponse, mais je ne comprends pas,
dans le select de la première table j'ai un champs MaTable2.Lechamps
dans celui de la seconde j'ai un champs MaTable1.Lechamps

donc je souhaite écrire whère MaTable1.Lechamps=MaTab2.Lechamps

Emilie

"Patrice"
J'ai l'impression que tu t'attends à ce que l'on ait :
- WHERE MaValeur=MaTab2.Lechamps

MaTab2.LeChamps étant une colonne accessible dans la requête. En fait on
obtiendra :
- WHERE MaValeur='MaTab2.Lechamps' donc on compare avec la chaîne de
caractère 'MaTab2.Lechamps'

Difficile de dire quoi faire faute de connaitre le but mais je pense que
là on devrait sans doute avoir carrément une requête SQL différente
plutôt que de jouer sur un simple paramètre. Ne mettre des paramètres
qyue pour rempalcer les valeurs littérales.

--
Patrice

"Emilie" discussion : 48f35d1b$0$887$
Bonjour

Je fais une requete paramétrée sur deux tables Access
et j'ai un problème avec cette ligne :

myOleDbDataAdapter.SelectCommand.parameters(MaTab1.LeChamps).value="MaTab2.Lechamps"
elle ne trouve pas d'enregistrement, par contre si je mets la valeur :
myOleDbDataAdapter.SelectCommand.parameters(MaTab1.LeChamps).value="ToTo"
cela fonctionne

Pouvez-vous m'indiquer l'erreur de la premiere ligne

Merci par avance
Emilie











Emilie
Le #17520671
Bonjour Patrice

Alors comment dois-je écrire cette ligne de code ?

Emilie
"Patrice"
Donc le problème est qu'au lieu de produire

where MaTable1.Lechamps=MaTab2.Lechamps

Tu obtiens

whère MaTable1.Lechamps='MaTab2.Lechamps'

Exactement comme dans le deuxième cas tu as :

where MaTable1.Lechamps='Toto'

Et non pas :

whère MaTable1.Lechamps=Toto

Un paramètre permet de remplacer une valeur littérale (la vlaeur d'un
nombre, d'une date, d'un booléean etc...) pas de remplacer arbitrairement
n'importe quelle partie d'une instruction SQL.

--
Patrice

"Emilie" discussion : 48f36aec$0$905$
Bonjour Patrice

Merci pour ta réponse, mais je ne comprends pas,
dans le select de la première table j'ai un champs MaTable2.Lechamps
dans celui de la seconde j'ai un champs MaTable1.Lechamps

donc je souhaite écrire whère MaTable1.Lechamps=MaTab2.Lechamps

Emilie

"Patrice"
J'ai l'impression que tu t'attends à ce que l'on ait :
- WHERE MaValeur=MaTab2.Lechamps

MaTab2.LeChamps étant une colonne accessible dans la requête. En fait on
obtiendra :
- WHERE MaValeur='MaTab2.Lechamps' donc on compare avec la chaîne de
caractère 'MaTab2.Lechamps'

Difficile de dire quoi faire faute de connaitre le but mais je pense que
là on devrait sans doute avoir carrément une requête SQL différente
plutôt que de jouer sur un simple paramètre. Ne mettre des paramètres
qyue pour rempalcer les valeurs littérales.

--
Patrice

"Emilie" discussion : 48f35d1b$0$887$
Bonjour

Je fais une requete paramétrée sur deux tables Access
et j'ai un problème avec cette ligne :

myOleDbDataAdapter.SelectCommand.parameters(MaTab1.LeChamps).value="MaTab2.Lechamps"
elle ne trouve pas d'enregistrement, par contre si je mets la valeur :
myOleDbDataAdapter.SelectCommand.parameters(MaTab1.LeChamps).value="ToTo"
cela fonctionne

Pouvez-vous m'indiquer l'erreur de la premiere ligne

Merci par avance
Emilie














Patrice
Le #17522921
Donc utiliser le nom de champ directement dans le texte de la requête
générée. N'utiliser le paramètres que pour alimenter les paramètres. Exemple
:

cmd = New Data.OleDb.OleDbCommand("SELECT * FROM " & MyTable & " WHERE
MonChamp=?")

Le Nom de la table est directement inséré dans l'instruction SQL à partir
d'une variable. Pour la valeur cherché on utilise une valeur litérale et on
utilise donc un paramètre...

Eventuellement donner le contexte peut aider (le fait d'avoir un nom de
champ ou de table en "paramètre" est relativement peut courant) surtout que
cela semble être dans ton cas pour faire une jointure (l'utilisateur peut
dire avec quelle table il faut faire la jointure ???) ?

--
Patrice
Publicité
Poster une réponse
Anonyme