Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.019 c
3-22955
Ury
2003-04-16 23:40
2003.05.08
Disconnect


6-23274
RUS1
2003-03-12 09:48
2003.05.08
Опять Socket-Ы :-)))!!! Ну нихрена не работает господа!!!!


3-22988
zom
2003-04-14 12:54
2003.05.08
Поиск по индексу или Select, что быстрее через ADO?


11-23050
SPeller
2002-07-28 16:50
2003.05.08
Утечка ресурсов: Откуда ??


4-23426
Num Lock
2003-03-07 10:42
2003.05.08
Плоская кнопка