Запрос с параметрами отлично работает в базе данных MS Access.Но когда я предоставляю те же параметры из приложения C # winforms, он не возвращает никаких записей.Если параметр передается в запрос, он будет использовать этот параметр в предложении where, в противном случае он извлечет все записи.
пример данных таблицы шины:
![enter image description here](https://i.stack.imgur.com/Rctw8.png)
Запрос Ms-Access:
PARAMETERS parPlateNo Text ( 255 );
SELECT bus.*
FROM bus
WHERE (((bus.plateNo) Like IIf(IsNull([parPlateNo]), True ,"%" & [parPlateNo] & "%")));
C # Код:
using (OleDbConnection conn = new OleDbConnection(myGlobals.connString))
{
using (OleDbDataAdapter adapter = new OleDbDataAdapter())
{
using (OleDbCommand cmd = conn.CreateCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "qryBus";
if(plateNo == "")
cmd.Parameters.AddWithValue("?", DBNull.Value);
else
cmd.Parameters.AddWithValue("?", plateNo);
adapter.SelectCommand = cmd;
dsDetails = new DataSet();
adapter.Fill(dsDetails, "details");
}
}
}
PlateNo - это текстовый столбец.
Замечания : Если я удаляю оператор like в запросе доступа ms и запускаю тот же код в C #, он будет отлично работать и извлекать все записи в таблице.
После этого я отображаю данные в datagridview с использованием bindingsource.
Почему это происходит?