Herkese Kolay gelsin Firebird 1.5 da kayıt girmeden veya değişiklik yapmadığım halde,Buttonla IBDataset1.post ettiğimde..Hata veriyor..Hazırladığım kaydet komutu şu;
procedure TForm1.BitBtn5Click(Sender: TObject);
//Kaydet
var
deg:integer;
begin
deg:=Application.MessageBox('KAYDETMEK iSTiYORMUSUNUZ','KAYDET',MB_YesNO);
if deg=mrYes Then
begin
IBDataSet1.Post;
ShowMessage('DOSYA KAYDEDiLDi');
end
else
ShowMessage('KAYIT iSLEMi iPTAL');
end;
procedure TForm1.BitBtn5Click(Sender: TObject);
//Kaydet
var
deg:integer;
begin
deg := Application.MessageBox('KAYDETMEK iSTiYORMUSUNUZ', 'KAYDET', + 4 + 64 + 0 + 4096);
if deg = 6 Then
begin
IBTransaction1.CommitRetaining;
ShowMessage('BİLGİLER BAŞARIYLA KAYDEDiLDi');
end
else
IBTransaction1.RollbackRetaining;
IBTable1.Close;
IBTable1.Open;
ShowMessage('KAYIT iSLEMi iPTAL EDİLDİ');
end;
yukarıda görmüş olduğun commitretaining bilgileri vt ye yazar birde commit diyebilirsin bu da vt ye yazar fakat transaction işlemini kapatır. commit kullanırsan tekrar IBTransaction1.Start demelisin.
RollbackRetaining ise girmiş olduğun bilgileri vt ye yazmaktan vazgeçtiğin durumlarda yapmalısın. ancak burda birşey var. geri al işleminden sonra bilgiler tabloda görünecektir. update yapman gerekecek veya
hocam yanlış olmasın ben yukarıda vt ye kayıttan bahsediyorum sizin dediğiniz kalıcı olmaz arkadaş vt firebird diyor. paradox değil ki. programı close ettiğinde bilginin kaydedilmediğini anlarsınız. bu iş transaction nın işi... edit denilmesi durumu değiştirmez.....
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez. Mevlana
OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
kadirkurtoglu yazdı:hocam yanlış olmasın ben yukarıda vt ye kayıttan bahsediyorum sizin dediğiniz kalıcı olmaz arkadaş vt firebird diyor. paradox değil ki. programı close ettiğinde bilginin kaydedilmediğini anlarsınız. bu iş transaction nın işi... edit denilmesi durumu değiştirmez.....
edit denmesi hatayı ortadan kaldırır
ben transaction ları afterpost ve afterdelete de kullandığımiçin oyle yazdım
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Hatalı bir durum sözkonusu Zaten IBDataSet edit veya insert modunda değilse doğal olarak post edemiyecektir. Onun yerine şöyle bir kontrol işi garanti eder;
var
c:Integer;
begin
if IBDataSet1.Modified then
begin
c:=Application.MessageBox('FORM DA DEGiSiKLiKLER OLDU CIKMADAN ÖNCE KAYDEDiLSiNMi', 'CIKIS',Mb_YesNoCancel + Mb_IconQuestion);
case c of
IdYes:
IBDataSet1.Post;
IdNo: ;
IdCancel:
Action := caNone;
end;
end;
Çok sağol...
Ben Bu kodla Formun On Close Olayına yazıp,değişiklikleri kaydediyorum..
,hiç bir işlem yapmadan (Kulanıcılar bunu yapıyor) kaydet butonuna basmak ...Bunuda düşünmek zorundayız...
rSimsek Hocamın verdiği komut daha sağlıklı hiç bir hata vermiyor..