id değerlerini Trigger veriyor otomatik İBdataset generatör ayarlarını yaptım kayıt insert dediğinde anında otomatik veriyor id leriaslangeri yazdı:s.a.
peki tabloların pkeylerine değerleri ne zaman veriyorsun.
yaptığın örneğe üç tanede grid ekle.
tablodaki id alanlarınıda göstersin. kayıt girişini gene editlerden dene.
bakalım id alanlarını alıyormu.
kolay gelsin.
master detail aynı anda kayıt eklemek
- kadirkurtoglu
- Üye
- Mesajlar: 748
- Kayıt: 22 May 2005 01:20
- Konum: Uzakta Görünen Tepeden...
aslangeri nin id den kastı ilişkisel id ler. generatorfield seçimi ile tablonun knedi alanlarındaki autoinc ler çalıştırılır.id değerlerini Trigger veriyor otomatik İBdataset generatör ayarlarını yaptım kayıt insert dediğinde anında otomatik veriyor id leri
kısaca
detay tablonun select ifadesinde belirtilen parametreye değer göndermen gerekiyor.
Kod: Tümünü seç
select * from DETAY
where masterid =:masterid
sen de detay tablonun OnBeforePost yordamında
Kod: Tümünü seç
detayTabloMasterID.asinteger := masterTabloMasterID.asinteger;
pardon yanlış anladımkadirkurtoglu yazdı:aslangeri nin id den kastı ilişkisel id ler. generatorfield seçimi ile tablonun knedi alanlarındaki autoinc ler çalıştırılır.id değerlerini Trigger veriyor otomatik İBdataset generatör ayarlarını yaptım kayıt insert dediğinde anında otomatik veriyor id leri
kısaca
detay tablonun select ifadesinde belirtilen parametreye değer göndermen gerekiyor.
ifadesindeki :masterid parametredir. bu parametre detay tablosuna ait bir field olan masterid alanına değer aktarmak içindir.Kod: Tümünü seç
select * from DETAY where masterid =:masterid
sen de detay tablonun OnBeforePost yordamında
şekinde bir kod yazarak detay tabloda kayıt gereçkelşmeden bu alana değeri vermen gerekiyor.Kod: Tümünü seç
detayTabloMasterID.asinteger := masterTabloMasterID.asinteger;
Kod
Kod: Tümünü seç
select * from ILCE where il_kod=:il_kod
sorun her iki DBgridde aynı anda bilgileri girdikten sonraki kaydetmeye çalıştığımda gerçekleşiyor
Kod: Tümünü seç
procedure TDataModule2.IBDataSet3BeforePost(DataSet: TDataSet);
begin
if IBDataSet3.FieldByName('ilce_kod').IsNull then
ibdataset3.FieldByName('ILCE_KOD').Value:= ibdataset2.FieldByName('ILCE_KOD').Value;
end;
burda gerekli atamayıda yapıyorum
saygılarımla
- kadirkurtoglu
- Üye
- Mesajlar: 748
- Kayıt: 22 May 2005 01:20
- Konum: Uzakta Görünen Tepeden...
arkadaşlar bakmak isterseniz denediğim projeyi upload ettim
40KB
http://www.maxiupload.net/show.php/118 ... .rar.html
40KB
http://www.maxiupload.net/show.php/118 ... .rar.html
eğer ibdataset generator ayarını yaptıysan değerleri triger vermiyordur.
ibdataset kendisi generatorden değer çekiyor. sonra triger başka bir değer veriyordur.
1.triger kodlarında null kontrolu yapıyormusun.
2.dbgridlerde değim işlemi bi yap.
ibdataset kendisi generatorden değer çekiyor. sonra triger başka bir değer veriyordur.
1.triger kodlarında null kontrolu yapıyormusun.
2.dbgridlerde değim işlemi bi yap.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
trigerleri kaldırdım dediğiniz gibi generatorlerden alıyor idleri 3 dbgrid ekleyerek deniyorum sorun aynıaslangeri yazdı:eğer ibdataset generator ayarını yaptıysan değerleri triger vermiyordur.
ibdataset kendisi generatorden değer çekiyor. sonra triger başka bir değer veriyordur.
1.triger kodlarında null kontrolu yapıyormusun.
2.dbgridlerde değim işlemi bi yap.
- kadirkurtoglu
- Üye
- Mesajlar: 748
- Kayıt: 22 May 2005 01:20
- Konum: Uzakta Görünen Tepeden...
projenizi download edip denedim. hiç bir sorun yok. hiçbir hata almadım. nasıl kayıt yaptığınız hakkında biraz bilgi verebilirseniz.
+
FK tanımlı tablolarda master kayıt yeni bir kayıt ise mutlaka post edilmelidir. aksi halde detay tablo master deki ilişki id sini algılamaz. ve Foreign Key hatası alırsınız...
+
FK tanımlı tablolarda master kayıt yeni bir kayıt ise mutlaka post edilmelidir. aksi halde detay tablo master deki ilişki id sini algılamaz. ve Foreign Key hatası alırsınız...
ilçe ve semtlere aynı anda insert yapalım AD ları doldurup herhangi birine kayıt diyelim bahsettiğim hatayı verecektirkadirkurtoglu yazdı:projenizi download edip denedim. hiç bir sorun yok. hiçbir hata almadım. nasıl kayıt yaptığınız hakkında biraz bilgi verebilirseniz.
evet sorun o sanırım ama bende zaten post etmeye çalışırken hata alıyorum dediğim şekilde girmeyi denerseniz sorunu anlayacaksınızdır
FK tanımlı tablolarda master kayıt yeni bir kayıt ise mutlaka post edilmelidir. aksi halde detay tablo master deki ilişki id sini algılamaz. ve Foreign Key hatası alırsınız...
Saygılarımla
- kadirkurtoglu
- Üye
- Mesajlar: 748
- Kayıt: 22 May 2005 01:20
- Konum: Uzakta Görünen Tepeden...
arkadaşım yine aynını diyorsun. mantık basit aynı anda nasıl giriyorsun anlamadım. önce master kaydı tamamlayacaksın. daha sonra detay kayıt gireceksin.
yukardaki kod blokları yukardan aşağı doğru çalışır. ve sıralama da master kayıt post edildiği için detay kaydın post işleminde hata almazsınız.
hiçbir şey yapamıyorsanız. ilgili master tablonun bağlı olduğu DBGridin on exit yordamında state sorgulayarak post olmasını sağlayın.
Kod: Tümünü seç
mastertablo.insert;
mastertablo.post;
detaytablo.insert;
detaytablo.post;
hiçbir şey yapamıyorsanız. ilgili master tablonun bağlı olduğu DBGridin on exit yordamında state sorgulayarak post olmasını sağlayın.
evet farkındayım aynı şeyleri söylüyorum çünkü sorunumu anlatamadığım için aynı cevap geldiğindendir mantığı biliyorumkadirkurtoglu yazdı:arkadaşım yine aynını diyorsun. mantık basit aynı anda nasıl giriyorsun anlamadım. önce master kaydı tamamlayacaksın. daha sonra detay kayıt gireceksin.
sizin söylediğiniz çözüm ise;
1-kullanıcı master bilgileri doldurdu siz post ettiniz sonra detaile geçti ve doldurdu kaydet butonuna basmadan vazgeçti kaydetmekten ve çıktı ne olacak post ettiği masteri tekrar bulup silecekmiyiz.
2-yeni kayıt dedi aynı formda giriş olduğundan sondan başladı doldurmaya ve en son mastere geldi bir deneyin bakalım DBedit lerde dediğiniz sıralamada post edebilecekmisiniz.
3-ben istedimki kullanıcı özgür olsun istediği yerden başlasın doldurmaya tek tuşla kaydet dediğimizde sizin dediğiniz gibi ilk önce masteri post etsin daha sonra detaili post etsin arkasındanda varsa subdetaili post etsin ama DBxxx lerde ikinci tabloya geçtimi yapamadım sizin dediğiniz sıralamayı
Son olarak son mesajda bana biraz yeter artık gibi bir çıkış oldu gibi geldi bu yüzden kapatmak istedim bu konudaki yardım talebimi çok özür dilerim kafanızı ağrıttım ve zamanınızı aldım
ben çözmeye çalışırım çözemezsemde en baştanda söylediğim gibi olmadı normal editlere dönerim ama sanki bir çıkış
s.a.
şimdi olay biraz daha netleşti.
siz master tabloya kayıt girilmeden detay tabloya kayıt girmek istiyorsunuz. Hata mesajıda size onu söylüyor.
şöyle bir şey yapılabilir. kullanıcı kayıt girişi penceresini açtığı zaman master tablolara otomatik kayıt girersiniz. önce master kaydedildiği için detay tablolarda id alanlarını alırlar. eğer kullanıcı vazgeçerse transaction ı rollback yaparsınız. master tabloda kullanıcının girmesi gereken alanlarıda kullanıcı edit ederek girebilir.
umarım anlatabilimişimdir.
kolay gelsin.
şimdi olay biraz daha netleşti.
siz master tabloya kayıt girilmeden detay tabloya kayıt girmek istiyorsunuz. Hata mesajıda size onu söylüyor.
şöyle bir şey yapılabilir. kullanıcı kayıt girişi penceresini açtığı zaman master tablolara otomatik kayıt girersiniz. önce master kaydedildiği için detay tablolarda id alanlarını alırlar. eğer kullanıcı vazgeçerse transaction ı rollback yaparsınız. master tabloda kullanıcının girmesi gereken alanlarıda kullanıcı edit ederek girebilir.
umarım anlatabilimişimdir.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
söylemek istediğinizi anladım fakat ozamanda çok kullanıcılı olduğundan rollback ta karışıklık olmazmıaslangeri yazdı:s.a.
şimdi olay biraz daha netleşti.
siz master tabloya kayıt girilmeden detay tabloya kayıt girmek istiyorsunuz. Hata mesajıda size onu söylüyor.
şöyle bir şey yapılabilir. kullanıcı kayıt girişi penceresini açtığı zaman master tablolara otomatik kayıt girersiniz. önce master kaydedildiği için detay tablolarda id alanlarını alırlar. eğer kullanıcı vazgeçerse transaction ı rollback yaparsınız. master tabloda kullanıcının girmesi gereken alanlarıda kullanıcı edit ederek girebilir.
umarım anlatabilimişimdir.
kolay gelsin.
niye karışıklık olsunki?
rollback yaptığınız zaman sizin yaptığınız işlemler iptal ediliyor.
generatorlerdeki artırmalar hariç.
diğer makinelerde generatorlerden zaten farklı değerler alacaklar.
karışıklık olmaz.
karışıklık konusunda kafanıza takılan yeri sorabilirsiniz.
kolay gelsin.
rollback yaptığınız zaman sizin yaptığınız işlemler iptal ediliyor.
generatorlerdeki artırmalar hariç.
diğer makinelerde generatorlerden zaten farklı değerler alacaklar.
karışıklık olmaz.
karışıklık konusunda kafanıza takılan yeri sorabilirsiniz.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim