Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];

Вниз

Переключение 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.032 c
4-1085460090
Alibaba
2004-05-25 08:41
2004.07.04
Мастера, не подскажите ли, как можно выделить определенный item в


3-1086538714
gfr
2004-06-06 20:18
2004.07.04
Как сделать Секундомер


3-1086785218
Ugrael
2004-06-09 16:46
2004.07.04
Запрос суммы по месяцам


11-1076271391
ecm
2004-02-08 23:16
2004.07.04
Menu и изменение DefaultItem


6-1083910586
atruhin
2004-05-07 10:16
2004.07.04
В каком потоке выполняется TServerSocket.ClientRead





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский