Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2010, 13:14   #1
Evgen1503
Пользователь
 
Регистрация: 02.05.2009
Сообщений: 42
По умолчанию Ошибка SQL запроса по полю тип Date

Необходимо сделать выборку по полю тип date, проблема в следующем, когда я делаю SQL запрос ругается на "Date", т. к. само поле имеет название "date". Если конечно можно было бы то я в таблице изменил имя поля например на "Date1", но нельзя не только я один работаю с ней. Может можно как то исправить эту ситуацию, не переименовывая имя поля.
Evgen1503 вне форума Ответить с цитированием
Старый 01.07.2010, 13:36   #2
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

какая СУБД? Попробуйте взять название поля в квадратные скобки (если акцесс) [date]. или знак апострофа (если MySQL) `date`
Еще не мешало бы код запроса, может он ругается не на название поля а на формат переменной которую вы посылаете для сравнения в date?

Последний раз редактировалось S@fer; 01.07.2010 в 13:39.
S@fer вне форума Ответить с цитированием
Старый 01.07.2010, 13:37   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Заключи имя поля в [] или в ""
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.07.2010, 13:55   #4
Evgen1503
Пользователь
 
Регистрация: 02.05.2009
Сообщений: 42
По умолчанию

база dBase.
сам запрос
Код:
with Query2.SQL do
begin
      Query2.Active:=FALSE;
      Query2.SQL.Clear;
      add('select sum(TOWARZ) ');
      add('from ost_ga');
      add('where date<'''+datetostr(DateTek)+'''');
      Query2.Active:=true;
end;
Если беру в Квадратные скобки то тоже ругается, а если апостроф то ничего не находит

Последний раз редактировалось Stilet; 01.07.2010 в 14:41.
Evgen1503 вне форума Ответить с цитированием
Старый 01.07.2010, 14:02   #5
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

Попробуйте так:
Код:
Query2.close;
Query2.sql.text:='select sum(TOWARZ) from ost_ga where `date`<'+FormatDateTime('dd.mm.yyyy',DateTek);
Query2.open;
На счет формата даты не уверен (возможно в dbase формат будет 'MM/DD/YYYY')

Последний раз редактировалось S@fer; 01.07.2010 в 14:04.
S@fer вне форума Ответить с цитированием
Старый 01.07.2010, 14:17   #6
Evgen1503
Пользователь
 
Регистрация: 02.05.2009
Сообщений: 42
По умолчанию

Тоже ругается, пишет
Invalid use of keyword.
token: `date`='01.06.2010'
Evgen1503 вне форума Ответить с цитированием
Старый 01.07.2010, 14:43   #7
Kemperok
Пользователь
 
Регистрация: 04.06.2010
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Evgen1503 Посмотреть сообщение
add('where date<'''+datetostr(DateTek)+'''');
А для чего ты преводишь дату в строковый формат?
И в каком формате у тебя само поле date?
Kemperok вне форума Ответить с цитированием
Старый 01.07.2010, 14:56   #8
GenniY
Форумчанин
 
Регистрация: 09.09.2009
Сообщений: 181
По умолчанию

попробуй to_date('dd.mm.yyyy', DateTek)
Получил помощь — отблагодарил.
GenniY вне форума Ответить с цитированием
Старый 01.07.2010, 15:01   #9
Evgen1503
Пользователь
 
Регистрация: 02.05.2009
Сообщений: 42
По умолчанию

Да дело то не в формате даты, а в том что само поле таблицы называется "Date", я переименовываю имя поля в "Date1" и все нормально работает, да только я не могу в родной базе изменить.
Evgen1503 вне форума Ответить с цитированием
Старый 01.07.2010, 16:13   #10
Kemperok
Пользователь
 
Регистрация: 04.06.2010
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Evgen1503 Посмотреть сообщение
Да дело то не в формате даты, а в том что само поле таблицы называется "Date", я переименовываю имя поля в "Date1" и все нормально работает, да только я не могу в родной базе изменить.
Тогда есть нестандартное решение, добавь в базу запрос всех полей из этой таблицы и переименуй в запросе поле типа select date as date1 from ... и работай не с таблицей, а с запросом, в котором поле уже будет называться date1.
Kemperok вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка запроса в SQL ==Terman== Microsoft Office Access 3 20.04.2010 19:12
Помогите с запросом SQL. Ошибка синтаксиса в выражении запроса. ZiG24RUS Microsoft Office Access 1 19.05.2009 06:29
Ошибка Sql запроса Yrok БД в Delphi 8 13.03.2009 09:08
Как осуществить поиск сначала по всей БД, а затем из найденных таблиц найти по полю Date нужные записи? kayman БД в Delphi 1 21.09.2007 15:56