Получить имя даты из SQL на DELPHI

Я использую Delphi XE2 и SQL Server 2005 Express.

У меня есть таблица с именем обслуживания со столбцами:

id Integer;
Activity Varchar(x); = actividad
Description Memo; = descripcion
Day Integer;= dia_sem
User Integer; = usuario

id, activity, description, day, user

Я использую эту таблицу для регистрации операций обслуживания, которые должны выполняться каждый день, так как в понедельник они должны убирать за x или y и т. Д., По вторникам они должны делать что-то еще и т. Д.

Я сохраняю день с 1 по 7 с воскресенья =1 до субботы =7, чтобы программа извлекала все действия, где queryday.text= DayOfWeek(сейчас), и предупреждала пользователей о том, что есть действия, которые нужно отменить.

Моя проблема в том, что я хочу показать в DBGrid день с полным именем, а не в виде числа.

Sunday
Monday 
Tuesday etc.

На SQL я получаю полное имя дня, используя:

Select id AS ID, actividad AS Actividad, descripcion AS Descripcion,(datename(weekday, dia_sem-2)) AS Dia, usuario AS Usuario
from mantenimiento

я поставил dia_sem-2 так что это будет соответствовать день, я хочу (по-видимому, вторник =1)

Моя проблема заключается в том, что когда я добавляю этот запрос в запрос на delphi и добавляю поля, поле "день" не добавляется, оно не существует. Что я делаю неправильно или как я могу добиться того, что я пытаюсь сделать?

1 ответ

Решение

Вы сказали tQuery? Если я правильно помню, tQuery является компонентом BDE. BDE является устаревшей технологией, поэтому рекомендуется использовать более современный метод подключения к вашей базе данных.

При этом BDE не знает, как обращаться с строковым типом данных Unicode. (Я не уверен, что Unicode даже существовал, когда BDE был впервые сделан.)

Тип, возвращаемый функцией SQL Server DateName - nvarchar. 'N' означает, что это строка Unicode.

В качестве обходного пути вы можете привести результат к строке Ascii. Попробуйте что-то вроде этого:

приведение (дата (...) как varchar(20))

Другие вопросы по тегам