Bir tablonun içini sık sık boşaltmam gerektiği için SP yazdım. Ayrıca autoinc alan var ve bunu da tablo boşaltırken sıfırlamak gerekiyor.
DELETE FROM GIRIS1;
SET GENERATOR GN_GK TO 0;
SUSPEND;
şeklinde olmalı diye biliyorum ama bir türlü compile etmiyor hata veriyor. generator satırı olmadan sorunsuz şekilde çalışıyor.
Bu sıfırlama işini başka nasıl yapabilirim.
Generator sıfırlama
Re: Generator sıfırlama
Ben dogrudan ibscript kullanarak generator u düzenliyorum.
Aşagıdakine benzer bir kod işimi görüyor.
Aşagıdakine benzer bir kod işimi görüyor.
Kod: Tümünü seç
ibtransaction1.active:=True;
ibscript1.script.text:='set generator xxx to 0';
ibscript1.executescript;
ibtransaction1.commit;
Re: Generator sıfırlama
Çok teşekkür ederim bu acil cevabınıza @emin_as . deneyeceğim script kullanmayı da.
bu arada birşey sorayım , transaction mantığında biraz yeniyim. her kullandığımız ibdataset , ibquery için farklı transaction tanımlıyorum , bu yaptığım doğru mu ypksa gereksiz mi. Yani şimdi bu ibscript i mesela deminki GIRIS1 tablosunu düzenlemek için kullandığım datasetin transactionuna bağlayabilirmiyiz.
daha önce clientdataset kullanıyordum tablo boşaltmak için clientdataset.emptytable çok kolaylık sağlıyordu.
bu arada birşey sorayım , transaction mantığında biraz yeniyim. her kullandığımız ibdataset , ibquery için farklı transaction tanımlıyorum , bu yaptığım doğru mu ypksa gereksiz mi. Yani şimdi bu ibscript i mesela deminki GIRIS1 tablosunu düzenlemek için kullandığım datasetin transactionuna bağlayabilirmiyiz.
daha önce clientdataset kullanıyordum tablo boşaltmak için clientdataset.emptytable çok kolaylık sağlıyordu.
Re: Generator sıfırlama
Tüm baglantılar için tek transction veya her baglantı için ayrı transaction kullanmanın avantajları ve dezavantajları vardır. Tek transaction olursa, herhangi bir sorun çıkarsa commit edilmemiş diger bilgiler de geri alınacaktır. Birden fazla transaction olursa, bu durumda kullandıgın ibquerylerin yaptıkları işlemleri görmek için transactionları açıp, kapaman gerekir.
Örnegin bir yerde stok kartı ve fatura girişi pencerelerin var ve fatura girerken, yeni stok kartı tanımlaman gerekti.
- Tek transaction olursa: Stok kartını tanımlayabilir ve fatura girişine devam edebilirsin. Ortak transaction oldugundan birbirlerindeki degişikleri göreceklerdir. Fakat fatura girerken herhangi bir sorun çıkarsa, yeni açtıgın stok bilgileri de kaydedilmemiş olacaktır.
- Ayrı transaction olursa: Yeni stok kartı tanımlasan bile, fatura transactioni önceden başladıgı için stok kartıyla tanımlanan bilgileri görmeyecektir. Transaction ın açılıp, kapatılması gerekir.
Firebird kullanırken bu iki yöntem de idealden uzaktır, dogrusu okumalar ve yazmalar için ayrı transactionlar kullanmaktır. Delphi ile gelen ibx iki ayrı transactionlarla çalışma destegi vermemektedir. Daha profesyonel olan ibdac ve fibplus bileşenleri iki ayrı transactionı desteklemektedir.
http://www.devart.com/ibdac/overview.html
http://www.devrace.com/en/fibplus/
Örnegin bir yerde stok kartı ve fatura girişi pencerelerin var ve fatura girerken, yeni stok kartı tanımlaman gerekti.
- Tek transaction olursa: Stok kartını tanımlayabilir ve fatura girişine devam edebilirsin. Ortak transaction oldugundan birbirlerindeki degişikleri göreceklerdir. Fakat fatura girerken herhangi bir sorun çıkarsa, yeni açtıgın stok bilgileri de kaydedilmemiş olacaktır.
- Ayrı transaction olursa: Yeni stok kartı tanımlasan bile, fatura transactioni önceden başladıgı için stok kartıyla tanımlanan bilgileri görmeyecektir. Transaction ın açılıp, kapatılması gerekir.
Firebird kullanırken bu iki yöntem de idealden uzaktır, dogrusu okumalar ve yazmalar için ayrı transactionlar kullanmaktır. Delphi ile gelen ibx iki ayrı transactionlarla çalışma destegi vermemektedir. Daha profesyonel olan ibdac ve fibplus bileşenleri iki ayrı transactionı desteklemektedir.
http://www.devart.com/ibdac/overview.html
http://www.devrace.com/en/fibplus/