Главная страница
    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-68659
NeyroSpace
2002-09-30 15:29
2002.10.21
CREATE TRIGGER под FireBird (SQL dialect 3)


3-68618
Filat
2002-09-29 12:23
2002.10.21
СРОЧНО!!!! User


14-68939
Ahmad
2002-09-24 17:12
2002.10.21
Вот взялся за руссификацию программ и ....


14-68981
Walker
2002-09-29 02:34
2002.10.21
Мастера, сколько вас и как о вас узнать???


4-69067
Сергей01
2002-09-04 01:21
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский