Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.02.21;
Скачать: CL | DM;

Вниз

асинхронное 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
3-66463
Ildar Ibatullin
2002-01-28 07:31
2002.02.21
Нужна легкая БД под Win -- mySQL?


1-66628
saviola
2002-02-06 17:51
2002.02.21
Можно ли работать с файлом *.doc как с *.txt или как с типизированным?


14-66647
Pat
2001-12-28 13:47
2002.02.21
Преподы прикалываются...


1-66603
sammy
2002-02-06 11:40
2002.02.21
Удаление файлов


3-66431
Анонимщик
2002-01-26 12:59
2002.02.21
TADOConnection + ConnectionString + runtime