Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 13.06.2007, 16:34   #1
Elena
Пользователь
 
Аватар для Elena
 
Регистрация: 27.04.2007
Сообщений: 31
По умолчанию Ошибка при выполнении запроса

Добрый день!

Цитата:
//ADOQuery1 = 'SELECT * FROM Material_type '

ADOQuery2.Close; //данные о месте хранения - материале,соответствующему выбранному виду материала
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('SELECT Place_storage.id_place_storage,Plac e_storage.id_place_storage_type, ');
ADOQuery2.SQL.Add('Place_storage_ty pe.comment,Place_storage.id_materia l,Material.num_part ');
ADOQuery2.SQL.Add('FROM Material_type INNER JOIN (Material INNER JOIN ');
ADOQuery2.SQL.Add('(Place_storage_t ype INNER JOIN Place_storage ON ');
ADOQuery2.SQL.Add('Place_storage_ty pe.id_place_storage_type = Place_storage.id_place_storage_type ) ');
ADOQuery2.SQL.Add('ON Material.id_material = Place_storage.id_material) ');
ADOQuery2.SQL.Add('ON Material_type.id_material_type = Material.id_material_type ');
ADOQuery2.SQL.Add('WHERE (Material.id_material_type = '+ADOQuery1.FieldByName('id_materia l_type').AsString+')');
ADOQuery2.Open;

ADOQuery3.Close; //данные о поступлении-отправке материала
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add('SELECT Place_storage.date_receipt,Place_st orage.id_whence,QWhence1.comment, QWhence1.stage_name, ');
ADOQuery3.SQL.Add('Place_storage.id _sending,QSWhere1.comment,QSWhere1. stage_name,Sending.date_sending ');
ADOQuery3.SQL.Add('FROM (Sending INNER JOIN ((Material_type INNER JOIN ');
ADOQuery3.SQL.Add('(Material INNER JOIN (Place_storage_type INNER JOIN Place_storage ON ');
ADOQuery3.SQL.Add('Place_storage_ty pe.id_place_storage_type = Place_storage.id_place_storage_type ) ');
ADOQuery3.SQL.Add('ON Material.id_material = Place_storage.id_material) ON ');
ADOQuery3.SQL.Add('Material_type.id _material_type = Material.id_material_type) ');
ADOQuery3.SQL.Add('INNER JOIN QWhence1 ON Place_storage.id_whence = QWhence1.id_whence) ON ');
ADOQuery3.SQL.Add('Sending.id_sendi ng = Place_storage.id_sending) ');
ADOQuery3.SQL.Add('INNER JOIN QSWhere1 ON Sending.id_where = QSWhere1.id_where ');
ADOQuery3.SQL.Add('WHERE (Place_storage.id_place_storage= ' + ADOQuery2.FieldByName('id_place_sto rage').AsString + ')');
ADOQuery3.Open;
При выполнении запроса ADOQuery3 выдает ошибку: "Лишняя скобка ) в выражении запроса '(Place_storage.id_place_storage= )'"
Почему выдает такую ошибку?

Заранее спасибо
Elena вне форума Ответить с цитированием
Старый 14.06.2007, 14:01   #2
Still_Learn
Пользователь
 
Регистрация: 30.05.2007
Сообщений: 16
По умолчанию

Вообще-то прежде чем запрос в Query забрасывать хорошо бы его работоспособность проверить выполнив его в СУБД... А так сходу, похоже ADOQuery2.FieldByName('id_place_sto rage').AsString ничего не содержит
Still_Learn вне форума Ответить с цитированием
Старый 14.06.2007, 14:16   #3
Elena
Пользователь
 
Аватар для Elena
 
Регистрация: 27.04.2007
Сообщений: 31
По умолчанию

Запрос работоспособный
Возможно нужно сделать проверку на наличие данных в БД, а как это сделать не знаю
Elena вне форума Ответить с цитированием
Старый 14.06.2007, 15:13   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,538
По умолчанию

вапще лучше бы это заменить на параметр. Заменяешь в ADOQuery3.SQL ADOQuery2.FieldByName('id_place_sto rage').AsString на :bugoga.
после заполнения ADOQuery3.SQL пишешь:
ADOQuery3.Parameters.ParamByName('b ugoga').Value := ADOQuery2.FieldByName('id_place_sto rage').Value.
Или же можно соедить ADOQuery2 и ADOQuery3 как мастер-деталь. Тогда параметр называешь не bugoga, а id_place_storage. Ну соответственно для связывания мастер-деталь у ADOQuery3 свойство DataSource устанавливешь в тот, что связан с ADOQuery2. И тогда параметр будет автоматически подставляться. Правда я в свое время от этого отказался, т.к. в некоторых запросах хз почему не работало
pu4koff вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
при выполнении запроса в столбце "Дата сдачи" оставить даты, которые соответствуют введенному месяцу klukva666 Microsoft Office Access 5 10.03.2008 18:52
При выполнении запроса из проекта пропадает связь с сервером D-mon БД в Delphi 4 19.11.2007 13:24
Ошибка при выполнении запроса Шани БД в Delphi 4 27.07.2007 13:04
Странная ошибка при выполнении okolobaxa Общие вопросы Delphi 2 03.07.2007 00:47
Ошибка при выполнении запроса Elena БД в Delphi 2 25.05.2007 16:19


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS