![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ConnectionTimeOut в ADO [D5, MSSQL]
BJValentine © (2003-04-25 20:09:00)Ребята, замучился! Запрос выполняется 5 минут. Как мне сделать, чтобы увеличить период ожидания?
Babay (2003-04-28 05:39:00) [1]Помница была и уменя подобная проблема.
Решил так. Я использовал ADOQuery и таймоут выставлял. Это не проходило.
Заменил ADOQuery на ADOCommand все стало Ок.
Надеюсь это твой случай...
...да сервис паки всетаки у меня стояли.
wicked (2003-04-27 03:19:00) [2]странно, у меня все работало при установке свойства CommandTimeout в обертке....
правда, были установлены все апдейты - 2 шт....
sniknik (2003-04-26 17:37:00) [3]> но он сто пудово устанавливается и работает!
да это я знаю, сам делал, вариантов на самом деле несколько
поменять у компонента дефаултное значение, чтобы он его при создании устанавливал
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. перед тем как производить какието действия попробуй все апдейты дельфей установить, может только это уже поможет .
BJValentine (2003-04-26 10:46:00) [4]В форуме уже был этот вопрос и удачный ответ, только было это давно и я не могу найти. Я помню по поводу модуля ADODB. Да, там как то странно этот TimeOut устанавливается, но он сто пудово устанавливается и работает! Может всё-таки ктото помнит, как это делается?
Shuric (2003-04-26 00:05:00) [5]Может не по теме, но по-моему иногда не обязательно возвращать результат в ADOQuery, например. Может, ошибаюсь, но, выполняя запрос на серверном приложении (не знаю Вашей структуры) можно вернуть блок, который будет расцениваться как результат, достаточно написать сервер и пару процедурок в нем. Если нужно уточню...
sniknik (2003-04-25 23:41:00) [6]перейти на 6-дельфи. в пятом это нудно и по "хакерски" достигается правкой модуля ADODB. (и не у всех получается, однажды пытался тут обьяснить... упарился).
если не можеш сменить дельфю, подумай над следующим - сделать запрос асинхронно выполняемым... таймаута не будет (только за окончанием нужно следить из события, т.е. чуть по другому, а так одни плюсы).