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


Автор: vslabchenko 5.5.2009, 15:40
День добрый! Помогите,пожалуйста,разобраться.Есть две таблицы- Области(OblastID,Name_Oblast) и Контрагенты(ContragentsID,Oblast и т.п.).В таблице Contragents в поле Oblast данные выводятся в цифровом виде,а в поле Name_Oblast таблицы Oblast- в текстовом, именно сами названия областей.Связаны по полям OblastID-Oblast. На форме есть Grid,Edit,Button. В Gride все отображается отлично,проблемы наступают когда пытаюсь произвести выборку из базы Contragents о полю Oblast.Делаю так:

DataModule.QueryContragents.Active:=false;
DataModule.QueryContragents.SQL.Clear;
DataModule.QueryContragents.SQL.Add('SELECT*');
DataModule.QueryContragents.SQL.Add('FROM Contragents,Oblast');
DataModule.QueryContragents.SQL.Add('WHERE Contragents.Oblast=Oblast.OblastID '''+Edit2.Text+'''');
DataModule.QueryContragents.Active:=true;

В итоге при запуске приложения, вводе в Edit необходимого значения области и нажатии на Button работа приложения заканчивается и выдается сообщение :Project raised exception class EOIeException with message 'Line3:Incorrect syntax near 'Минская'.Process stopped.'
Помогите,пожалуйста,запутался... 

Автор: Akella 5.5.2009, 16:22
Цитата(vslabchenko @  5.5.2009,  15:40 Найти цитируемый пост)
SELECT*

а пробелы...

Добавлено через 21 секунду
И оформи код тэгами, как положено.

Добавлено через 1 минуту и 29 секунд
Для большей читабельности лучше так:
Код
DataModule.QueryContragents.SQL.Add('WHERE Contragents.Oblast=Oblast.OblastID ' + QuotedStr(Edit2.Text));

Автор: Keeper89 5.5.2009, 16:47
Цитата(Akella @  5.5.2009,  16:22 Найти цитируемый пост)
Для большей читабельности лучше так:

По-моему с параметрами будет еще лучше.

Автор: insoft 5.5.2009, 17:41
vslabchenko, судя из ошибки, то неверный синтаксис
проще всего проверь запрос который у тебя получается
Код

ShowMessage(QueryContragents.SQL.text)
  smile 

Автор: vslabchenko 7.5.2009, 16:44
Спасибо всем ответившим, но это все не то... 

Автор: Kbl4AH 8.5.2009, 07:44
Цитата(vslabchenko @  5.5.2009,  16:40 Найти цитируемый пост)
DataModule.QueryContragents.SQL.Add('WHERE Contragents.Oblast=Oblast.OblastID '''+Edit2.Text+'''');

это что такое? как ты это представляешь с точки зрения запроса?
Код

... WHERE Contragents.Oblast=Oblast.OblastID 'Минская' 

надо, наверное, так...
Код

select * from contragents, oblast where contragents.oblast = oblast.oblastid and oblast.name_oblast = 'Минская' 

То есть
Код

DataModule.QueryContragents.SQL.Add('WHERE Contragents.Oblast=Oblast.OblastID and oblast.name_oblast = ' + QuotedStr(Edit2.Text));

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