Форум: "Базы";
Текущий архив: 2003.05.19;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.011 c