![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Непонятная ошибка [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 запросом на котором получаем ошибку