Je suis en train d'exécuter cette requête:accès paramétrés IN() requête
SELECT * FROM Tabela1 WHERE Pole1 IN (@parameter)
Lorsque la fenêtre avec « choisir la valeur » apparaît, je mets: « 10, 50 » et je reçois 0 lignes (devrait être 2).
Lorsque je mets seulement "10", ou seulement "50" cela fonctionne et renvoie 1 ligne pour chaque requête. J'utilise Access 2013 - que fais-je de mal?
using (DbConnection connection = new T())
{
connection.ConnectionString = query.DatabaseConnection.ConnectionString;
using (DbCommand command = connection.CreateCommand())
{
command.CommandText = query.QuerySql.Sql;
command.CommandType = CommandType.Text;
command.CommandTimeout = query.QuerySql.CommandTimeout;
if (query.QuerySql.Parameters != null)
{
foreach (var parameter in query.QuerySql.Parameters)
{
var commandParameter = command.CreateParameter();
commandParameter.ParameterName = $"@{parameter.Name}";
commandParameter.Value = parameter.Value;
command.Parameters.Add(commandParameter);
}
}
je crée la requête comme ça:
QuerySql sql = new QuerySql("SELECT * FROM Tabela1 WHERE Pole1 IN(@parameter)", new List<ISqlParameter>()
{
new SqlMultiNumberParameter("parameter", new List<string>() { "10", "50" }, "Test parameter")
});
la parameter.value retourne la chaîne comme ça: "10, 50"
Meilleures salutations
Michael
Parce qu'un seul paramètre ne peut pas représenter deux (ou plus) valeurs – Steve
S'il vous plaît montrer le code que vous avez utilisé pour construire le paramètre et l'appel à votre base de données – Steve
de sorte qu'il ne résout pas "10, 50" en IN (10, 50)? – Roofy