Как проверить наличие TADODataSet в dbgrid?

Я использую DBGrid в моей форме VCL. Сетка заполнена записями, поступающими из TADOConnection запрос. Семантически это выглядит так:

  • Установить соединение с базой данных (SQL Server);
  • Получить некоторые записи в TADODataSet набор данных;
  • Соединить набор данных с TDataSource объект;
  • Подключите DataSource объект в DBGrid.

Моя сетка выполняет немедленную публикацию, что означает, что отредактированные данные немедленно публикуются в базе данных. Все работает нормально, пока не закроется соединение (сеть не работает, крышка ноутбука закрыта и т. Д.)

Когда соединение потеряно, я не могу редактировать записи в Grid, что вызывает EOleException (TCP PRovider: существующее соединение было принудительно закрыто удаленным хостом) abd EDatabaseError (Ошибка связи).

Я хочу поймать потерю соединения и восстановить соединение, но я не знаю как. Я проверил все специфичные для данных события таблицы, но проблема возникает намного раньше, чем любое из событий сетки.

Я считаю, что проблема на уровне набора данных, но я не знаю, как поймать исключение. Кто-нибудь знает, как проверить доступность набора данных? Тогда я мог бы написать код для повторного подключения. Что-то вроде этого:

if not Assigned(DataSet) then
    //reconnect

Будем очень благодарны любой помощи.

0 ответов

Другие вопросы по тегам