Как проверить наличие TADODataSet в dbgrid?
Я использую DBGrid в моей форме VCL. Сетка заполнена записями, поступающими из TADOConnection
запрос. Семантически это выглядит так:
- Установить соединение с базой данных (SQL Server);
- Получить некоторые записи в
TADODataSet
набор данных; - Соединить набор данных с
TDataSource
объект; - Подключите
DataSource
объект в DBGrid.
Моя сетка выполняет немедленную публикацию, что означает, что отредактированные данные немедленно публикуются в базе данных. Все работает нормально, пока не закроется соединение (сеть не работает, крышка ноутбука закрыта и т. Д.)
Когда соединение потеряно, я не могу редактировать записи в Grid, что вызывает EOleException
(TCP PRovider: существующее соединение было принудительно закрыто удаленным хостом) abd EDatabaseError
(Ошибка связи).
Я хочу поймать потерю соединения и восстановить соединение, но я не знаю как. Я проверил все специфичные для данных события таблицы, но проблема возникает намного раньше, чем любое из событий сетки.
Я считаю, что проблема на уровне набора данных, но я не знаю, как поймать исключение. Кто-нибудь знает, как проверить доступность набора данных? Тогда я мог бы написать код для повторного подключения. Что-то вроде этого:
if not Assigned(DataSet) then
//reconnect
Будем очень благодарны любой помощи.