Trigger çalışmamaya başladı

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
hbulus
Üye
Mesajlar: 163
Kayıt: 14 Tem 2003 11:30
İletişim:

Trigger çalışmamaya başladı

Mesaj gönderen hbulus »

S.a.
Firebird'le yeni çalışmaya başladım. Bir projeye başlamıştım. Veritabanını tasarlayıp, kodlamayı da bitirdim. Triggerlarım falan gayet güzel olmuştu. Problem ise veritabanına bir tabloya sonradan bir kaç field ekledikten sonra başladı. Before insert triggerim çalışmamaya başladı. Veri tabanından kontrol ettim, trigger çalışıyor fakat delphi tarafında programdan veri girişinde trigger çalışmıyor. Halbuki kodlamada hiçbir ek yapmadım, sadece eklediğim fieldleri formlara yerleştirdim. Projemin eski exe'si problemsiz çalışıyor. Yeni eklediğim hali çalışmıyor. Acaba hatayı nerede yapıyorum :?:
Erbab-ı kemâli çekemez nakıs olan, rencide olur Dide-i Huffaş ziyadan....
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

CachedUpdates çalışıyor olabilir misiniz? Yada commit yapmıyor olabilir misiniz?

Hangi DB componentlerini kullanıyorsunuz?

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
hbulus
Üye
Mesajlar: 163
Kayıt: 14 Tem 2003 11:30
İletişim:

Mesaj gönderen hbulus »

Ibdataset kullanıyorum. CachedUpdates false. commit yapamıyorum, çünkü trigger ile tablodaki alanın birine değer yazdırıyorum. Ama trigger devreye girmediği için
field 'GEN' must have a value
diyerek alanın boş geçilemeyeceği hatasını veriyor. Halbuki yukarıda dediğim gibi sadece tabloya birkaç alan ekledim. Delphi kısmında fields editorde yeni alanları ekledikten sonra trigger devre dışı kaldı.
Erbab-ı kemâli çekemez nakıs olan, rencide olur Dide-i Huffaş ziyadan....
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

GEN alanı NOT NULL bir alan sanırım ve siz de bu GEN alanının Delphi'deki TTable veya TQuery nesnesine eklediniz. Bu şekilde Delphi'de o alanın Required'ına bakıp Database'e Post etmiyor, sorununuz budur sanırım.

Eğer bu alan bir ID alan ise ve siz ona Unique bir sayı türetmesi için bir Trigger kullandıysanız, Delphi tarafında, o alana -1 gibi bi rdeğer koyup, bu şekilde post edin. Nasıl olsa Trigger tetiklendiğinde, o alana gerçek olması gereken ID rakamını verecektir.

Siz de bu Post edememe olayından kurtulursunuz. Ancak trigger'da ID verme olayı yerine ben SP ile Generatorler için ID almayı daha uygun buluyorum.

Bu sebeple hem Program tarafında türetilecek olan ID'nin numarasını anında görebiliyorum hem de sistem tarafından bir ID türetmiş oluyorum.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
hbulus
Üye
Mesajlar: 163
Kayıt: 14 Tem 2003 11:30
İletişim:

Mesaj gönderen hbulus »

S.a.
Yardımınız için teşekkürler. Delphi tarafında dediğiniz yöntem problemimi çözdü. Sp kullanmak dediğiniz gibi daha mantıklı olabilir, ama database tarafına olayı olabildiğince halletmek kolayımıza geliyor herhalde. Cehaletin gözü körolsun, öğrenecez artık.. :)
Erbab-ı kemâli çekemez nakıs olan, rencide olur Dide-i Huffaş ziyadan....
Cevapla