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