(16-05-2018, Saat: 17:13)edo Adlı Kullanıcıdan Alıntı: Aldığınız hatanın tamamını yazarsanız daha yönlendirici olabilir ama hata veritabanı değil uygulamadan geliyor (daha veritabanına gitmeden önce oluşuyor) gibi gözüküyor. Kullandığınız bileşen nedir? Dataset'in afterinsert'ünde id alanını 0 yapıp dener misiniz sonuç ne oluyor?
Hatanın tamamı bu kadar. Dediğiniz gibi hata uygulamadan geliyor. id alanı required bir alan post sırasında boş olduğu için bu hatayı veriyor.
(16-05-2018, Saat: 17:40)meko Adlı Kullanıcıdan Alıntı: fdquery nesnesi kullanıyorsanız
UpdateOptions kısmında
AutoIncFields, GeneratorName, KeyFields
değer atamanız gerekir diye biliyorum
Evet fdquery nesnesi kullanıyorum, fazladan id alanını autoinc yapmışım, ancak hata sanırım başka bir şeyden kaynaklanıyor. Uygulamayı derlerken fdconnection nesnesi bağlı ise, dm create edilirken close yapıp, parametreleri girip sonra yeniden bağlantı sağlamama rağmen, sanırım kendi bilgisayarımda db aynı olduğundan bir sorun çıkmıyor. Diğer bilgisayarda ise bağlantı sağlanıyor ama bir şekilde autoinc alanı işlevini yerine getirmiyor. Aslında hatanın nedeninin bu olduğundan da emin değilim. Çünkü uygulama bir kez hata verince sonrasında uygulamada bu konu hakkında ne değişiklik yaparsam yapayım veritabanı dosyasını değiştirmedikçe farklı da olsa hata almaya devam ettim. Sanırım post kodunun olduğu try bloğunun except alanında rollback kodu olmasına rağmen db kayıt olarak zarar görüyor.
Soruna neyin neden olduğunu anlayamasam da embedded firebird kullanan uygulamam ile şu an sorunsuz kayıt yapabiliyorum.Son ayarlarım: Sıfır veritabanı dosyası kullandım, fdquery updateoptions kısmına AutoIncFields, GeneratorName, KeyFields bilgilerini uygun şekilde tanımladım ve id fieldinin autogeneratevalue özelliğini none yaptım.
(16-05-2018, Saat: 21:13)masteryoda Adlı Kullanıcıdan Alıntı: alternatif olarak firebird 3 lü versiyonları kullanıyorsanız autoinc alanınızı identity olarakta belirleyebilirsiniz.
Evet firebird 3.03 versiyon kullanıyorum. identity alanını bir kez kurcalamıştım. Benim anladığım normalde trigger ve sequencede bulunan generatorün yaptığı işi db kendi içinde hallediyor. Trigger ve generator göremedim. Belki basit veya saçma gelecek ama, ana tabloya kayıt girildikten hemen sonra alt tabloya kayıt eklemek istediğimde ana tablonun id numarasını alamam diye kullanmamıştım. Şu an kullandığım şekliyle kayıt gerçekleştiği anda ana tablonun id bilgisi query de bulunuyor. Konusunu açmışken identity kullanımı hakkında bilgi verirseniz memnun olurum.
İlgilenen tüm arkadaşlara teşekkür ediyorum. (+ rep)