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....
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....
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.
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....