Главная страница
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.017 c
14-23346
sashundra
2003-04-18 15:17
2003.05.08
с Fox Pro yf на Delphi


1-23225
spac
2003-04-25 13:25
2003.05.08
edit


3-22976
SiJack
2003-04-17 13:51
2003.05.08
Каскадное удаление в Access (ADO)


3-23042
ArtemB
2003-04-18 16:39
2003.05.08
Query и КЭШ


6-23278
LORD
2003-03-11 22:48
2003.05.08
Когда закачиваются картинки ?