Arkadaşlar table a kullandığım tool dan sabit olacağı için veri girişi yapmıştım bu kayıtlardan birini sileyim dedim kullandığım ems manager dan silemedim kayıtları siliyorum commit ediyorum kayıtlar geri geliyor
program satırlarından sileyim dedim yazdığı kod satırları şunlar herhalde yanlış değildir
If not datamodule1.IBTransaction1.InTransaction then
Begin
DataModule1.IBTransaction1.StartTransaction;
DataModule1.Tbl_Doviz.Delete;
DataModule1.IBTransaction1.CommitRetaining;
end;
direk yukarıdaki gibi yaptığımda da Transaction is active mesajını alıyorum bu aktif transaction nerdedir yahu ne yanlış yapıyorum .daha acemiyim biliyormusunuz.
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
ibtable yada ibdataset,ibquery nesneleri calıstıgında zaten bir transacion baslatırlar
ayrıca senin starttransaction demene gerek yok
delphide bu sekilde bir hata veriyo aktif oldugu icin
bu satırları kaldırırsan sorun cıkmaması lazım
ayrıca starttransaction ı ben sadece delete update gibi queryleri ibsql ile calıstıracagım zaman kullanıyoum...
peki iki index varsa mesela doviz ve id diye iki field index olarak tanımlandıysa bunların silme ve modify sql komutları nasıl olmalı
tabloda 3 tane field var resim doviz ve id - id ve doviz primary key olarak tanımlandı
S.A.
Bildiğim kadarı ile tabloyu open ettiğin zaman transaction otomatik olarak başlıyor. kontrol işlemini şöyle yaparsan (ben öyle yapıyorum) daha sağlam olur gibi
if not DataModule1.IBTransaction1.active then DataModule1.IBTransaction1.StartTransaction;
DataModule1.Tbl_Doviz.Delete;
if DataModule1.IBTransaction1.active then
DataModule1.IBTransaction1.CommitRetaining;
belki delete den sonra active kontrol etmeye gerekyoktur ama olayın anlaşılması için kullandım.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
IBX de ibtable yada ibquery yi open ettiğin anda bağlı olan transaction açılır, sen bunu start etmene gerek yok.
delete içinse ibupdatesql in ibquery ye bağla daha sonra property editörden prkey ye ne verdiysen onları seç daha sonra query yi oluştur dediğinde butonun adını unuttum o sana tüm sql leri oluşturur. afterdelete ve afterpost ada
daha onceki mesajlarda da gecti mutlaka bir primarykey kullanmakta fayda var diye prkey olmazsa vt neye gore silme yapacak
eger bir dataset ile update,insert yada delete kodu calıstırdıgınızda hicbir degisiklik olmuyorsa sql kodları olusturulmamıs. Dataset editorden (yada updatesql editorden) prkey secilir sag taraftaki listeden de update edilecek alanlar secilir, sonra generatesql denir uc islem icinde sql kodları olusturulur.
bazen karmasık join ifadeler vs. varsa olusan sql ler bi gozden gecirilir, bazen tablo ismi gibi seyleri eklemede sorun olabiliyor..
gerci ben d5 icin olanı kullanıyorum belki digerlerinde yoktur boyle birsey...
Aslangeri arkadaşım freeman35 dediği doğru ilk önc farkındaysan en üstte yazdığım kod senin yazdığın kod ile benzer ve o şekilde yaptığımda zaten aktif transaction var diye hata veriyor ve freeman35 in dediği gibi transaction otomatik start ediyor bu konuda görüşlerinizi paylaştığınız için ikinizede çok teşekkür ederim ayrıca istransaction parametrelerini aratıp bir bakacağım yalnız ister istemez aynı başlık altında iki farklı konu açmış oldum diğer konu içinde fikirleriniz varsa paylaşırsanız sevinirim. Burda amaç kısaca şu aktarayım
bazı tablelerde indexte iki tane fiel belirtmek zorundayım kendimce tabi doğrusu nedir sizden öğreneceğim bu field lardan biri genelde ID diğeri ise tablonun kafa fieldı oluyor mesela doviz tablosunda olduğu gibi doviz field ve ID field ları indexte sebep aynı dovız adından ikincisi tekrar etmesin diye Id ise başka tablolara bu dövizin adını değilde ilgili dövizin id sini alıyorumki doviz adında bir değişiklik olduğunda diğer tablolarda dğiştirmek zorunda kalmayayım diye umarım buraya kadar bir fikir sunmanıza yardımcı olacak kadar anlatabilmişimdir. şimdi yukarı soru-cevaplarda da belirttiğim gibi bu şekilde iki anahtarı olan bir tablenin sqlupdate teki delete, modify vs. işlemleri hangi anahtara göre olmalı
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
bazı ozel tablolarda iki hatta uc tane prkey olabilir mesela id1 ve id2 alanı ortak prkey olan bir tabloda
1,1
1,2
2,1
2,2
gibi kayııtlar olabilmekte
bu durumda bu iki alan prkey olarak secilip sql olusturulur.