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

Вниз

Проблема с ConnectTimeout при работе с ADO   Найти похожие ветки 

 
EugeneK   (2003-05-14 10:44) [0]

Работаю через ADOConnection.
Изначально поставил 30 секунд и все отлично, но сейчас появилась хранимая процедура, работающая минуты три. Увеличил ConnectTimeout до 100, но ровно через 30 секунд после запуска ADOStoredProc.Open вылазит Exception "Timeout expired". ConnectionString у ADOConnection генерю программно. Вставил в генерацию добавление параметра "...;Connect Timeout=100;...". Не помогло. Попробовал после генерации ConnectionString сделать

ADOConnection.ConnectTimeout:=100;
ADOConnection.Open;

как в справке :), но все равно через 30 секунд те же грабли.
Может где-нить на компе сохраняется какая-то настройка? Может где-то в настройке ADO-клиента на компе зашиты эти 30 секунд?
Может где-то глюк в версии MDAC? Ну и если в ДНК у меня глюк, то тоже не стесняйтесь :)

В общем, кто-нить сталкивался и как поборол?

ЗЫ. Конечно могу разбить запрос на мелкие подзапросы, но это крайний вариант, так как сильно замедлит формирование отчета, как мне кажется. В хранимой процедуре вытаскивается список товаров по определенным условиям, а потом для каждого товара выполняется определенный анализ. Так вот можно этот анализ сделать в виде отдельной sp, и вызывать ее для каждого товара перед выводом каждой строки на экран. Но ведь не по людски это :(

С интересом, Кеоваленко Евгений.


 
АлексейК   (2003-05-14 13:06) [1]

1. Однако CommandTimeout:=100. Но значение этого ствойства не передается подлюченным через него компонетам.
2. Если используешь для работы компонеты AdoCommand, AdoDataSet,
AdoQuery, AdoTable, AdoStorenProc, то для них CommandTimeout выставляется отдельно. Причем для AdoQuery, AdoTable, AdoStorenProc их можно выставить только програмно переопределив класс компонета.
3. К тому же на MSSQL тоже есть настройка тайаута, по умолчанию она 5 минут.


 
NAlexey ©   (2003-05-14 13:13) [2]

>только програмно переопределив класс компонета.
В D5 - стандартный глюк. Лечится патчем, или вышеуказанным методом.


 
EugeneK   (2003-05-14 17:22) [3]

Конечно CommandTimeout, заговорился :)

Однако каким патчем лечится (как называется, чтобы его найти или ссылочка есть)?
После этого патча не надо выставлять отдельно у TStoredProc?

А если без патча, то мне надо что типа (довольно грубо, конечно):

============================
unit unit1;

interface
....

TMySP = class(TStoredProc)
public
CommandTimeout : integer;
end;

Var MySP : TmySP;

implementation
.....

Procedure ....OnCreate(...);
begin
...
MySP:=TmySP.Create(...);
MySP.CommandTimeout:=100;
QuickReport.DataSet:=MySP;
...
end;

======================================

PS. Тут я не силен, поэтому поправьте, плиз, особенно это касается того, как сделать CommandTimeout видимым...

Заранее спасибо.


 
EugeneK   (2003-05-15 10:34) [4]

Извиняюсь, но проблема актуальна очень, поэтому все еще надеюсь на помощь...

С надеждой, Коваленко Евгений.
Калининград.



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

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

Наверх




Память: 0.47 MB
Время: 0.021 c
3-2789
vvip
2003-05-14 08:47
2003.06.02
Ошибка при закрытии набора данных ADODB при работе с Access


1-2986
Silver_
2003-05-21 15:46
2003.06.02
TTreeView при потере фокуса чтоб курсор остовался ВИДНЫМ


1-2866
BJValentine
2003-05-21 19:43
2003.06.02
FindFirst


1-2973
Disa
2003-05-21 13:10
2003.06.02
Циклы в потоке...


1-2954
AlickSnegov
2003-05-20 13:29
2003.06.02
Как разрезать файл на куски