Текущий архив: 2002.12.05;
Скачать: CL | DM;
Вниз
ADOStoredProc Найти похожие ветки
← →
ShooRoop (2002-11-15 15:20) [0]Уважаемые мастера, возникла следующая проблема: имеется ADOStoredProc, возвращающий какой-то DataSet, формирование которого происходит достаточно длительное время (~1 минуту) (если проверить его в Query Analyzer), при попытке открыть ADOStoredProc в Делфи выдается ошибка "Время ожидания истекло" и, естественно, никакого датасета я не получаю. Что нужно изменить для получения нормального результата? Благодарю.
← →
Андрей Прокофьев © (2002-11-15 15:22) [1]ADOStoredProc.CommandTimeOut
← →
ShooRoop (2002-11-15 15:29) [2]ADOConnection.CommandTimeOut, увы, не помогает, как его ни увеличивай (даже до 10000). Та же ошибка.
← →
sniknik © (2002-11-15 15:53) [3]D6 + апдейты ADO самое простое решение проблемы, в 5 это известный глюк. По моему даже апдейтами не лечится. Но можно модуль ADODB поправить.
← →
ShooRoop (2002-11-15 15:55) [4]Прекрасно. А каким образом поправить? Или, может, где-то есть исправленный?
← →
sniknik © (2002-11-15 16:03) [5]включи модуль в проект
и поправь
property CommandTimeout: Integer read GetCommandTimeout write SetCommandTimeout default 60;
default -ное значение на желаемое
После надо перекомпилировать проект
← →
ShooRoop (2002-11-15 16:49) [6]To sniknik:
Абсолютно ничего не изменилось, к сожалению!
← →
sniknik © (2002-11-15 21:55) [7]проверь что у тебя в визуальном обьекте стоит.
(в идеале если dcu заменить то при ложении их на форму уже 60сек ,как у меня, стоять будет)
и проверь как присваивается (трасировкой)
процедура ADODB
procedure TADOConnection.SetCommandTimeout(const Value: Integer);
begin
ConnectionObject.CommandTimeOut := Value;
end;
поставь точку останова здесь, неправильно подключен не даст трассировать.
(предупреждал апдейты проще :о))
← →
BlackTiger (2002-11-15 23:04) [8]Эти несчастные таймуаты прописывать нужно в нескольких местах для надежности.
1. в самом ConnectionString"e (там их два - General и еще какой-то)
2. в ADOConnection (ConnectionTimeout, CommandTimeout (не уверен, есть ли он, не могу сейчас проверить))
3. в Query/SP (CommandTimeout)
Сам я TADOStoredProc никогда не пользуюсь. Предпочитаю вызывать "EXEC sp_lalala()" через TADOQuery - там установки таймаутов работают, проверено.
← →
ShooRoop (2002-11-18 11:23) [9]2 BlackTiger:
Можно чуть поподробнее, каким образом я могу через TADOQuery вызвать хранимую процедуру. Если я правильно понимаю, я прописываю в TADOQuery.SQL "EXEC sp_lalala()" а потом делаю TADOQuery.ExecSQL? Или как-то иначе?
← →
asmith (2002-11-18 12:37) [10]Не TADOQuery.ExecSQL, а TADOQuery.Open, поскольку возвращается курсор.
← →
ShooRoop (2002-11-18 14:59) [11]Увы, ничего не помогает. Проходит ~30 секунд и опять ошибка "Время ожидания истекло". Кстати, у TADOQuery я не нашел праперти CommandTimeout. Может, у кого-нибудь есть еще какие-то соображения, буду очень признателен.
← →
sniknik © (2002-11-18 15:25) [12]Самое первое и есть верное. D6 + апдейты ADO. Или попробуй на 5 апдейты. (хотя вроде говорили не помогает в 5х)
> Кстати, у TADOQuery я не нашел праперти CommandTimeout.
и тем не менее он там есть по крайней мере в 6 дельфях.
← →
Icehand (2002-11-19 13:13) [13]Народ, поскольку речь зашла о хранимых процедурах, то хочу обратится к вам со своей проблемой. У меня есть например хранимая процедура в Оракле, например Select * from a.
Как мне передать результат в DBGrid? Я использую ADOStoredProc.
← →
BoxTer © (2002-11-19 13:24) [14]>Icehand
вешаешь на SP DataSource и указываешь ее как источник данных для Грида. Потом Делаешь Active=True у SP руками или программно, и все...
Страницы: 1 вся ветка
Текущий архив: 2002.12.05;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.015 c