Форум: "Базы";
Текущий архив: 2002.02.21;
Скачать: [xml.tar.bz2];
Внизасинхронное ADO Найти похожие ветки
← →
wicked (2002-01-25 15:39) [0]возникла проблема - при открытии recordset"а с ExecuteOptions, установленными в eoAsyncExecute (простой select) и последующим открытием (показыванием) формы, которая связана с recordset"ом, вылетает exception "access violation <blah, blah>... read of address FFFFFFFF".... может знает кто, как с этим бороться?....
← →
Delirium (2002-01-25 15:47) [1]Что-то не очень понятно, покажи код
← →
wicked (2002-01-25 16:18) [2]код большой... но вот отрывки...
кусок, который запускает recordset:
procedure TMainDM.applyab(s: string);
var q: string;
begin
q := format(abqry, [s]);
AbSet.Close;
AbSet.CommandText := q;
AbSet.Open;
end;
а вот кусок, в котором вылетает exception:
procedure TAbSFrm.OKBtnClick(Sender: TObject);
var s: string;
begin
inherited;
s := "";
addand(s, "a.number like ""%" + trim(NumberEd.Text) + "%""", trim(NumberEd.Text));
addand(s, "a.name like ""%" + trim(AbonEd.Text) + "%""", trim(AbonEd.Text));
addand(s, "l.name like ""%" + trim(LocEd.Text) + "%""", trim(LocEd.Text));
addand(s, "t.name like ""%" + trim(TownEd.Text) + "%""", trim(TownEd.Text));
addand(s, "s.name like ""%" + trim(StreetEd.Text) + "%""", trim(StreetEd.Text));
if s <> "" then begin
MainDM.applyab(s);
AbFrm.ShowModal; // вот ЗДЕСЬ оно и вылетает
end;
end;
пояснения: addand - процедурка, делов у которой - построить кусок строки, пригодный для вставки в where-часть запроса,
AbSet - recordset с запросом, расположен в модуле данных maindm,
AbSFrm - форма для ввода параметров поиска,
AbFrm - форма, в которой находятся элементы управления, привязанные к тому recordset"у...
воде всё....
← →
Delirium (2002-01-25 16:37) [3]А как ты объявляешь свой _RecordSet ?
← →
Delirium (2002-01-25 16:41) [4]Так, секундочку, у тебя AbSet это TADOCommand, судя по "AbSet.CommandText := q;" ?
← →
wicked (2002-01-25 16:55) [5]не-а.... AbSet - это TBetterADODataSet - потомок TADODataSet.... его я использую из-за пары наворотов... а так можно считать, что это TADODataSet....
← →
Delirium (2002-01-25 17:06) [6]Попробуй для начала AbFrm.ShowModal; заменить на AbFrm.Show;
← →
wicked (2002-01-25 17:15) [7]всё равно выскакивает exception.... но когда тут же выходить из программы, то выскакивает другой exception - "Invalid operation on object while processing another command"... типа он чего то там уже выбирает, а тут его обрывают.... главное, что в доке по ADO от microsoft о таком - ни гу-гу....
← →
Delirium (2002-01-25 17:19) [8]А при выключеном eoAsyncExecute ошибка проявляется?
← →
wicked (2002-01-25 17:21) [9]нет конечно.... но тормозит, особенно при больших наборах.....
← →
Delirium (2002-01-25 17:29) [10]В общем проблема где-то в следующем, твои визуальные компоненты с формы AbFrm обращаются к ещё не созданному RecordSet-y, решение такое - привязать AbFrm.ShowModal к событию AbSet.AfterOpen
← →
wicked (2002-01-25 17:38) [11]хм.... правда, мне приходила в голову мысль про событие OnFetchProgress... а до AfterOpen я не додумался... :)
спасибо...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.02.21;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c