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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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" a écrit dans le message de groupe de 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
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" <amc-emilie@wanadoo.fr> a écrit dans le message de groupe de
discussion : 48f35d1b$0$887$ba4acef3@news.orange.fr...
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
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" a écrit dans le message de groupe de 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
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" <http://www.chez.com/scribe/> a écrit dans le message de news:
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" a écrit dans le message de groupe de 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
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" <http://www.chez.com/scribe/> a écrit dans le message de news:
15841148-BC6E-402E-BE70-C2DAFC6C304D@microsoft.com...
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" <amc-emilie@wanadoo.fr> a écrit dans le message de groupe de
discussion : 48f35d1b$0$887$ba4acef3@news.orange.fr...
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 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" <http://www.chez.com/scribe/> a écrit dans le message de news:
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" a écrit dans le message de groupe de 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
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" a écrit dans le message de groupe de 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" <http://www.chez.com/scribe/> a écrit dans le message de news:
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" a écrit dans le message de groupe de 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
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" <amc-emilie@wanadoo.fr> a écrit dans le message de groupe de
discussion : 48f36aec$0$905$ba4acef3@news.orange.fr...
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" <http://www.chez.com/scribe/> a écrit dans le message de news:
15841148-BC6E-402E-BE70-C2DAFC6C304D@microsoft.com...
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" <amc-emilie@wanadoo.fr> a écrit dans le message de groupe de
discussion : 48f35d1b$0$887$ba4acef3@news.orange.fr...
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
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" a écrit dans le message de groupe de 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" <http://www.chez.com/scribe/> a écrit dans le message de news:
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" a écrit dans le message de groupe de 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
Bonjour Patrice
Alors comment dois-je écrire cette ligne de code ?
Emilie "Patrice" <http://www.chez.com/scribe/> a écrit dans le message de news:
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" a écrit dans le message de groupe de 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" <http://www.chez.com/scribe/> a écrit dans le message de news:
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" a écrit dans le message de groupe de 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
Bonjour Patrice
Alors comment dois-je écrire cette ligne de code ?
Emilie
"Patrice" <http://www.chez.com/scribe/> a écrit dans le message de news:
16D673F3-3AA7-4C0E-9A58-BF73BE30DC6A@microsoft.com...
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" <amc-emilie@wanadoo.fr> a écrit dans le message de groupe de
discussion : 48f36aec$0$905$ba4acef3@news.orange.fr...
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" <http://www.chez.com/scribe/> a écrit dans le message de news:
15841148-BC6E-402E-BE70-C2DAFC6C304D@microsoft.com...
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" <amc-emilie@wanadoo.fr> a écrit dans le message de groupe de
discussion : 48f35d1b$0$887$ba4acef3@news.orange.fr...
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
Alors comment dois-je écrire cette ligne de code ?
Emilie "Patrice" <http://www.chez.com/scribe/> a écrit dans le message de news:
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" a écrit dans le message de groupe de 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" <http://www.chez.com/scribe/> a écrit dans le message de news:
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" a écrit dans le message de groupe de 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
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
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 ???) ?
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 ???) ?