Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 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 я не додумался... :)
спасибо...




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.21;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.014 c
1-66551           Dimedrol              2002-02-05 11:21  2002.02.21  
Не находится UNIT, прописанный в PATH


6-66645           XCreator              2001-11-29 02:01  2002.02.21  
Получение данных о пользователях программы через инет


3-66417           kriss                 2002-01-25 13:35  2002.02.21  
предлагаю работу по написанию баз данных Access с VB


4-66702           iyalosovetsky         2001-12-20 21:28  2002.02.21  
Проверка пра пользователя


6-66636           Крис                  2001-12-04 16:39  2002.02.21  
Где скачать INDY???!!!