Артур Мухаметзянов
Артур Мухаметзянов

Как пользоваться транзакциями в Interbase\Firebird для записи данных? (Delphi) Стоит щас Read commited

if combobox1.Text<>'' then begin
ibtransaction1.StartTransaction;
form1.n1.visible:=true;
list:=tstringlist.Create;
datamodule1.ibdatabase1.GetTableNames(list);

if list.indexof(combobox1.text)=-1 then
begin
ibtable1.active:=false;
ibTable1.Database:=datamodule1.ibdatabase1;
ibtable1.close;
ibtable1.TableName:=combobox1.Text;
ibtable1.FieldDefs.clear;
ibtable1.FieldDefs.add('id',ftinteger);
ibtable1.FieldDefs.add('name test',ftblob,0,false);
ibtable1.FieldDefs.add('question',ftblob,0,false);
ibtable1.FieldDefs.add('type of question',ftinteger,0,false);
ibtable1.FieldDefs.Add('answers',ftblob,0,false);
ibtable1.FieldDefs.Add('media',ftboolean);
ibtable1.FieldDefs.Add('media path',ftblob,0,false);
ibtable1.CreateTable;
ibtable1.close;
ibtable1.TableName:=combobox1.Text;
ibtable1.Active:=true;
ibtable1.open;
ibtable1.Last;
ibtable1.Append;
ibtable1.edit;

if RadioGroup1.ItemIndex=0 then
begin
ibtable1.FieldValues['type of question']:=1;
ibtable1.FieldValues['answers']:=edit10.text;
end;

if RadioGroup1.ItemIndex=1 then
begin
ibtable1.FieldValues['type of question']:=2;
ibtable1.FieldValues['answers']:=edit10.text;
end;

if RadioGroup1.ItemIndex=2 then
begin
ibtable1.FieldValues['type of question']:=3;
ibtable1.FieldValues['answers']:=edit10.text;
end;

if RadioGroup1.ItemIndex=3 then
begin
ibtable1.FieldValues['type of question']:=4;
ibtable1.FieldValues['answers']:=edit10.text;
end;

ibtable1.FieldValues['name test']:=combobox1.text;
ibtable1.FieldValues['question']:=memo1.text;
ibtable1.FieldValues['media path']:=edit14.text;
if RadioGroup2.ItemIndex=0 then ibtable1.FieldValues['media']:=0;
if RadioGroup2.ItemIndex=1 then ibtable1.FieldValues['media']:=1;
ibtable1.post;
ibtable1.Next;

end else
begin
ibtable1.close;
ibtable1.TableName:=combobox1.Text;
ibtable1.open;
ibtable1.Database:=datamodule1.ibdatabase1;
ibtable1.Active:=true;
ibtable1.Last;
ibtable1.Append;
ibtable1.edit;
if RadioGroup1.ItemIndex=0 then
begin
ibtable1.FieldValues['type of question']:=1;
ibtable1.FieldValues['answers']:=edit10.text;
end;

if RadioGroup1.ItemIndex=1 then
begin
ibtable1.FieldValues['type of question']:=2;
ibtable1.FieldValues['answers']:=edit10.text;
end;

if RadioGroup1.ItemIndex=2 then
begin
ibtable1.FieldValues['type of question']:=3;
ibtable1.FieldValues['answers']:=edit10.text;
end;

if RadioGroup1.ItemIndex=3 then
begin
ibtable1.FieldValues['type of question']:=4;
ibtable1.FieldValues['answers']:=edit10.text;
end;

ibtable1.FieldValues['name test']:=combobox1.text;
ibtable1.FieldValues['question']:=memo1.text;
ibtable1.FieldValues['media path']:=edit14.text;
if RadioGroup2.ItemIndex=0 then ibtable1.FieldValues['media']:=0;
if RadioGroup2.ItemIndex=1 then ibtable1.FieldValues['media']:=1;

ibtable1.post;

ibtable1.Next;

end;
ibtransaction1.commit;
ibtransaction1.active:=false;
end else showmessage('Введите name test');

end;

щас выскакивает ошибка при таком расположении

в каких местах надо вставлять и как эти транзакции

Кр
Кристина

Меняй уровень изоляции, в связи с необходимыми условиями. RC нормальный уровень для начинающего

Похожие вопросы
База данных или? (DELPHI)
как записать данные в tstringlist delphi ?
Как создать базу данных Firebird из скрипта, сгенерированного в Sybase PowerDesigner 16??
Базы данных и учетные записи
Двоичные данные в TImage Delphi
Что делает оператор Read в Паскале? И как этим оператором пользоваться? В чем смысл?
Помогите с Delphi (Массивы записей, и использование типизированных файлов)
Почему у меня в Delphi фокус ввода не переходит к нужной записи?
Как создать базу данных на Delphi?
Delphi-чего он стоит?