Vous connaissez mon point de vue sur les TableAdapters: ce ne sont pas mes grands amis. Mais comme ils permettent de créer des formulaires simplement sous Visual Studio 2005, j'apprends à vivre avec pour simplifier la vie de mes clients.
Pour chaque TableAdapter, on peut créer des requêtes qui seront stockées dans la définition du DataSet typé et accessibles en tant que méthodes du TableAdapter. Pour leur passer des paramètres, j'étais habitué à utiliser des requêtes du style:
SELECT Champ FROM Table WHERE Valeur = @Param
Mais, à ma grande surprise, ça ne fonctionnait plus. Pourquoi? Parce que j'utilisais Access. Dans ce cas, la requête doit être du style:
SELECT Champ FROM Table WHERE Valeur = ?
J'ai eu du mal à trouver cette réponse, et je ne suis pas le seul si on en juge ces articles sans réponse correcte: article 1, article 2.
En fait, c'est le provider utilisé qui détermine la façon de nommer les paramètres: avec SqlClient c'est les "@", tandis qu'avec OleDb ou Odbc c'est les "?". Toutes les informations sont ici. Vive l'homogénéité!
Pour chaque TableAdapter, on peut créer des requêtes qui seront stockées dans la définition du DataSet typé et accessibles en tant que méthodes du TableAdapter. Pour leur passer des paramètres, j'étais habitué à utiliser des requêtes du style:
SELECT Champ FROM Table WHERE Valeur = @Param
Mais, à ma grande surprise, ça ne fonctionnait plus. Pourquoi? Parce que j'utilisais Access. Dans ce cas, la requête doit être du style:
SELECT Champ FROM Table WHERE Valeur = ?
J'ai eu du mal à trouver cette réponse, et je ne suis pas le seul si on en juge ces articles sans réponse correcte: article 1, article 2.
En fait, c'est le provider utilisé qui détermine la façon de nommer les paramètres: avec SqlClient c'est les "@", tandis qu'avec OleDb ou Odbc c'est les "?". Toutes les informations sont ici. Vive l'homogénéité!
Comments