![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с ADODataSet [D6, Sybase]
Yakudza © (2004-08-28 13:03:00)Подскажите в чем может быть проблеме, когда dset.Close; закрываеться MainDataSet !
procedure MainDataSetAfterScroll(DataSet: TDataSet);
var
dset : TADODataSet;
begin
if dset = nil then
begin
dset.Create(self);
end;
dset.Close;
dset.CommandType := cmdText;
dset.CommandText := 'SELECT id FROM table WHERE eid = :ID';
dset.Parameters.Items[0].Value := MainDataSet.FieldByName('id').AsInteger;
try
dset.Open;
except
//
end;
end;
sniknik (2004-08-30 08:38:00) [1]> при некоторых условиях, создать, если еще не сорздан еще один датасет, сделать запрос, показать его и т.д.
dset у тебя локальная переменная она в любом случае не создана. (есть конечно оговорка, раз уж это не просто переменная а рекордсет, он еще к колекции конекта прописывается, но переменная то тут не причем так проверять нельзя нужно в той колекции и искать)
а делается это обычно так
dset:= TADODataSet.Create(self);
try
//код,... показать его и т.д.
finally
dset.free;
end
(если нужно оставить рекордсет после процедуры то уж не делай его локальным)
Yakudza (2004-08-30 00:21:00) [2]Хочу сделать следующее:
В событии AfterScroll "главного" датасета (dsMain : TADODataSet) хочу, при некоторых условиях, создать, если еще не сорздан еще один датасет, сделать запрос, показать его и т.д.
KSergey (2004-08-29 12:52:00) [3]Вообще-то, [7] DiamondShark как всегда прав, однако чтобы больше такого не писать - настоятельно советую прочитать
http://www.delphikingdom.com/helloworld/runtime_comp.htm
DiamondShark (2004-08-29 10:47:00) [4]Давай так. Ты забываешь про весь свой код и описываешь ПО-РУССКИ чего ты хочешь получить.
Yakudza (2004-08-29 01:43:00) [5]Кто-нибуть обьясните где непонятка, а то так и помру неучем.
Yakudza (2004-08-28 13:33:00) [6]Вот что еще не понятно если делать dset.Create(self); то ругаеться что MainDataSet уже есть но почему не ругаеться что dset уже есть ?
Yakudza (2004-08-28 13:32:00) [7]А как проверить создали уже обьект или нет ?
Nikolay M. (2004-08-28 13:21:00) [8]
> if dset = nil then
> begin
> dset.Create(self);
> end;
Тебе не кажется, что это аналогично следующему:
if dset = nil then
nil.Create(self);
?
Yakudza (2004-08-28 13:14:00) [9]Обьясни.
Nikolay M. (2004-08-28 13:08:00) [10]
> if dset = nilthen
> begin
> dset.Create(self);
> end;
Ты хоть понял сам, что тут написал? Или специально моделируешь непредсказуемое поведение программы и AV?