Appendde OnPostta tetiklenen Autoincrement değeri alabilmek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
mhizar
Üye
Mesajlar: 78
Kayıt: 30 May 2005 11:06

Appendde OnPostta tetiklenen Autoincrement değeri alabilmek

Mesaj gönderen mhizar »

Arkadaşlar vt olarak firebird kullanıyorum.Birde autoincrement alanım var ama ibdataset tarafından onpost olayında tetikleniyor.Ama ben bu alanın değerini bu dataset append modunda iken kullanmak ve bir değişkene atamak istiyorum.Ama bu alan onpost ta şekillendiğinden dolayısıyla append modunda sıfır değeri atıyor değişkene.SQL ile max değerini alıp yada son kaydın değerini alıp 1 artırmak aklıma geldi.Ama eğer sondan kayıut silinirse silinen kaydın değeri tekrar verilemediğinden bu 1 artırma olayı hata verecektir.
Ne yapmamı öneririsiniz.?
Teşekkürler.
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

Onpost'u OnNewRecord yaparsan append dediğin anda id belirecektir. senin istediğinde bu id yi append dediğin anda almak ise çözüm OnNewRecord
Kullanıcı avatarı
cihan
Üye
Mesajlar: 65
Kayıt: 02 Ağu 2005 03:34

Re: Appendde OnPostta tetiklenen Autoincrement değeri alabil

Mesaj gönderen cihan »

mhizar yazdı:Arkadaşlar vt olarak firebird kullanıyorum.Birde autoincrement alanım var ama ibdataset tarafından onpost olayında tetikleniyor.Ama ben bu alanın değerini bu dataset append modunda iken kullanmak ve bir değişkene atamak istiyorum.Ama bu alan onpost ta şekillendiğinden dolayısıyla append modunda sıfır değeri atıyor değişkene.SQL ile max değerini alıp yada son kaydın değerini alıp 1 artırmak aklıma geldi.Ama eğer sondan kayıut silinirse silinen kaydın değeri tekrar verilemediğinden bu 1 artırma olayı hata verecektir.
Ne yapmamı öneririsiniz.?
Teşekkürler.
autoincrement alana değeri generator kullanarak mı aktarıyorsunuz yoksa değeri kendiniz mi artırıyorsunuz eğer generator kullanıyor iseniz bu değeri select gen_id(generator,0) from rdb$database ile alabilirsiniz
mhizar
Üye
Mesajlar: 78
Kayıt: 30 May 2005 11:06

Mesaj gönderen mhizar »

Onpost'u OnNewRecord yaparsan append dediğin anda id belirecektir. senin istediğinde bu id yi append dediğin anda almak ise çözüm OnNewRecord
OnNewRecordda artırmak istemiyorum.Vazgeçme durumlarındada bir artırıyor çünkü.
autoincrement alana değeri generator kullanarak mı aktarıyorsunuz yoksa değeri kendiniz mi artırıyorsunuz eğer generator kullanıyor iseniz bu değeri select gen_id(generator,0) from rdb$database ile alabilirsiniz
Generatör ile artırıyorum.Genereatör de ibdatasete bağlı.
Kullanıcı avatarı
cihan
Üye
Mesajlar: 65
Kayıt: 02 Ağu 2005 03:34

Mesaj gönderen cihan »

mhizar yazdı:
Onpost'u OnNewRecord yaparsan append dediğin anda id belirecektir. senin istediğinde bu id yi append dediğin anda almak ise çözüm OnNewRecord
OnNewRecordda artırmak istemiyorum.Vazgeçme durumlarındada bir artırıyor çünkü.
autoincrement alana değeri generator kullanarak mı aktarıyorsunuz yoksa değeri kendiniz mi artırıyorsunuz eğer generator kullanıyor iseniz bu değeri select gen_id(generator,0) from rdb$database ile alabilirsiniz
Generatör ile artırıyorum.Genereatör de ibdatasete bağlı.
ayrı bir query ye

Kod: Tümünü seç

select gen_id(generator,0)as sonnumara from rdb$database 
ile en son numarayi alabilirsin
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

mhizar
Üye
Mesajlar: 78
Kayıt: 30 May 2005 11:06

Mesaj gönderen mhizar »

Arkadaşlar her ikinizede teşekkür ederim.Yukarıda da dediğim gibi MAX almak sorun çıkarıyordu.Son kayıt silindiyse generatörün değer ile son kaydıun id si farklı oluyor idi.Ancak bu

Kod: Tümünü seç

select gen_id(generator,0)as sonnumara from rdb$database 
olayı bitirdi.Ne olursa olsun bu generatörün değerini veriyor.Teşekkürler.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

evet sorun halloldu ama gözden kaçırmamanız gereken bir nokta var.
oda sizin aldığınız değer kesinlikle kayda verilecek değer değil.
birden fazla bilgisayarın olduğu durumlarda sıkıntı çıkarabilir.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
mhizar
Üye
Mesajlar: 78
Kayıt: 30 May 2005 11:06

Mesaj gönderen mhizar »

aslangeri yazdı:evet sorun halloldu ama gözden kaçırmamanız gereken bir nokta var.
oda sizin aldığınız değer kesinlikle kayda verilecek değer değil.
birden fazla bilgisayarın olduğu durumlarda sıkıntı çıkarabilir.
kolay gelsin.
Kesinlikle haklısın.bu yöntemde işe yaramıyor.Denemelerde bizzat bunu gördüm.Ama sorun nasıl çözülecek tek çözüm OnNewRecord mu yani?Başka çözüm yokmu?
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

@mhizar
sanırım generator değerini tablona manuel vermen lazım.

Kod: Tümünü seç

select gen_id(generator,1)as sonnumara from rdb$database
ile generatorun değerini alıp tablonun id sine verbilirsin.
unutmaman nokta insert sql de id alanına da değer göndermen.
birde eğer beforeinsert trigerinde id ye değer atadıysan onun null yada 0 olup olmadığını kontrol etmen lazım.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla