У меня есть ADOQuery и ADOConnection на форме, упрощенный код выглядит так:
на Form.Create Iпросто задайте ADOConnection параметры подключения и убедитесь, что оно закрыто.После этого я никогда не открываю ADOConnection напрямую, это происходит только через ADOQuery.
try
if ADOQuery.Active then ADOQuery.Close;
ADOQuery.Open;
except
Application.Terminate;
end;
Я бы ожидал, что этот код будет перехватывать всевозможные исключения (, например, ADOQuery Timeout ) и просто завершитсяприложение.
Каким-то образом я все еще получаю Превышено время ожидания запроса.( Но, возможно, это происходит от самого ADOConnection? ) Я не уверен на 100%.
Если бы я сделал это так, это решило бы проблему:
try
if ADOConnection.Connected:=true then ADOConnection.Close;
if ADOQuery.Active then ADOQuery.Close;
ADOQuery.Open;
except
Application.Terminate;
end;
Спасибо.
ОБНОВЛЕНИЕ
Вопрос заключается в следующем:
это не время ожидания Catching Query, потому что используемый AdoConnection не находится внутрипопробуй кроме блока?(На самом деле я не вижу никакой другой причины)
В этом примере ниже ADOConnection1 подключается к первому ADOQuery.Open и остается таким до тех пор, пока программное обеспечение не будет завершено.
try
if ADOQuery.Active then ADOQuery.Close;
ADOQuery.Open;
except
Application.Terminate;
end;
Это, за исключением, похоже, не перехватывает все тайм-ауты запроса ...