если я понимаю, что вы хотите сделать, вы хотите заполнить набор данных с помощью адаптера OleDb для MS Access, а затем отфильтровать этот набор данных с помощью запроса сверху. Это правильно?
Если это так, то столбцы даты в возвращаемом наборе данных должны содержать типы DateTime, и вы должны иметь возможность просто запрашивать набор данных с помощью LINQ. Нажмите здесь для статьи блога ADO.NET о том, как это сделать.
Ваше выражение LINQ будет выглядеть примерно так:
var query = from r in MyDataSet.Tables["LicenseDetails"].AsEnumerable()
where r.Field<DateTime>("Date_of_Installation") >= new DateTime(6,8,2009,13,31,10)
&& r.Field<DateTime>("Date_of_Installation") <= new DateTime(10,9,2009,14,54,57)
select r;
FYI instr(1,"+ArgName+",'" + Value + "')
возвращает целое число, которое представляет собой позицию Value в ArgName, начиная с позиции 1, или ноль, если она не найдена. Если они заданы как строковые литералы, он просто вернет ноль, который Access, вероятно, интерпретирует как false в предложении Where и не возвращает никаких результатов. Если вы хотите получить позицию строки внутри другой в C#, используйте string.IndexOf()
, если вы хотите узнать, содержит ли одна строка другую, используйте string.Contains()
Также обратите внимание, что between..and
в Access включает начальную/конечную точки, как и LINQ выше. .
04.10.2009