Главная страница
    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
3-1086378388
Imrek
2004-06-04 23:46
2004.07.04
Фильтр по русскому полю


8-1081310641
Студент1
2004-04-07 08:04
2004.07.04
Анимационный файл


4-1085408066
SMART_n
2004-05-24 18:14
2004.07.04
Проблемы с I/O completion port


4-1085633111
Le!
2004-05-27 08:45
2004.07.04
Ctrl + alt + del поl XP


8-1080635920
Pavlik_Morozov
2004-03-30 12:38
2004.07.04
Движение мыши => трёхмерные вращения





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский