Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.05.08;
Скачать: [xml.tar.bz2];

Вниз

Обновление набора данных в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.016 c
3-23013
VadimS
2003-04-18 09:32
2003.05.08
Изменение значения поля


1-23191
lego_2
2003-04-24 22:30
2003.05.08
TPopUpMenu иль всё от TMenu


14-23358
Дмитрий К.К.
2003-04-21 07:05
2003.05.08
Именинники 21 апреля


1-23088
R
2003-04-23 10:02
2003.05.08
Поверх всех окон.


1-23126
YurA
2003-04-26 11:46
2003.05.08
QuickReport s bugs





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский