Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];

Вниз

Привет Всем! Как бороться с ошибкой.   Найти похожие ветки 

 
@andrew   (2002-03-20 12:42) [0]

Есть SQL, есть ADOQuery. Есть запрос, который может вернуть 0 строк. Есть код:

with ADOQuery do begin
if Active then Close;
SQL.CLear;
SQL.Append("что-то там")
Open;
end

Так вот если SQL ничего не возвращает на Open, то сделать в дальнейшем ADOQuery.Close невозможно. Выдается ошибка, что мол и Bof и Eof равны "тру", а для этой операции (имеется ввиду Close) требуется наличие строки.

Причем вся эта фигня происходит только в том случае, если софтина запускается на машине, где стоит SQL. Если запускать софт через сетку, то все в порядке. Объясните: что к чему, плиз!

Да и еще! Если перед Close сначала закрывать ADOConnection (что, правда автоматически закроет ADOQuery), то опять же все в порядке. Но мне так плохо, т.к. у меня несколько ADOQuery привязанные к одному ADOConnection, которые мне не нельзя закрывать.


 
Lusha   (2002-03-20 13:28) [1]

С подобной ошибкой не сталкивался... :(
Могу лишь заметить, что проблемная строка в общем то лишняя. Этот код может работать и без нее, т.к. ADOQuery.SQL.Clear автоматически вызовет Close...


Удачи


 
wicked   (2002-03-20 13:50) [2]

2 @andrew ©
а сервис-паки устанавливал?....


 
sniknik   (2002-03-20 13:55) [3]

Кусочек кода который возможно поможет. И для Delphi 5 нужно обязательно сделать апгрейд для ADO (если еще не сделал, иши на сайте Borland-а).
try
ADOCommand1.CommandText:= st;
Recordset:= ADOCommand1.Execute(RecordsAffected, EmptyParam);
if Recordset.State=1 then begin
ADODataSet1.Recordset:= Recordset;
PageControl1.ActivePage:= TabSheet1;
RichEdit2.Lines.Add(IntToStr(ErrCount)+" Выполнено применительно к "+IntToStr(ADODataSet1.Recordset.RecordCount)+" записям"+#$D+#$A);
end else begin
RichEdit2.Lines.Add(IntToStr(ErrCount)+" Выполнено применительно к "+IntToStr(RecordsAffected)+" записям"+#$D+#$A);
PageControl1.ActivePage:= TabSheet2;
if (POS("DROP", st)>0) or (POS("CREATE", st)>0) or (POS("ALTER", st)>0) then begin
SelectedTable:= "";
ListBox1.Items.Clear;
ADOConnection1.GetTableNames(ListBox1.Items);
ListBox2.Items.Clear;
if ListBox1.Items.Count > 0 then
RefreshFields(ListBox1.Items[0]);
end;
end;
except
on E: EADOError do begin ErrMessage:= "EADOError : "+ E.Message; Err:= True; end;
on E: EOleException do begin ErrMessage:= "EOleException : "+ E.Message; Err:= True; end;
on E: EDataBaseError do begin ErrMessage:= "EDataBaseError : "+ E.Message; Err:= True; end;
else begin ErrMessage:= "Неизвестная ошибка!"; Err:= True; end;
end;


 
asafr   (2002-03-20 14:36) [4]

Сервис паки надо установить для Д5 и ADOExpress. В этом ошибка. ADOQuery.Open - здесь ни причем. Паки есть на Борландовском сайте. И в кладовке есть программка по устранению "BOF and EOF...", но только я не знаю - будет ли она работать без сервис пака Д5, но это можно проверить.


 
Дмитрий   (2002-03-20 15:17) [5]

Видал я и такой код:
(вариант, если лень ставить сервис-паки)

try
AdoQuery.Open;
except { EOF && BOF = в рекордсете - пусто }
AdoConnection.Close;
AdoConnection.Open;
end;



 
Dok_3D   (2002-03-20 15:28) [6]

Я уже как-то говорил ...

При изменении свойства ADOQuery.SQL.Text, свойство ADOQuery.Active принимает значение False.
И никаких ошибок я тут никогда не наблюдал ...


 
Barmutik   (2002-03-20 16:25) [7]

Такая ошибка была и борляндовцы её пофиксили хот фиксом.

Если раньше курсор возвращался пустой то при попытке закрытия вываливался ексепшин. После фикса эта ошибка пропала.

:)) Зато осталась ещё одна : Если вы вытащили не пустой курсор и
потом фильтранули его так что активный курсор стал пустым опять у Вас будт тоже самое.

Глюки и ещё раз глюки ...


 
Дмитрий   (2002-03-20 17:05) [8]

... и - тот же самый глюк вываливается (даже при установленном сервис-паке), если обращаться к AdoQuery.recordset (MoveFirst etc.).


 
@andrew   (2002-03-20 19:35) [9]

Всем Большое Спасибо. Буду разбираться. Если дойду до чего-нибудь сам - отпишусь.


 
Fay   (2002-03-22 02:01) [10]

Лечится 2-м сервис факом для Delphi


 
TriNeT   (2002-03-22 04:13) [11]

Доброго времени суток, уважаемые.

Интересное кино получается. Тоже работаю с ADO, примерно такие же условия. В чем интересность? А в том, что таких глюков у меня не происходит не только на возвращении пустого набора данных, но и фильтрации пустого набора. Дельфи не пропатчен абсолютно ничем. В качестве базы данных используется Access 2000. Единственное подозрение, может быть вместе с Office устанавливается более новый MDAC, и Дельфи его просто не меняет на свой?


 
DiggerAbstract   (2002-03-22 04:24) [12]

ВАМ УЖЕ ГОВОРИЛИ - ЧТО ДЛЯ АДО В ПЯТЕРКЕ НАДО СЕРВИСПАКИ УСТАНОВИТЬ И АПДЕЙТЫ ДЛЯ НЕГО-ЖЕ


 
Леша   (2002-03-22 09:26) [13]

Точно, главное апдейты первый и второй поставить.


 
wicked   (2002-03-22 12:09) [14]

2 TriNeT ©
а мож ты его уже пропатченный поставил?...
хотя, как я заметил, ОЧЕНЬ МНОГОЕ зависит от ole db провайдера...


 
@andrew   (2002-03-25 12:57) [15]

Два вопроса:
1 - А где взять 2-й пак? (На борланде устал искать)
2 - А с Делфи 6 все в порядке?

Спасибо!


 
Romul   (2002-03-25 16:52) [16]

В шестых Delphi эта проблема решена.


 
asafr   (2002-03-25 18:01) [17]

Короче... ДЛЯ ВСЕХ КТО НЕ ПОНЯЛ ПОВТОРЯЮ СВОЕ ЖЕ СООБЩЕНИЕ ОТ 20.03.02
"Сервис паки надо установить для Д5 и ADOExpress. В этом ошибка. ADOQuery.Open - здесь ни причем. Паки есть на Борландовском сайте. И в кладовке есть программка по устранению "BOF and EOF...", но только я не знаю - будет ли она работать без сервис пака Д5, но это можно проверить. "
с Access эта ошибка не выскакивает...
Если надо будет, повторю это сообщение позже, ибо ОШИБКА В ЭТОМ...


 
asafr   (2002-03-25 18:32) [18]

Второй пак можно заменить этим:
http://delphi.mastak.ru/download/other6.html
На этой страничке смотри Aepatch.exe (ADO Express Update Pack)



Страницы: 1 вся ветка

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

Наверх





Память: 0.49 MB
Время: 0.004 c
1-46396
ded_di
2002-04-02 13:05
2002.04.15
печать rtf


14-46479
Alexandr
2002-03-06 14:02
2002.04.15
Знак


3-46239
JibSkeart
2002-03-23 11:56
2002.04.15
Поднятие темы с (MSSQL 6.5 на MSSQL 7.0 )


3-46295
IronHawk
2002-03-21 10:58
2002.04.15
Иммитация нажатия клавиш DBNavigator !


3-46215
Dimonka
2002-03-22 14:18
2002.04.15
Вопрос по структуре БД





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский