Главная страница
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.012 c
1-59750
ed18
2003-05-06 10:24
2003.05.19
Как вычислить длину строки в пикселях?


3-59602
sva82
2003-04-28 11:51
2003.05.19
Замена строк на столбцы


1-59799
Barmutik
2003-05-06 14:27
2003.05.19
Помогите с TToolBar и 8-bit alpha


14-59881
Max1111
2003-04-29 12:11
2003.05.19
Проиграть wav файл после завершения процедуры


6-59822
Мурка
2003-03-21 11:01
2003.05.19
MAC по IP