Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Ошибка в sql запросе


Автор: dimafeng 13.7.2006, 06:45
Невыполняет следущий код:
Код

query1.SQL.add('SELECT nameof, date');
query1.SQL.add('FROM "medc.db"');
query1.SQL.add('WHERE');
query1.SQL.add('("Key"="'+DBGrid1.Fields[0].Text+'")');

ругается либо на date, либо при запросе вообще ничего не выводит.

key числовое поле.
 

Автор: ТоляМБА 13.7.2006, 07:01
Зачем Key заковычен? Если потому что это ключевое слово, тогда date надо тоже заковычивать. А так пока нет:
Обязательно указание:
1. Базы данных (Paradox, Oracle и т.п.)
2. Способа доступа (ADO, BDE и т.д.)

 smile 
 

Автор: vv3 13.7.2006, 11:08
Пробелы в конце строк добавь.... smile  

Автор: kulikoff 13.7.2006, 11:22
или в начале каждой новой строки)))) 

Автор: bas 13.7.2006, 12:01
Код

query1.SQL.add('SELECT nameof, [date]');
query1.SQL.add('FROM "medc.db"');
query1.SQL.add('WHERE');
query1.SQL.add('([Key]='+DBGrid1.Fields[0].Text+')');


Добавлено @ 12:03 
Цитата(dimafeng @  13.7.2006,  06:45 Найти цитируемый пост)
ругается либо на date, 

Желательно не называть поля зарезервироваными словами (Reserved words). 

Автор: dimafeng 15.7.2006, 16:02
Цитата

Желательно не называть поля зарезервироваными словами (Reserved words).  


Все заработало, когда я поменял имена полей date и key.

всем спасибо. 

Автор: Ramin 17.7.2006, 10:02
2dimafeng  нужно параметры исползывать,  параметры!

Код

query1.close;
 query1.SQL.Clear; 
 query1.SQL.add('SELECT nameof, date');
 query1.SQL.add('FROM "medc.db"');
 query1.SQL.add('WHERE Key=:key');
  query1.parambyname('key').asinteger:=strtoint(DBGrid1.Fields[0].Text);
query1.open;
 

Автор: Akella 20.7.2006, 09:23
key и date советую заменть на id и data, например, т.к это могут быть ключевые слова 

Автор: kostas 21.7.2006, 15:41
имхо проще запрос задавать текстом, для перевода строки использовать #13#10, к примеру:
Код

...
Query1.SQL.Text:='SELECT *'+#13#10+
                 'FROM database_name';
...


и еще один момент: желательно все же в запросе указывать одиночные кавычки ;)

т.е. вот так:
Код

query1.SQL.Text:='SELECT nameof, [date]'+#13#10+
                 'FROM ''medc.db''';
                 'WHERE'+#13#10+
                 '[Key]='+DBGrid1.Fields[0].Text;
  

Автор: Akella 27.7.2006, 09:44
kostas,  а зачем #13#10???
что так нельзя?
Код
Query1.SQL.Text:='SELECT * FROM database_name';

или так
Код
Query1.SQL.ADD('SELECT * FROM database_name');
 

Автор: kostas 29.7.2006, 08:52
конечно можно, но если запрос огромен, то в одну строку все писать неудобно. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)