Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.17;
Скачать: CL | DM;

Вниз

При закрытии приложения появляется двойная запись в БД   Найти похожие ветки 

 
ProgC   (2004-09-22 06:44) [0]

Когда добавляю запись в БД, делаю коммит, то все прекрасно. Но стоит мне закрыть приложение, и если в IBTransaction действие по умолчанию стоит "Commit", то в базе появляется еще одна (такая же) запись. Что это и как избавиться?


 
Johnmen ©   (2004-09-22 09:11) [1]

1. Разобраться с понятиями "база данных" и "таблица".
2. Разобраться с добавлением. Двойным добавлением !
3. Разобраться с транзакциями и их применением.


 
ProgC   (2004-09-22 10:05) [2]

Во всем уже разобрался. Это мое не первое приложение с использованием БД. До этого было написанно полноценное приложение документооборота. Но на этот раз, что то не так. Можно ли указать конкретное место моей ошибки или не разобраное понятие?

З.Ы.


> Johnmen ©   (22.09.04 09:11) [1]
> 2. Разобраться с добавлением. Двойным добавлением !


Для этого я и обратился в форум


 
Anatoly Podgoretsky ©   (2004-09-22 10:09) [3]

ProgC   (22.09.04 10:05) [2]
конкретное место - 17 строка.


 
Johnmen ©   (2004-09-22 10:31) [4]

>ProgC   (22.09.04 10:05) [2]
>Для этого я и обратился в форум

Ну так программа твоя 2 (два) раза добавляет. Других вариантов нет. Чудес не бывает.


 
ProgC   (2004-09-22 10:31) [5]

Ладно:

 DataModule1.IBQuery_FieldInfo.Insert;
 DataModule1.IBQuery_FieldInfo.Fields[1].Value:=Tab.Fields[index].Name;
 DataModule1.IBQuery_FieldInfo.Fields[2].Value:=Tab.Fields[index].Caption;
 DataModule1.IBQuery_FieldInfo.Fields[3].Value:=Tab.Fields[index].FieldType;
 DataModule1.IBQuery_FieldInfo.Fields[4].Value:=Tab.Fields[index].FieldLength;
 DataModule1.IBQuery_FieldInfo.Fields[5].Value:=Tab.Fields[index].ValueType;
 DataModule1.IBQuery_FieldInfo.Fields[6].Value:=Tab.Fields[index].Dicsr;
 DataModule1.IBQuery_TableInfo.Locate("name", Tab.Name, []);
 DataModule1.IBQuery_FieldInfo.Fields[7].Value:=
 DataModule1.IBQuery_TableInfo.FieldValues["ID"];
 DataModule1.IBQuery_FieldInfo.Post;
 DataModule1.IBQuery_FieldInfo.Transaction.Commit;

где Tab - мой собственный класс

При выполнении этого кода добаляется запись в БД. Закрываем приложение, в БД, появляется еще одна идентичная запись.


 
ProgC   (2004-09-22 10:36) [6]


> Ну так программа твоя 2 (два) раза добавляет. Других вариантов
> нет. Чудес не бывает.


Запись появляется только если в IBTransaction действие по умолчанию Commit. Не должен он так себя вести, ведь транзакцию я уже подтвердил.


 
Johnmen ©   (2004-09-22 11:08) [7]

И всё-таки чудес не бывает...:)
Попутно возникают вопросы.
Почему бы не сделать просто запрос INSERT INTO вместо вставки записи в набор данных ?
Если уж НД необходим, то почему бы не использовать IBDataSet, для этого предназначенный ? Ведь IBQuery несколько для др. целей.
А что делается после выполнения Commit"а ? Ведь НД после него будет закрыт.


 
ProgC   (2004-09-22 11:20) [8]

Ладно, учту советы. После добавления вызывается

procedure TDataModule1.ActiveConnectBD();
var
 i: integer;
begin
 For i:=0 to IBDatabase_Main.DataSetCount-1 Do
   Begin
     IBDatabase_Main.DataSets[i].Active:=true;
   end;
end;

после этого выполнение программы пожно заканчивать.


 
Johnmen ©   (2004-09-22 11:26) [9]

Чтобы не откравыть заново НД после коммита, делай CommitRetaining.


 
Rule ©   (2004-09-22 11:35) [10]

а ты поставь в событие автерпост showmessage и узнаешь сколько раз у тебя пост происходит


 
Rule ©   (2004-09-22 11:36) [11]

Rule ©   (22.09.04 11:35) [10]
а главное узнаешь когда он происходит ... и кто его вызвал


 
ProgC   (2004-09-22 11:54) [12]

Ладно вечером проверю, потом напешу.



Страницы: 1 вся ветка

Текущий архив: 2004.10.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.039 c
14-1096017589
Prohodil Mimo
2004-09-24 13:19
2004.10.17
Я б в программеры пошёл, пусть меня научат!


10-1046441534
JibSkeart
2003-02-28 17:12
2004.10.17
COM ATL + Events ?


3-1095592178
Nikolai_S
2004-09-19 15:09
2004.10.17
Печать EhDBGrid


3-1095653576
FasetByte
2004-09-20 08:12
2004.10.17
Grid index out of range


4-1095423243
webpauk
2004-09-17 16:14
2004.10.17
Подскажите, pls, Аналог TextWidth