Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Непонятная ошибка [D6, MSSQL]


Alibaba ©   (2002-11-22 16:44:00) 

Всем привет!

Мастера, подскажите, плиз.

Програма делает следующее:
1. Берет текстовый файл, в котором SQL-запрос.
2. qr.SQL.Clear;
qr.SQL.Add(s); //(где s-SQL-запрос)
3. qr.Open или qr.ExecSql в зависимости от ситуации.

Все. Это делается в цикле. Есть несколько файлов с SQL,
которые запускаются.

ВСЕ РАБОТАЛО!!!

Теперь стало появляться сообщение :
EDBEngineError: General SQL Error.
ct_cursor(CLOSE): user api layer: external error: A cursor must be opened before this command type can be initialized.


BorisUK   (2002-11-25 14:20:00) [1]

Вспомни что в базе последний раз менял?
Когда все работало и вдруг перестало - может надо в базе данных покопаться?
Но это ИМХО.


asafr   (2002-11-25 13:00:00) [2]

Проведи эксперимент: повтори тоже самое через ADO - появится ошибка или нет? Если да - то какая?


ЮЮ   (2002-11-25 12:57:00) [3]

Что случилось, совершенно ясно:
ct_cursor(CLOSE): user api layer: external error: A cursor must be opened before this command type can be initialized

Курсор должен быть предварительно открыт для выполнения команды закрыть.

Если раньше ошибка не выскакивала, значит раньше кому-то было наплевать на то закрыт или открыт закрываемый курсор. Теперь же тебе прийдется придерживаться мысли, что это "нехорошо", т.е. в сложившихся условиях делай не DataSet.Сlose, a if DataSet.Active then DataSet.Close


Alibaba   (2002-11-25 12:17:00) [4]

>ЮЮ ©

Понимаеш, все работало!
И ExecSQL и Open!!!

Что случилось - НЕПОЙМУ. :(((


ЮЮ   (2002-11-23 08:25:00) [5]

>Без закрытия невозможно было бы осуществлять поочередное выполнение запросов

Изменения св-ва SQL и так закроет запрос, а вот что получится, если пытаться закрыть запрос, для которого был выполнен ExecSQL?
Возможно у "A cursor must be opened before this command type can be initialized" оттуда ноги и растут :-)


Alibaba   (2002-11-22 18:03:00) [6]

>asafr ©
Конечно-же я закрываю qr.
Ведь работа происходит в цикле

> Alibaba © (22.11.02 16:44)
... Это делается в цикле ...


Без закрытия невозможно было бы осуществлять поочередное выполнение запросов.


asafr   (2002-11-22 17:50:00) [7]

with Query1 do begin
try // try..finally..end примени
if Active then Close; //Обрати внимание
SQL.Clear;
SQL.Add(s);
Open/ExecSQL;
finally
Close;
end;
end;


Alibaba   (2002-11-22 17:42:00) [8]

Мне знакомый (тоже пишет на Дельфи) говорит что у него такая ошибка иногда возникает и через время пропадает??????

Есть мнение что это глюк Дельфи.

Еще раз опишу свои проверки:

1. SQL - запросы правильные.(я их отдельно выполняю в SQL
Advantager - всё работает)
2. Где Open где ExecSQL - проверил.
3. qr.SQL всегда сначала чищу а потом загружаю новый.

Что еще проверить?


Alibaba   (2002-11-22 17:36:00) [9]

Анатолий Батькович,
Вы под вечер решили развеяться и пошутить? :)


exit   (2002-11-22 17:35:00) [10]

Ну, если внимательно присмотреться к ошибке, начинает казаться, что курсор то как раз не открыт. Но вот что-то или кто-то пытается его закрыть. Он ругается.


Anatoly Podgoretsky   (2002-11-22 17:33:00) [11]

Есть, последнии 5 строк съед сервер


Alibaba   (2002-11-22 17:31:00) [12]

> exit
Здесь ты прав.

Еще варианты есть?


exit   (2002-11-22 17:24:00) [13]

Если в Query написать что-то типа:

SELECT * FROM MY_TABLE

а потом сказать Query.ExecSQL - будет ругань на курсор


Alibaba   (2002-11-22 16:51:00) [14]

>Reindeer Moss Eater
Не угадал. SQL имеет всего 12 строк.


Reindeer Moss Eater   (2002-11-22 16:47:00) [15]

Ошибка в 17 строке файла с SQL запросом на котором получаем ошибку


Наверх

Титульная страница Поиск, карта сайта Написать письмо