Формат DateTime в MS Access - PullRequest
       14

Формат DateTime в MS Access

4 голосов
/ 04 октября 2009

Я разработал модуль и храню данные в базе данных MS Access (MDB). Одно поле использует DateTime Name (Date_of_Installation) для справки. Записи хранятся нормально. Когда я получаю запись, используя OleDBDataAdaptor, чтобы заполнить DataSet для проблемы даты и времени, меняется формат в базе данных, чтобы изменить формат даты и времени в БД. Пример запроса

  command.CommandText = "Select * from LicenseDetails where 
    instr(1,"+ArgName+",'" + Value + "') and Date_of_Installation between 
#06/08/2009 1:31:10 PM# and #10/09/2009 2:54:57 PM#;

Я использую Visual Studio 2005. Как можно использовать Linq?

1 Ответ

7 голосов
/ 04 октября 2009

если я понимаю, что вы хотите сделать, вы хотите заполнить DataSet с помощью адаптера OleDb для MS Access, а затем отфильтровать этот DataSet с помощью запроса сверху. Это правильно?

Если это так, то столбцы даты в возвращенном наборе данных должны содержать типы 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 + "') возвращает значение типа int, представляющее собой значение Value в ArgName, начиная с позиции 1, или ноль, если оно не найдено. Если таковые даны как строковые литералы, он будет просто возвращать ноль, что Access, вероятно, интерпретирует как ложное в предложении Where и не возвращает результатов. Если вы хотите получить позицию строки внутри другой в C #, используйте string.IndexOf(), если вы хотите узнать, содержит ли одна строка другую, используйте string.Contains() Также обратите внимание, что between..and в Access включает начало / конечные точки, как и LINQ выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...