Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.04;
Скачать: CL | DM;

Вниз

Переключение DataSource в runtime   Найти похожие ветки 

 
Crazzy ©   (2004-06-10 13:17) [0]

Есть такой кусок кода

form:=TForm(Application.FindComponent(formName));
ds := TDataSource.create(self);
ds := TDataSource(form.FindComponent(dsName));
Query1.SQL.Clear;
//Query1.Parameters.Clear;
//Query1.DataSource := nil;
//Query1.Active:=false;
Query1.DataSource:=ds;
ds.destroy;

Первый раз отрабатывает нормально, когда второй раз вызывается последняя строка с другим DataSource, выкидывает ошибку, что не найден параметр. Имя параметра он почему-то берёт из старого DataSource, что бы я ни писал.

Help plz!!!


 
Курдль ©   (2004-06-10 13:20) [1]

А зачем это все?
(Особенно ds.destroy;)


 
Crazzy ©   (2004-06-10 13:41) [2]

Просто текст запроса и количество параметров в нём зависит от того, на каком пункте меню кликнули. Поэтому то и приходится менять DataSource и сам текст запроса. Насчёт ds.destroy - не знаю, может и на самом деле не надо. Отлаживаю этот кусок чуть ли не неделю :)


 
Курдль ©   (2004-06-10 14:33) [3]

У меня такое впечатление, что Вы получили форму от чужого дяди и единственное, что Вам известно - это текстовые наименования объектов... :(


 
HSolo ©   (2004-06-10 15:14) [4]

>Поэтому то и приходится менять DataSource и сам текст запроса
Даже если меняется текст запроса, зачем DataSource-то пересоздавать? Если нужно разорвать связь DataSource с Query, то достаточно:
DataSource.DataSet := nil;
// действия с Query1
DataSource.DataSet := Query1;


 
Sandman25 ©   (2004-06-10 15:22) [5]

Crazzy ©   (10.06.04 13:17)

Попробуйте создать Query1 заново


 
Курдль ©   (2004-06-10 15:27) [6]

Да что вы все за советы даете? Пусть научится к объектам доступаться и узнает, как их создавать / освобождать ресурсы.


 
Anatoly Podgoretsky ©   (2004-06-10 15:30) [7]

А вот это еще более странное

ds := TDataSource.create(self);
ds := TDataSource(form.FindComponent(dsName));

Признайся у кого такой текст взял?


 
HSolo ©   (2004-06-10 15:33) [8]

Для начала пусть учится правильно ставить задачу, а потом - решать ее оптимальным способом :) Может, там ничего и (пере)создавать не надо


 
Sandman25 ©   (2004-06-10 15:39) [9]

All

Недавно кто-то жаловался на похожую ситуацию - при присвоении Query.DataSource сохранялись ссылки на Param из предыдущего DataSource.


 
sniknik ©   (2004-06-10 15:51) [10]

Sandman25 ©   (10.06.04 15:39) [9]
если код такого же плана (по обкурке видать писали), то еще и не такие чудеса возможны.

Crazzy ©   (10.06.04 13:17)
две строчки лишние (если вообще об этом можно судить без задачи)
ds := TDataSource.create(self);
и
ds.destroy;
убери их, работать будет лучше, и еще лучше(просто таки здорово будет работать) если сделаеш датамодуль и не будеш компоненты по формам искать.


 
sniknik ©   (2004-06-10 15:59) [11]

кстати, вполне возможно что вот это
ds := TDataSource(form.FindComponent(dsName));
будет примерно эквивалентно этому
ds:= TDataSource(0);
даже в первый раз, второй то раз гарантировано.



Страницы: 1 вся ветка

Текущий архив: 2004.07.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
4-1085583541
Dubensky
2004-05-26 18:59
2004.07.04
Открыть на чтение/запись файлы открытые виндой.


14-1087241665
KilkennyCat
2004-06-14 23:34
2004.07.04
Не кодом единым жив программист.


8-1082045857
Gerz
2004-04-15 20:17
2004.07.04
Изображение на Scrollbox.canvas мерцает и пропадает по краям.


1-1087889155
Chery
2004-06-22 11:25
2004.07.04
Как узнать окончание файла?


10-1017300695
AnatolyG
2002-03-28 10:31
2004.07.04
Вопрос по поводу использования персистентных CORBA и EJB объектов