Текущий архив: 2004.09.26;
Скачать: CL | DM;
ВнизПроблема с ADODataSet Найти похожие ветки
← →
Yakudza © (2004-08-28 13:03) [0]Подскажите в чем может быть проблеме, когда 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;
← →
Nikolay M. © (2004-08-28 13:08) [1]
> if dset = nil then
> begin
> dset.Create(self);
> end;
Ты хоть понял сам, что тут написал? Или специально моделируешь непредсказуемое поведение программы и AV?
← →
Yakudza © (2004-08-28 13:14) [2]Обьясни.
← →
Nikolay M. © (2004-08-28 13:21) [3]
> if dset = nil then
> begin
> dset.Create(self);
> end;
Тебе не кажется, что это аналогично следующему:
if dset = nil then
nil.Create(self);
?
← →
Yakudza © (2004-08-28 13:32) [4]А как проверить создали уже обьект или нет ?
← →
Yakudza © (2004-08-28 13:33) [5]Вот что еще не понятно если делать dset.Create(self); то ругаеться что MainDataSet уже есть но почему не ругаеться что dset уже есть ?
← →
Yakudza © (2004-08-29 01:43) [6]Кто-нибуть обьясните где непонятка, а то так и помру неучем.
← →
DiamondShark © (2004-08-29 10:47) [7]Давай так. Ты забываешь про весь свой код и описываешь ПО-РУССКИ чего ты хочешь получить.
← →
KSergey © (2004-08-29 12:52) [8]Вообще-то, [7] DiamondShark как всегда прав, однако чтобы больше такого не писать - настоятельно советую прочитать
http://www.delphikingdom.com/helloworld/runtime_comp.htm
← →
Yakudza © (2004-08-30 00:21) [9]Хочу сделать следующее:
В событии AfterScroll "главного" датасета (dsMain : TADODataSet) хочу, при некоторых условиях, создать, если еще не сорздан еще один датасет, сделать запрос, показать его и т.д.
← →
sniknik © (2004-08-30 08:38) [10]> при некоторых условиях, создать, если еще не сорздан еще один датасет, сделать запрос, показать его и т.д.
dset у тебя локальная переменная она в любом случае не создана. (есть конечно оговорка, раз уж это не просто переменная а рекордсет, он еще к колекции конекта прописывается, но переменная то тут не причем так проверять нельзя нужно в той колекции и искать)
а делается это обычно так
dset:= TADODataSet.Create(self);
try
//код,... показать его и т.д.
finally
dset.free;
end
(если нужно оставить рекордсет после процедуры то уж не делай его локальным)
Страницы: 1 вся ветка
Текущий архив: 2004.09.26;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.036 c