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

Вниз

EOleException   Найти похожие ветки 

 
pvasya   (2002-09-28 09:58) [0]

Работаю с mdb файлом при помощи ADOQuery.
В цикле несколько раз вызываю нижеследующую процедуру, но при
втором ее вызове программа вылетает с EOleException. Что происходит?
Как победить эту ошибку?

procedure SendToUser(Query:TADOQuery;UserId,DiskId:String);
begin
Query.SQL.Clear;
Query.SQL.Add("update tbDisk set diskUse=2 where diskId in ("+DiskId+" )");
Query.ExecSQL;

Query.SQL.Clear;
Query.SQL.Add("INSERT INTO tbRegistry (NameId, DiskId, DateOut) "+
" SELECT UserId, diskId, Date() AS Expr1 "+
" FROM tbDisk, tbUsers "+
" WHERE diskId in ("+DiskId+") AND tbUsers.UserId="+UserId);
Query.ExecSQL;
end;


 
sniknik   (2002-09-28 16:34) [1]

Ошибку приведи какую дает. По ней в 90% случаев можно сказать где искать.
А еще желательно как подключаешся. для интереса.
а то все это как гадание на кофейной гуще, без всей информации.


 
pvasya   (2002-09-28 19:10) [2]

Вылетает EOleException co словами "отсутствует оператор в выражении diskId in ( 10,20 )". Причем вылетает на разных строчках процедуры. Мне кажется что это может происходить из-за того, что объект занят выполнением предыдущей команды. Да, если вызвать процедуру один раз и спустя секунд 5-10 еще раз все нормально.


 
sniknik   (2002-09-28 21:54) [3]

а в свойстве ExecuteOptions чтонибудь в true стоит? тогда возможно, поставь все в false и попробуй.


 
sniknik   (2002-09-28 22:35) [4]

нет вряд ли. у меня второй раз просто отказывается выполнятся говорит занят.

может от передаваемого параметра? второй раз те же значения не посылал? А то если он не находит ничего а в описании поля нот нил стоит? Хотя тоже... другую ошибку давало бы. А тут явно ошибка синтаксиса тогда почему первый раз срабатывает?


 
pvasya   (2002-09-29 00:56) [5]

В том то и дело что в синтаксисе ошибки нет, наверное АДОКвери занято и метод SQL.Clear неправильно работает. Может сделать приложение многопоточным?


 
sniknik   (2002-09-29 12:42) [6]

Если Query.ExecuteOptions <> [eoAsyncExecute] то должно ожидать окончания выполнения запроса, и SQL.Clear будет выполнятся когда он уже закончен. т.е. ничему не помешает.
но проверь, вставь в процедуру двойной код (не 2 вызова а 4) с параметрами от 1 и 2го вызова. судя по твоей логике ошибка возникнет при первом же запуске такой двойной процедуры.

многопоточность по моему только запутает ситуацию, хотя возможно и разрешит (в каждом потоке по хорошему свой коннект и квери пересекатся не будет) но сколько потоков будеш делать? если например нужен цикл из 1000 вызовов?




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

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

Наверх





Память: 0.45 MB
Время: 0.007 c
3-68632
Leviathan
2002-09-27 12:30
2002.10.21
*.gdb


14-68991
Извращенец
2002-09-29 18:42
2002.10.21
[Warning] Unit DXTexImg implicity imported into package Delphi


1-68710
dimonf
2002-10-08 20:41
2002.10.21
Как правильно округлить 3.0299999 в 3.03?


14-68941
Cr@sh
2002-09-26 19:33
2002.10.21
Отстают системные часы.


7-69038
Smok_er
2002-08-12 23:51
2002.10.21
Определение версии операционной системы и привилегий пользователя





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский