Primary key post problemi

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
ifthen
Üye
Mesajlar: 42
Kayıt: 13 Nis 2006 09:43

Primary key post problemi

Mesaj gönderen ifthen »

Merhabalar,

Firebird de trigger ve genarator kullanarak otomatik artan bir ID oluşturdum. Bu ID numarasınına NOT NULL ve primary key özelliği verip delphide post ettiğimde bu alanın null olamayacağı ile ilgili bir hata mesajı alıyorum. NOT NULL ve primary key özelliklerini kaldırdığımda da girmiş olduğum kayıtlar sıralanmıyor. Bu problemi NOT NULL ve primary key özelliklerini kaldırmadan nasıl hallederim. Yardımlarınız için şimdiden teşekkür ederim.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Delphi dataset bileşenleri Firebird'un atadığı generator id'yi otomatik okuyamıyor. Bunun için birkaç yöntem mevcut. Generator'u kendin Delphi içinden alıp ilgili alana atamak gibi. GEN_ID Firebird trigger kelimeleri ile forumda aratabilirsin.
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

merhabalar. primary key'in not null yani boş geçilemez özelliği vardır. özelliği de burdadır zaten amaç bi benzerinin olmasının ortadan kaldırmaktır. autoinc olarak belirlediğiniz alanı delphi de eğer ibx kullanıyorsanız. IBDataset bileşeninin Generator özelliğini ayarlamanız gerekmektedir. bu ayarları yaparsanız sorununuz çözülecektir...
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
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Mesaj gönderen undefined »

İlgili primary key fieldinin required özelliğini false yaparsan sorun çözülür.
Kolay gelsin
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

IBX FIBPlus hangi bileşen setini kullandığınızı yazarsanız onlara göre Generator alanları ekleyip her yeni kayıttı otomatik generator u çalıştırıp alana ataması sağlanabiliyor :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
ifthen
Üye
Mesajlar: 42
Kayıt: 13 Nis 2006 09:43

Mesaj gönderen ifthen »

interbase bileşenlerini kullanıyorum. IBtable da generated field özelliği yok. Ben programda IBtable ı IBdataset ile değiştirsem problem olurmu. Teşekürler...
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

IBDataSet ile generator kullanabilirsin.. IBTable ile AfterInsert içinde kodla Generator u alıp alana ataman da sorunu çözer.. Fakat IBDataSet le daha basit yapacağın işi uzatmış olursun :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Akin_Delphi
Üye
Mesajlar: 163
Kayıt: 06 Nis 2006 12:22

Mesaj gönderen Akin_Delphi »

Sayın ifthen,

Eğer IBX bileşenlerini kullanıyorsanız, IBDataSet'in GeneratorField özelliği var onu ayarladığınızda post ettiğiniz kaydın generator'la üretilen kayıtlarını alabiliyor ve veri bilinçli bileşenler üzerinde gösterebiliyorsunuz.

IBDataSet bileşenini seçtikten sonra Object Inspector'dan GeneratorField özelliğine tıklayınız. Çıkan özellik editöründen Generator yazan kısımda ilgili Generator'u seçiniz. Onun altındaki Field kısmında bu Generator'un bağlı olduğu alanı seçiniz. Daha sonra Apply Event kısmından da OnPost'u seçiniz. (On New Record'u ya da OnServer'ı seçmeyiniz. Çünkü On New Record dediğinizde, her yeni kayıt girmeye çalıştığınızda yeni bir değer üretiyor ve dolayısıyla sıra numarası alıp başını gidiyor. OnServer derseniz de sanki ayar yapmamış gibi oluyorsunuz.)

Benimkinin sürümü IBX 5,04. Diğerlerinde nasıldır bilmiyorum. Ancak tahminimce benzer özellikler olmalı.
Saygılar ve Başarılar
ifthen
Üye
Mesajlar: 42
Kayıt: 13 Nis 2006 09:43

Mesaj gönderen ifthen »

Post problemini makale ve ipucu kısmında anlatıldığı şekilde hallettim. Yanlız bu defada sıralama yapımıyor. Benim tablomda otomatik artan alanım VardiyaNO. Aynı zamanda bu alan için index de ayarladım. Yeni bir kayıt eklediğimde ve tabloyu kapatıp açtığımda girmiş olduğum son kayıt tablodaki kayıtların ortasına kayıyor.

Örneğin

VardiyaNO
11
14
13
15

Yani artan sıralama yapmıyor. Bu konuda yardımcı olan arkadaşlara şimdiden teşşekkür ederim.
Akin_Delphi
Üye
Mesajlar: 163
Kayıt: 06 Nis 2006 12:22

Mesaj gönderen Akin_Delphi »

ifthen yazdı:Post problemini makale ve ipucu kısmında anlatıldığı şekilde hallettim. Yanlız bu defada sıralama yapımıyor. Benim tablomda otomatik artan alanım VardiyaNO. Aynı zamanda bu alan için index de ayarladım. Yeni bir kayıt eklediğimde ve tabloyu kapatıp açtığımda girmiş olduğum son kayıt tablodaki kayıtların ortasına kayıyor.

Örneğin

VardiyaNO
11
14
13
15

Yani artan sıralama yapmıyor. Bu konuda yardımcı olan arkadaşlara şimdiden teşşekkür ederim.
Sanırım SQL ifadesine "Order by VardiyaNO" eklenmesi lazım. Ancak tabi ki VardiyaNO indeksli olmalı.
Başarılar
Cevapla