IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Механизм транзакции в БД, Проблема с сохранением.
сообщение
Сообщение #1


Бывалый
****

Группа: Пользователи
Сообщений: 318
Пол: Мужской

Репутация: -  0  +


Всем привет.

Имеется таблица, и имеются кнопки--Open, StartTranzaction, Rollback, Commit...и в них такие коды:

procedure TForm1.Button20Click(Sender: TObject);
begin
try

database1.Open;

except
database1.Rollback;
end;
end;


procedure TForm1.Button21Click(Sender: TObject);
begin
database1.StartTransaction;
end;

procedure TForm1.Button22Click(Sender: TObject);
begin
database1.Rollback;
end;

procedure TForm1.Button23Click(Sender: TObject);
begin
database1.Commit;
end;

end.



Мои действия--Нажимаю на кнопку Open, потом на кнопку StartTranzaction, далее изменяю данные в таблице, нажимаю на "галочку" в компоненте DBNavigator и далее нажимаю на кнопку Commit. Закрываю программу полностью. И ее открываю, и выскакивает ошибка Index is out of Date. Index int2. Не пойму в чем дело...

Добавлено через 9 мин.
сделал скриншот настроек Query, Table, Datasource, DataBase.

Добавлено через 12 мин.
Такие задания:

4.Настроить связи между таблицами.(этого я не сделал)
5.Используя механизм транзакций выполнить модификацию данных (добавление, изменение, удаление) используя конструкцию try except end; --- в этом пункте и есть эта выше описанная проблема.


Теория к этим пунктам...может тут я что то неи учел..
4 пункт я не стал делать...может изза этого?

4. Работа со связанными таблицами. Между отдельными таблицами БД может существовать связь, которая организуется через поля связи таблиц. Поля связи обязательно должны быть индексированными. Связь между таблицами определяет отношение подчиненности, при котором одна таблица является главной, а вторая - подчиненной.
Для организации связи между таблицами в подчиненной таблице используются следующие свойства:
 MasterSource – источник данных главной таблицы.
 IndexName – текущий индекс подчиненной таблицы.
 IndexFieldNames – поле или поля связи текущего индекса подчиненной таблицы.
 MasterFields – поле или поля связи индекса главной таблицы.
Работа со связанными таблицами имеет следующие особенности:
1). При редактировании поля связи может нарушиться связь между записями двух таблиц. Поэтому при редактировании поля связи записи главной таблицы нужно соответственно изменять и значения поля связи всех подчиненных таблиц.
2). При удалении записи главной таблицы нужно удалять и соответствующие ей записи в подчиненной таблице (каскадное удаление).
3). При добавлении записи в подчиненную таблицу значение поля связи формируется автоматически по значению поля связи главной таблицы.

5.Использование механизма транзакций. При работе с несколькими таблицами БД взаимосвязанные изменения периодически вносятся в разные таблицы. При возникновении какой-либо ошибки, новая запись может быть не занесена в одну из таблиц, в результате нарушится целостность БД, и она будет содержать некорректные значения. Для поддержания целостности БД используется механизм транзакций. Транзакция представляет собой последовательность операций, обычно выполняемую для нескольких наборов данных. Транзакция переводит БД из одного целостного состояния в другое. Транзакция может быть явной или неявной. Неявная транзакция запускается автоматически при модификации набора данных. Неявная транзакция утверждается методом Post закрепления изменений в наборе данных, а отменяется методом Cancel. Явная транзакция означает, что программист должен самостоятельно организовать операции изменения наборов данных. Для реализации механизма явной транзакции используются методы StartTransaction, Commit и Rollback компонента DataBase.


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 30.04.2024 20:23
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name