Autoincremetle Kayıt
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Autoincremetle Kayıt
İyi Aksamlar
Öncelikle sık sık soru sorarak kafanızı şişirdiğim için özür dilerim.
Sorum şu olacak veritabanında tanımladıgım autoincrement olayları
IBTable1.Post olayını yapmama ragmen autoincrement çalışmıyor ancak programı kapatıp açtıgım zaman numaraların arttıgını goruyorum. Ben program içerisinde direct olarak nasıl artırabilirm.
Bu olay sunun için gerekli yaptıgım 3 veritanındaki bilgileri 4'ncü veritabanına kaydedeceğim ama bunların ID numaralarıda gerekiyor.O Yüzdende soyle bir kod kullandım
Kaydet Butonumun içerisinde
Data.StokHareket.FieldByName('stokkodu').Asstring :=Data.BilgisayarStok.FieldByName('stokkodu').Asstring;
Data.StokHareket.FieldByName('urunadi').Asstring :=Data.BilgisayarStok.FieldByName('urunadi').Asstring ;
Data.StokHareket.FieldByName('urunserino').Asstring :=Data.BilgisayarStok.FieldByName('urunserino').Asstring;
Data.StokHareket.FieldByName('Birimi').Asstring :=Data.BilgisayarStok.FieldByName('Birimi').Asstring;
Data.StokHareket.FieldByName('BirimFiyati').AsFloat :=Data.BilgisayarStok.FieldByName('BirimFiyati').AsFloat;
Data.StokHareket.FieldByName('Stokgiris').AsFloat :=Data.BilgisayarStok.FieldByName('Stokgiris').AsFloat;
Data.StokHareket.FieldByName('StokCikis').AsFloat :=Data.BilgisayarStok.FieldByName('StokCikis').AsFloat;
Data.StokHareket.FieldByName('ToplamStok').AsFloat :=Data.BilgisayarStok.FieldByName('ToplamStok').AsFloat;
Data.StokHareket.FieldByName('Bilgisayarid').AsInteger :=Data.IBDataSet1.FieldByName('Otobilid').AsInteger;
Data.BilgisayarStok.Edit;
Data.BilgisayarStok.Post;
Data.StokHAreket.Edit;
Data.StokHAreket.Post;
Data.StokHAreket.Refresh;[/code]
Bu şekilde yaptıgımda Stokhareketteki OtobilID'nin degeri her zaman '0' luyor. YArdımlarınız için şimdiden Teşekkürler
İyi Akşamlar
Öncelikle sık sık soru sorarak kafanızı şişirdiğim için özür dilerim.
Sorum şu olacak veritabanında tanımladıgım autoincrement olayları
IBTable1.Post olayını yapmama ragmen autoincrement çalışmıyor ancak programı kapatıp açtıgım zaman numaraların arttıgını goruyorum. Ben program içerisinde direct olarak nasıl artırabilirm.
Bu olay sunun için gerekli yaptıgım 3 veritanındaki bilgileri 4'ncü veritabanına kaydedeceğim ama bunların ID numaralarıda gerekiyor.O Yüzdende soyle bir kod kullandım
Kaydet Butonumun içerisinde
Data.StokHareket.FieldByName('stokkodu').Asstring :=Data.BilgisayarStok.FieldByName('stokkodu').Asstring;
Data.StokHareket.FieldByName('urunadi').Asstring :=Data.BilgisayarStok.FieldByName('urunadi').Asstring ;
Data.StokHareket.FieldByName('urunserino').Asstring :=Data.BilgisayarStok.FieldByName('urunserino').Asstring;
Data.StokHareket.FieldByName('Birimi').Asstring :=Data.BilgisayarStok.FieldByName('Birimi').Asstring;
Data.StokHareket.FieldByName('BirimFiyati').AsFloat :=Data.BilgisayarStok.FieldByName('BirimFiyati').AsFloat;
Data.StokHareket.FieldByName('Stokgiris').AsFloat :=Data.BilgisayarStok.FieldByName('Stokgiris').AsFloat;
Data.StokHareket.FieldByName('StokCikis').AsFloat :=Data.BilgisayarStok.FieldByName('StokCikis').AsFloat;
Data.StokHareket.FieldByName('ToplamStok').AsFloat :=Data.BilgisayarStok.FieldByName('ToplamStok').AsFloat;
Data.StokHareket.FieldByName('Bilgisayarid').AsInteger :=Data.IBDataSet1.FieldByName('Otobilid').AsInteger;
Data.BilgisayarStok.Edit;
Data.BilgisayarStok.Post;
Data.StokHAreket.Edit;
Data.StokHAreket.Post;
Data.StokHAreket.Refresh;[/code]
Bu şekilde yaptıgımda Stokhareketteki OtobilID'nin degeri her zaman '0' luyor. YArdımlarınız için şimdiden Teşekkürler
İyi Akşamlar
Hocam autoincrement alanlara siz müdale edemezsiniz...
ibtable kullanıyorsunuz ama veri tabanınız interbase mi firibird mü ?
ayrıca ;
FireBird ise bir generator tanımlayıp trigger ile arttırmanız gerekir id
değerinizi...
örneğin ;
veya hutta autoincrement tanımladıgınız field ı integer tanımlayın... programı açtıgınızda gitsin son kaydı okusun daha sonra ona 1 ekleyip yeni kayda yazsın...
şeklinde bu probleminizide giderebilirsiniz...
Kolay Gelsin..
ibtable kullanıyorsunuz ama veri tabanınız interbase mi firibird mü ?
ayrıca ;
FireBird ise bir generator tanımlayıp trigger ile arttırmanız gerekir id
değerinizi...
örneğin ;
Kod: Tümünü seç
AS
BEGIN
IF (NEW.ID IS NULL) THEN
NEW.ID = GEN_ID(CIFTCILER_ID_GEN, 1);
END
Kod: Tümünü seç
ibtable1.last;
deger:=ibtable1.fieldbyname('alan').asinteger;
ibtable.append;
deger:=deger+1;
ibtable1.fieldbyname('alan').asinteger:=deger;
Kolay Gelsin..
Gökmen Hocam'ın yöntemi en güzel yöntem yanlız bir şey eklemek istiyorum bunu Delphi 6 ve Delphi 7 kullanıyorsan yapabilirsin bu bildiğim kadarıyla Delphi 5 ve alt sürümlerinde yok.gkimirti yazdı:o alana iliskin bir generator olusturursanız ibdataset ten bu generatoru direkt kullanabilirsiniz. Her yeni kayıtta da otomatik artırılır
Şayet Delphi 5 kullanıyorsan SP yazman gerekecek (Makale ve İpucu kısmında Şair abimin makalesi var)
Kolay Gelsin...
Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Hocam bu kod işimi gordu cok saolasın teşekkürlerm4st3rmus yazdı:şeklinde bu probleminizide giderebilirsiniz...Kod: Tümünü seç
ibtable1.last; deger:=ibtable1.fieldbyname('alan').asinteger; ibtable.append; deger:=deger+1; ibtable1.fieldbyname('alan').asinteger:=deger;
Kolay Gelsin..
Merhaba
Daha önce yukarıdaki bir kod yardımıyla işimi hallediyordum fakat bir kaç arkadaştan bu yolun pek kullanışlı olmadıgını duydum Triger ile yapmamın daha dogru oldugu soylendi ben zaten bunu IbExpert kullanarak yapıyorum fakat program içerisinde Ibtable1.Post dediğimde otomatik olarak trigger çalışmıyor.
Ibtable'in Afterpost'unda
IBTransaction1.CommitRetaining; ile commit de yapıyorum ama bir türlü program çalışırken otomatik kayıt artmıyor.
Fakat ilginç bir sorun IBexpertde generator düzgün bir şekilde çalışıyor. Yani IBExpertte kayıt eklediğim zaman hiç prblem olmadan sayı artıyor
Delphi içinde ise veritabanını kapatıp tekrar actıgımzaman otomatik kayıt sayısının arttıgını görüyorum.
Gözden kaçırdığım bir şey var mutlaka ama ben bulamadım.
Yardımlarınız için Teşekkürler.
Delphi5 Professonial
Veritabanı : Firebird 1.5
Table :IBtable
Kod: Tümünü seç
ibtable1.last;
deger:=ibtable1.fieldbyname('alan').asinteger;
ibtable.append;
deger:=deger+1;
ibtable1.fieldbyname('alan').asinteger:=deger
Ibtable'in Afterpost'unda
IBTransaction1.CommitRetaining; ile commit de yapıyorum ama bir türlü program çalışırken otomatik kayıt artmıyor.
Fakat ilginç bir sorun IBexpertde generator düzgün bir şekilde çalışıyor. Yani IBExpertte kayıt eklediğim zaman hiç prblem olmadan sayı artıyor
Delphi içinde ise veritabanını kapatıp tekrar actıgımzaman otomatik kayıt sayısının arttıgını görüyorum.
Gözden kaçırdığım bir şey var mutlaka ama ben bulamadım.
Yardımlarınız için Teşekkürler.
Delphi5 Professonial
Veritabanı : Firebird 1.5
Table :IBtable
Eğer ilk mesajda yazdığın kod ise 1. Sen edit ediyorsun yani var olan bir kaydı değiştiriyorsun. 2 "Edit" ten önce atamaları yapıyorsun triggerlarla ilgili makaleler olucak onları oku
kolay gele
kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
hepinize ilginizden dolayı teşekkür ederim
Sayın Admin o makaleleri okudum ama gerek benim biraz yeni olmam gerekse delphi ile sürekli ilgilenemem ve sanırım birde delphi 5 kullanmam
olayları biraz uzatıyor.
Sayın Trsoft sizin soylediğiniz işlemide yaptım. Ama bende olmadı
Sanırım delphi5 ten kaynaklanan bir problem bu
Ben bunu Ibtable'ın afrterpostunda su kodlar ile olayı cozdum
Teşekkür ederim Başka bir arkadasın basına gelirse bu kesin bir cözüm gibi görünüyor
Sayın Admin o makaleleri okudum ama gerek benim biraz yeni olmam gerekse delphi ile sürekli ilgilenemem ve sanırım birde delphi 5 kullanmam
olayları biraz uzatıyor.
Sayın Trsoft sizin soylediğiniz işlemide yaptım. Ama bende olmadı
Sanırım delphi5 ten kaynaklanan bir problem bu
Ben bunu Ibtable'ın afrterpostunda su kodlar ile olayı cozdum
Kod: Tümünü seç
Var
Eskiid:Integer;
Begin
IBTransaction1.Commit;
IbTable1.Open;
Ibtable1.Last;
Eskiid:=Ibtable1.Fieldbyname('otomatik').AsInteger;
Ibtable1.Locate('otomatik',eskiid,[Lopartialkey]);
end;
Yaptığınız kodlama problem çıkartırsa Şair Abi min makalesini mutlaka okumanızı tafsiye ederim. viewtopic.php?t=332
Kolay Gelsin...
Kolay Gelsin...
Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.