Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.19;
Скачать: CL | DM;

Вниз

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

 
BJValentine ©   (2003-04-25 20:09) [0]

Ребята, замучился! Запрос выполняется 5 минут. Как мне сделать, чтобы увеличить период ожидания?


 
sniknik ©   (2003-04-25 23:41) [1]

перейти на 6-дельфи. в пятом это нудно и по "хакерски" достигается правкой модуля ADODB. (и не у всех получается, однажды пытался тут обьяснить... упарился).

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


 
Shuric   (2003-04-26 00:05) [2]

Может не по теме, но по-моему иногда не обязательно возвращать результат в ADOQuery, например. Может, ошибаюсь, но, выполняя запрос на серверном приложении (не знаю Вашей структуры) можно вернуть блок, который будет расцениваться как результат, достаточно написать сервер и пару процедурок в нем. Если нужно уточню...


 
BJValentine ©   (2003-04-26 10:46) [3]

В форуме уже был этот вопрос и удачный ответ, только было это давно и я не могу найти. Я помню по поводу модуля ADODB. Да, там как то странно этот TimeOut устанавливается, но он сто пудово устанавливается и работает! Может всё-таки ктото помнит, как это делается?


 
sniknik ©   (2003-04-26 17:37) [4]

> но он сто пудово устанавливается и работает!
да это я знаю, сам делал, вариантов на самом деле несколько
поменять у компонента дефаултное значение, чтобы он его при создании устанавливал
TADOCommand = class(TComponent)
....
property CommandTimeout: Integer read GetCommandTimeOut write SetCommandTimeOut default 30;

или поправить
procedure TADOCommand.SetCommandTimeOut(const Value: Integer);
begin
CommandObject.CommandTimeout := Value;
end;
(в пятом там по моему не у компонента менялось свойство а у обертки непомню точно)

или при вызове напрямую
function TADOCommand.Execute(var RecordsAffected: Integer;
const Parameters: OleVariant): _Recordset;
var
VarRecsAffected: OleVariant;
begin
SetConnectionFlag(cfExecute, True);
try
Initialize;
CommandObject.CommandTimeout:= 0; //0 - время неограничено
Result := CommandObject.Execute(VarRecsAffected, Parameters,
Integer(CommandObject.CommandType) + ExecuteOptionsToOrd(FExecuteOptions));
RecordsAffected := VarRecsAffected;
finally
SetConnectionFlag(cfExecute, False);
end;
end;

в общем смысл понятен (?) главное поменять значение не у обертки а у оборачиваемого компонента, перед выполнением им комманды. естественно модуль ADODB нужно подключить к проэкту, чтобы его код подключался а не их дельфевского Lib.

ну или можно самому ADO подключить (импорт Type Library) и его использовать (правда это муторно).

P.S. перед тем как производить какието действия попробуй все апдейты дельфей установить, может только это уже поможет .


 
wicked ©   (2003-04-27 03:19) [5]

странно, у меня все работало при установке свойства CommandTimeout в обертке....
правда, были установлены все апдейты - 2 шт....


 
Babay ©   (2003-04-28 05:39) [6]

Помница была и уменя подобная проблема.
Решил так. Я использовал ADOQuery и таймоут выставлял. Это не проходило.
Заменил ADOQuery на ADOCommand все стало Ок.
Надеюсь это твой случай...

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



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

Текущий архив: 2003.05.19;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
6-59840
MortalScorpion
2003-03-20 17:06
2003.05.19
Немогу описать событие в ядре


14-59935
Dimich1978
2003-04-30 11:20
2003.05.19
есть ли у кого библиотека math.tpu для ПАСКАЛЯ


14-59902
Alex134
2003-04-29 00:42
2003.05.19
Отладчик - Вопрос серьезный, для Мастеров


3-59582
adogg
2003-04-26 13:13
2003.05.19
Проблема с запросом в Access


14-59915
Yorick
2003-04-29 18:15
2003.05.19
Поиск кратчайшего пути