Текущий архив: 2002.12.12;
Скачать: CL | DM;
Вниз
Непонятная ошибка Найти похожие ветки
← →
Alibaba © (2002-11-22 16:44) [0]Всем привет!
Мастера, подскажите, плиз.
Програма делает следующее:
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.
← →
Reindeer Moss Eater (2002-11-22 16:47) [1]Ошибка в 17 строке файла с SQL запросом на котором получаем ошибку
← →
Alibaba © (2002-11-22 16:51) [2]>Reindeer Moss Eater
Не угадал. SQL имеет всего 12 строк.
← →
exit (2002-11-22 17:24) [3]Если в Query написать что-то типа:
SELECT * FROM MY_TABLE
а потом сказать Query.ExecSQL - будет ругань на курсор
← →
Alibaba © (2002-11-22 17:31) [4]> exit
Здесь ты прав.
Еще варианты есть?
← →
Anatoly Podgoretsky © (2002-11-22 17:33) [5]Есть, последнии 5 строк съед сервер
← →
exit (2002-11-22 17:35) [6]Ну, если внимательно присмотреться к ошибке, начинает казаться, что курсор то как раз не открыт. Но вот что-то или кто-то пытается его закрыть. Он ругается.
← →
Alibaba © (2002-11-22 17:36) [7]Анатолий Батькович,
Вы под вечер решили развеяться и пошутить? :)
← →
Alibaba © (2002-11-22 17:42) [8]Мне знакомый (тоже пишет на Дельфи) говорит что у него такая ошибка иногда возникает и через время пропадает??????
Есть мнение что это глюк Дельфи.
Еще раз опишу свои проверки:
1. SQL - запросы правильные.(я их отдельно выполняю в SQL
Advantager - всё работает)
2. Где Open где ExecSQL - проверил.
3. qr.SQL всегда сначала чищу а потом загружаю новый.
Что еще проверить?
← →
asafr © (2002-11-22 17:50) [9]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 18:03) [10]>asafr ©
Конечно-же я закрываю qr.
Ведь работа происходит в цикле
> Alibaba © (22.11.02 16:44)
... Это делается в цикле ...
Без закрытия невозможно было бы осуществлять поочередное выполнение запросов.
← →
ЮЮ © (2002-11-23 08:25) [11]>Без закрытия невозможно было бы осуществлять поочередное выполнение запросов
Изменения св-ва SQL и так закроет запрос, а вот что получится, если пытаться закрыть запрос, для которого был выполнен ExecSQL?
Возможно у "A cursor must be opened before this command type can be initialized" оттуда ноги и растут :-)
← →
Alibaba © (2002-11-25 12:17) [12]>ЮЮ ©
Понимаеш, все работало!
И ExecSQL и Open!!!
Что случилось - НЕПОЙМУ. :(((
← →
ЮЮ © (2002-11-25 12:57) [13]Что случилось, совершенно ясно:
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
← →
asafr © (2002-11-25 13:00) [14]Проведи эксперимент: повтори тоже самое через ADO - появится ошибка или нет? Если да - то какая?
← →
BorisUK © (2002-11-25 14:20) [15]Вспомни что в базе последний раз менял?
Когда все работало и вдруг перестало - может надо в базе данных покопаться?
Но это ИМХО.
Страницы: 1 вся ветка
Текущий архив: 2002.12.12;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.016 c