![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обновление набора данных в TDBGrid после отката трнзакции [D7, MS Access]
Zergling © (2003-04-17 12:06:00)Всем привет! Назрел у меня такой вопросец. Работю с Access через ADO.
if not ADOConnection.InTransaction then
begin
ADOConnection.BeginTrans;
try
{ Вношу данные в таблицу }
{ данные изменения отображаются и в гриде }
ADOConnection.CommitTrans;
except
{ при возникновении ошибки данные откатываются,
но значения в гриде после отката не обновляются }
ADOConnection.RollBackTrans;
end;
end;
Вопрос в следующем. Как обновить набор данных в DBGrid после завершения ADOConnection.RollBackTrans. Зарнее всем благодарен за любую оказанную помощь.
Zergling (2003-04-17 14:42:00) [1]Решение проблемы оказалось оказывается очень простым.
После ADOConnection.RollBackTrans нужно сделать всем таблицам Refresh, которые принимали участие в транзакции.
ВСЕМ СПАСИБО ЗА ОКАЗАННУЮ ПОМОЩЬ И СОВЕТЫ!!!
Zergling (2003-04-17 14:12:00) [2]Наверно я немного не верно поставил вопрос. Данные я заношу в 1 таблицу. На основе данных введенных в 1 таблицу, заносятся некоторые данные во 2 таблицу. Так вот, данные в гриде не обновляются для 2 таблицы.
Жук © (17.04.03 13:52)
Стандартные компоненты для дельфи 7.
TADOTable, TDataSource, TDBGrid.
DataSet.Cancel или DataSet.CancelUpdate не помогает.
Может потому, что я начинаю и заканчиваю осуществлять транзакцию в событии OnBeforePost 1 таблицы. Хотя наверно какое ей до этого дело.
Соловьев (2003-04-17 14:10:00) [3]
> Т.к. я не знаю, каким образом он осуществляет данную операцию,
> то может быть он это осуществляет путем переоткрытия набора
> данных, а может и нет
загляни в исходники... я думаю он переоткрывает.
Жук (2003-04-17 13:52:00) [4]Нужно сделать DataSet.Cancel или DataSet.CancelUpdate. Какие у вас компоненты доступа ?
Zergling (2003-04-17 13:45:00) [5]Жук © (17.04.03 13:39)
Данные отображаются в гриде которые заносились в секции
Try
...
// сдесь
Except
end;
После отката эти данные не принимают свое прежнне значение в гриде. т.е. они не достоверны.
Жук (2003-04-17 13:39:00) [6]А зачем после отката обновлять данные ? Изменений же не произошло...
Zergling (2003-04-17 13:37:00) [7]В дельфи 7 есть ActionManadger. У него есть стандартные TAction для работы с набором данных. Среди них есть такой TAction который обновляет набор данных. Вот я задаюсь вопросом, как реализовать это програмно. Т.к. я не знаю, каким образом он осуществляет данную операцию, то может быть он это осуществляет путем переоткрытия набора данных, а может и нет. С переоткрытием данных наверно может возникнуть и другая проблема. При переоткрытии таблиц с большим количеством данных может ути приличное время (хотя я в этом еще не уверен т.к. еще не работал с большими таблицами).
Соловьев (2003-04-17 13:16:00) [8]
> то каждый раз переоткрывать данные это не серьезно. Всетаки
> необходимо обновить данный в гриде.
ну если ты сможешь не переоткрывая данные их обновлять в гриде , тогда получишь нобелевскую премию по программированию, если такую дают...
Почему не серьезно?
Zergling (2003-04-17 13:13:00) [9]А если пользователь наступает на одни и теже грабли несколько раз подряд, то каждый раз переоткрывать данные это не серьезно. Всетаки необходимо обновить данный в гриде.
Соловьев (2003-04-17 13:05:00) [10]
> Как обновить набор данных в DBGrid
переоткрытьClose; Open;
или что-то не то, или что-то с вопрошающим...