![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
после выполнения SQL запроса результат не отображается [D7, Paradox]
Алексей © (2004-08-09 13:35:00)Здравствуйте.
Собственно это и есть вопрос. После выполнения SQL запроса результат не отображается в DBGrid. Даже столбцов становится не видно, как будто нет подключения к базе данных. Тоесть когда программа запускается, то всё работает как задано в начале на этапе разработки, а потом, когда меняю SQL запрос програмно, в DBGrid ничего не видно.
DataModule2.Query1.Close;
DataModule2.Query1.SQL.Clear;
DataModule2.Query1.SQL.Add('SELECT M.id');
DataModule2.Query1.SQL.Add('FROM "Main_FIO.db" As M, "Adress.db" As A, "Pasport.db" As P, "Rozisknoe_Delo.db" As RD');
DataModule2.Query1.SQL.Add('WHERE ' + s_GreatFilter + ';');
DataModule2.Query1.Open;
Здесь s_GreatFilter програмно созданное условие запроса типа M.DataRojdeniya = "31.12.2000".
Нужно отобрать ключевые поля M.id записей таблицы Main_FIO.db отвечающих заданному условию s_GreatFilter .
Что я делаю неправильно?
Алексей (2004-08-09 16:45:00) [21]Снимаю Шляпу.
Всё работает.
где ж я тогда промазал???
Соловьев (2004-08-09 16:35:00) [22]
> Дак и я не отцеплял, вроде... :)
создай новое приложение положи грид, сорс,кверю и две кнопки.
Свжи сорс с кверей. а грид с сорсом. А по кнопкам распиши открытие разных таблиц типа
procedure TForm1.Button1Click(Sender: TObject);
begin
with Query1 do
begin
if active then Close;
SQL.Clear;
SQL.Add('select * from table1');
Open;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
with Query1 do
begin
if active then Close;
SQL.Clear;
SQL.Add('select * from table2');
Open;
end;
end;
запусти и попробуй.
Алексей (2004-08-09 16:33:00) [23]Дак и я не отцеплял, вроде... :)
Sergey13 (2004-08-09 16:33:00) [24]Есть определенный запрос с полями вывода. На нем стоит грид с прописанными в дизайне полями и т.д. Вдруг в запросе меняется ВСЕ. Даже если сам по себе запрос корректен...
Соловьев (2004-08-09 16:26:00) [25]
> [40] Алексей (09.08.04 16:25)
сама она не отцепляется.
Алексей (2004-08-09 16:25:00) [26]Val ©
тоесть сама сетка отцепляется, и если после выполнения запроса её обратно прицепить програмно, то всё заработает? МЫСЛЬ. надо попробовать.
Алексей (2004-08-09 16:22:00) [27]Для Val ©
согласен, но я меняю SQL запрос по форме
DataModule2.Query1.Close;
...
DataModule2.Query1.Open;
сам грид от DataSourse не отвязываю, работаю только с TQuery? почему же он не привязывается обратно???
Sergey13 (2004-08-09 16:19:00) [28]2[35] Val © (09.08.04 16:16)
>согласитесь, гриду все-равно что отображать :)
Согласен, если ему внятно объяснить, то да. 8-)
Val (2004-08-09 16:18:00) [29]>[34] Алексей (09.08.04 16:13)
Не обязательно. Вы можете также отцепить его от сетки, хотя запрос. отработает.Соответсвенно, сетка ничего не покажет.
Проверьте свои ощущения с помощью пошагового выполнения.
Алексей (2004-08-09 16:17:00) [30]Для Val ©
И как его привязать :)
Для Sergey13 ©
Аналогия понятна и в общем с ней согласен, и как конкретно поступать в моём случае, да и вообще, на будущее?
Val (2004-08-09 16:16:00) [31]>[32] Sergey13 © (09.08.04 16:13)
согласитесь, гриду все-равно что отображать :)
Val (2004-08-09 16:13:00) [32]Какая непонятка? Вы закрываете/отвязываете набор данных, который "привязан" к сетке - DBGrid1.Datasource.DataSet. И TDataBase здесь не причем, если все остальное продолжает работать.
Алексей (2004-08-09 16:13:00) [33]Ощущение такое что почему то TQuery отключается от DataBase а обратно не подключается...
Sergey13 (2004-08-09 16:13:00) [34]2[31] Алексей (09.08.04 16:09)
Стоят два дома. Один на постоянном фундаменте - нормальный. Другой - на фиг знает каком, при быстрой смене фундамента - падает. Примерно такая аналогия. Вывод - строить нормально. ИМХО, не стОит менять запрос под гридом настолько кардинально.
Алексей (2004-08-09 16:09:00) [35]Sergey13 ©
Так я ж об этом и говорю. База данных не закрывается (элемент DataBase), потому что к ней паралельно присоеденены и TTable и TQuery? на обоих повешаны гриды (через DataSourse) и тот что на TQuery после запроса умирает а на TTable продолжает жить и работать. Вот в чём непонятка.
Sergey13 (2004-08-09 16:03:00) [36]2Алексей (09.08.04 15:56)
>По идее он должен отобразить все поляid таблицы Main_FIO.db
>SELECT M.idFROM
>грид умирает и без него
Значит думай над [18]
Алексей (2004-08-09 16:02:00) [37]Для Соловьев ©
Add All Fields на Query работает (на этапе программирования), на гриде список пустой, поэтому, если я не ошибаюсь, грид заполняется в соответствии с полями таблицы? по правой кнопке предлагает редактор колумнов :)
Алексей (2004-08-09 15:56:00) [38]Для Sergey13 ©
согласен, забыл показать скобки, в программе они есть, прописал лишний SELECT и пара неточностей с моей стороны в общем исправляю
SELECT M.id
FROM "Main_FIO.db" As M, "Adress.db" As A, "Pasport.db" As P, "Rozisknoe_Delo.db" As RD
WHERE (M.Familiya LIKE "%АБВ%") AND (M.Imiya LIKE "%АБВ%")
AND (A.A_TipAdresa LIKE "%АБВ%" AND M.ID=A.A_Main_ID) AND (P_PNomerPasprta LIKE "%АБВ%" AND M.ID=P.M_ID) AND (RD_NomerRD LIKE "%АБВ% AND M.ID=RD.M_ID)
это пример получаемого запроса ко всем таблицам по результатам которого должны отбираться записи в главной таблице.
Так это задумывалось.
но вопрос не в запросе :), грид умирает и без него, SELECT *
FROM Main_FIO.db програмно и он умер.
Соловьев (2004-08-09 15:43:00) [39]2 Алексей
Так что там по посту [14]?
Sergey13 (2004-08-09 15:40:00) [40]2[25] Алексей (09.08.04 15:36)
Соловьев ©
>По идее он должен отобразить все поля id таблицы Main_FIO.db
Идея не воплощена в жизнь.