Microsoft Access Database Engine 2010 распространяемый

у заполнить раскрывающийся список во время выполнения в C #. У меня есть поле даты / времени (например, 01.05.2000) в базе данных Access 2003. Я хочу, чтобы название месяца (то есть январь, февраль, ...) в раскрывающемся списке во время выполнения.

SELECT DISTINCT MonthName(Month(DATE_OF_BOOKING)) AS MNTH 
    FROM TRAVEL_DETAILS WHERE YEAR(DATE_OF_BOOKING)='2008' 

Приведенный выше запрос работает нормально, когда я запускаю его из Access напрямую, но когда я пытаюсь запустить его изOledbCommand объект в C # это говорит

Неопределенная функция 'MonthName' в выражении.

 Shekhar_Pro18 янв. 2011 г., 06:39
если он работает в доступе, почему бы вам не сделать хранимую процедуру запроса ... (просто мысль)
 David-W-Fenton19 янв. 2011 г., 01:16
Из соображений производительности я бы предложил, чтобы ваше предложение WHERE былоWHERE DATE_OF_BOOKING BETWEEN #1/1/2008# AND #12/31/2008#, Я не знаю, что вашему интерфейсу OLEDB нужно использовать разделители даты Jet / ACE или если вы можете использовать одинарные кавычки, и он преобразуется. Дело в том, что использование функции Year () не сможет использовать индекс для этого поля (при условии, что он есть).

Ответы на вопрос(1)

нить:

Пользовательские функции VBA, написанные пользователем, а также многие встроенные функции языка VBA выполняются Microsoft Access при внедрении в запрос SQL. К сожалению, функции, доступные для ядра базы данных Jet, ограничены (при выполнении через ADO, ADO.NET и т. Д.). Вы можете найти список доступных в следующей статье MS KB:

Как настроить Jet 4.0 для предотвращения запуска небезопасных функций в Access 2003.

РЕДАКТИРОВАТЬ: Используйте метод Format ().

SELECT DISTINCT  format(DATE_OF_BOOKING,'MMMM') 
   AS MNTH FROM TRAVEL_DETAILS WHERE YEAR(DATE_OF_BOOKING)='2008'
 Dipayan18 янв. 2011 г., 07:01
нет ли другого пути?
 Fionnuala18 янв. 2011 г., 10:57
Формат также позволит вам выбрать номер, краткое или полное название месяца в зависимости от количества используемых вами Ms.
 adatapost18 янв. 2011 г., 09:01
Используйте функцию Формат.

Ваш ответ на вопрос