Rebonjour,
J'ai progressé sur mon problème.
Déjà, pour que la méthode Fill/GetData soit générée avec des paramètres, il faut apparemment que lesdits paramètres se trouvent dans la clause WHERE de la requête et pas ailleurs.
Ensuite, il est préférable de nommer distinctement chaque paramètre, même si on les voit comme un seul.
C'est en tout cas le cas quand on interroge une base de données Oracle, le comportement est peut-être différent avec un autre type de base de données.
Voici un nouvel exemple de requête par rapport à l'exemple que j'ai laissé avant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| SELECT 1 AS ID_TYPE, 'Type1_FR' AS LABEL
FROM DUAL
WHERE :lang1 = 'fr'
UNION
SELECT 1 AS ID_TYPE, 'Type1_DE' AS LABEL
FROM DUAL
WHERE :lang2 = 'de'
UNION
SELECT 2 AS ID_TYPE, 'Type2_FR' AS LABEL
FROM DUAL
WHERE :lang3 = 'fr'
UNION
SELECT 2 AS ID_TYPE, 'Type2_DE' AS LABEL
FROM DUAL
WHERE :lang4 = 'de'
ORDER BY ID_TYPE |
Du coup, l'appel de la fonction ressemble à ceci :
myTableAdapter.Fill(myDataTable, "fr", "fr", "fr", "fr")
... ou ceci :
myTableAdapter.Fill(myDataTable, "de", "de", "de", "de")
Je suis pas très fier de ce code que je trouve bof bof, mais honnêtement je n'ai pas trouvé d'autre solution pour l'instant.
Si, je pourrais très bien faire un Fill de tout, puis seulement après appliquer un filtre sur ma DataTable par exemple, mais je préfèrerais pouvoir le faire directement dans la requête car je n'aime pas rappatrier des données inutiles. L'exemple ici retourne très peu de données, mais je pourrais avoir beaucoup plus de lignes.
Si d'autres personnes peuvent proposer des solutions "plus propres", elles sont les bienvenues
Partager