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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 06.12.2011, 13:02   #1
brick08
Пользователь
 
Аватар для brick08
 
Регистрация: 29.11.2011
Сообщений: 12
По умолчанию Ошибка SQL запроса

Доброго времени суток!
Не работает код запроса, указанный в свойствах Query1:

SELECT * FROM :TTABLE WHERE (DATE>:IDATE)

Вот код общий:
Код:
procedure TForm1.TabSheet3Show(Sender: TObject);
var idate:TDate;
begin
if Query1.Active then Query1.Close;
//query1.SQL.Clear;
idate:=incmonth(Date,-1);
Query1.ParamByName('IDATE').Value := idate;
Query1.ParamByName('TTABLE').Value := 'CHL_ALF3';
//Query1.sql.add('SELECT * FROM CHL_ALF3 WHERE "DATE" >'+datetostr(idate));
//Query1.sql.add('SELECT * FROM :TTABLE WHERE (DATE>:IDATE)');
TRY
Query1.Open; 
EXCEPT
END;//try
Выдает ошибку:
Token unknown - line 1, char 14.
Подскажите в чем может быть ошибка?
База - Interbase. Может нельзя было поле называть DATE?
brick08 вне форума
Старый 06.12.2011, 13:27   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Цитата:
Код:
SELECT * FROM :TTABLE WHERE (DATE>:IDATE)
Здесь параметр нельзя использовать.
Код:
SQL.text:='SELECT * from ' +stringtablename + ' WHERE (DATE>:IDATE)';
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума
Старый 06.12.2011, 13:49   #3
brick08
Пользователь
 
Аватар для brick08
 
Регистрация: 29.11.2011
Сообщений: 12
По умолчанию

Сделал так:
Код:
procedure TForm1.TabSheet3Show(Sender: TObject);
var idate:string;
begin
if Query1.Active then Query1.Close;
idate:=datetostr(incmonth(Date,-1));
Query1.sql.add('SELECT * FROM CHL_ALF3 WHERE DATE >'+idate);
TRY
Query1.Open;
EXCEPT
END;//try
Но теперь выдает ошибку: Insufficient memory for this operation
В общем нужно сделать чтобы в ДБГрид занеслись данные только за последний месяц, но почему то не получается.
Перезапустил Делфи, теперь выдает ошибку:
Token unknown - line 1, char 23

Последний раз редактировалось brick08; 06.12.2011 в 13:58.
brick08 вне форума
Старый 06.12.2011, 14:55   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если бы внимательно посмотрели что evg_m написал, то ошибки бы не было
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 06.12.2011, 16:09   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

очистить надо запрос то!
Код:
Query1.sql.Clear;
и я бы дату передавал в запрос через параметер.
Это много надёжней!
Serge_Bliznykov вне форума
Старый 07.12.2011, 08:16   #6
brick08
Пользователь
 
Аватар для brick08
 
Регистрация: 29.11.2011
Сообщений: 12
По умолчанию

Сделал вот так:
Код:
procedure TForm1.TabSheet3Show(Sender: TObject);
var idate:TDate;
stringtablename:string;
begin
Query1.Close;
Query1.SQL.Clear;
idate:=incmonth(Date,-1);
stringtablename:='CHL_ALF3_ALF3';
Query1.Params.CreateParam(ftDate, 'IDATE', ptUnknown);
Query1.sql.Text:='SELECT * from ' +stringtablename+ ' WHERE (DATE > :IDATE)';
Query1.ParamByName('IDATE').Value:= idate;
TRY
Query1.Open;
EXCEPT
END;//try
Все равно выдает:
Token unknown - line 1, char 40

Последний раз редактировалось brick08; 07.12.2011 в 08:38.
brick08 вне форума
Старый 07.12.2011, 09:15   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Цитата:
Код:
stringtablename:='CHL_ALF3_ALF3';
Query1.Params.CreateParam(ftDate, 'IDATE', ptUnknown);
Query1.sql.Text:='SELECT * from ' +stringtablename+ ' WHERE (DATE > :IDATE)';
Query1.ParamByName('IDATE').Value:= idate;
Уберите выделенную строчку.
Цитата:
База - Interbase. Может нельзя было поле называть DATE?
Ну и поле конечно желательно переименовать.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума
Старый 07.12.2011, 09:32   #8
brick08
Пользователь
 
Аватар для brick08
 
Регистрация: 29.11.2011
Сообщений: 12
По умолчанию

Переименовал поле, заработало с Create. Без Create значение параметра принимало вещественный тип, а не дату.
И еще вопрос при запуске программы очень долго подключается к базе, хотя она локальная. В чем может быть причина?
brick08 вне форума
Старый 17.01.2012, 22:44   #9
progdelf
Новичок
Джуниор
 
Регистрация: 01.12.2011
Сообщений: 1
По умолчанию

Здравствуйте... подскажите пожалуйста такую тему связанную с подключением к бд SQL что это может быть?? и как это исправить ???
при подключений и выборе базы данных SQL выводит следующую ошибку
progdelf вне форума
Старый 18.01.2012, 11:31   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

progdelf, создавайте свою тему в подходящем разделе (например, я не уверен вообще, что у Вас Delphi!), чётко формулируйте вопрос - что за ЯП, какая СУБД, через что (какие компоненты) подключаетесь, код подключения и т.д.


А ЭТУ ТЕМУ Я ЗАКРЫВАЮ.
Serge_Bliznykov вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при создании SQL запроса ProgDel БД в Delphi 1 06.11.2010 22:05
Ошибка sql запроса при открытии формы R Dmitry Microsoft Office Access 0 08.07.2010 02:04
Ошибка запроса в SQL ==Terman== Microsoft Office Access 3 20.04.2010 19:12
Ошибка Sql запроса Yrok БД в Delphi 8 13.03.2009 09:08