Detail Table' da kayıt ekleme sırasında sorun?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Detail Table' da kayıt ekleme sırasında sorun?
Interbase ve IBX lerle master -detail ilişkisi var(IB' de triger ile relation var, AutoInc alan var..) KODNO ile...
Navigator ile Detail table'a kayıt girerken(DBGridde) KodNo alanını yazmadan , kayıt girmekten vazgeçtiğimde "KodNo must have a value" hatasını veriyor, nasıl engelleriz..
Navigator ile Detail table'a kayıt girerken(DBGridde) KodNo alanını yazmadan , kayıt girmekten vazgeçtiğimde "KodNo must have a value" hatasını veriyor, nasıl engelleriz..
Delphi konusunda daha çok database ile ilgileniyorum...
Kayıt girmekten vazgeçiyorsanız esc tuşuna basıp diğer alanlara girmiş olduğunuz tüm değerleri silmeniz gerekmekte, yani edit modunu iptal etmeniz gerekir. Ayrıca kodnoya göre master-detail yapıyorsanız ve kodno alanına veri girilmesi gerekir diye bir hata mesajını vermesi ilginç, çünkü siz detail kısımda veri girmek istediğinizde, master tarafındaki kodno alanını otomatik olarak getirmesi gerekmekte.
Kolay gelsin...
Kolay gelsin...
Muhtemelen vazgeç olayında post etmeye çalışıyorsunuzdur. Yada bilerek veya bilmeyerek DGBrid üzerinde başka bir alana tıklayınca da mevcut kayıtı post etmek ister. Dolaysıyla yaptığınız işlemleri takip etmek için break point koyut f7 / f8 ile adım adım takip etmek gerekiyor...
ile atama yapılmalı. Bu durumda da master tablonun KOD alanı belirlenmiş olmalı. Insert (yeni kayıt) durumunda KOD alanı ile birlikte minumum gerekli diğer alanların da varsayılan değerleri atanıp öncelikle post edilmesinde fayda var! Master tablodaki ilişkili alanlar kesinleşmeden detail tabloya kayıt girilemez 
Böyle birşey de sözkonusu değil! Siz kodlarla programa ne yapmasını söylerseniz sadece onu yapar. Bir alanı Master/Detail ilişkilendirdiniz diye o olanı otomatik olarak detail e getirmez. Detail tabloya yeni bir kayıt eklendiğinde afterinsert indebgoktas yazdı: ..siz detail kısımda veri girmek istediğinizde, master tarafındaki kodno alanını otomatik olarak getirmesi gerekmekte.
Kod: Tümünü seç
DetailKOD.AsInteger := MasterKOD.AsInteger;

Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Ben şimdiye kadar yapmış olduğum hiçbir master-detail ilişkide afterpost olayına atama işlemi yapmadım.Master Dbgrid'de hangi alan üzerindeyseniz detail dbgridi insert ettiğinizde kodno alanı otomatik olarak kodno alanına gelir(ibtoollar için eminim,bde dede böyle oluyor diye biliyorum)
İyi Günler...
İyi Günler...
Doğrusu Interbase için deneme şansım olmadı, ben sadece klasik yöntem olarak söyledim. Dediğiniz gibi bu olayı IBx bileşenleri otomatik olarak yapıyor olabilir. Sonuçta sizin kontrolünüzde olmadan kendisi halletmesi de olabiliyor demek. Yine de klasik programcılıkta programcının kontrolü dışında sinek bile uçmamalı 

Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Bahsettiğim gibi aslında bende IB Toolar kullanıyorum. ama detail' de KODNO' yu otomatik kendisi yazmıyor(bende yazmasını istemiştim ve beklemiştim aslında). Denemelerde elimle yazıyorsum ama tabi bencede otomatik yazması daha uygun gibi, ama yazmıyor nedense....Ve birde Detailde kayıt girdikçe (mesela AutoInc alan ve yaşı diye bir alan var) bu alanlar anında güncel görünmüyor(commit retaining falan yapıyorum ama). İllaki başka bir master kayda geçip dönünce herşey doğru, ama aslında detaile girildiği anda online doğru görülmeli...Belki dataset veya transection veya DBGridi' mi post yapacağız nedir?....Ve nasıl?
Kolay gelsin...
Kolay gelsin...
Delphi konusunda daha çok database ile ilgileniyorum...
S.A.
Eğer hatayı interbase değilde delphi veriyorsa tablonun fieldlarından kod no alanının required ini false yaparsan vermez. eğer interbase den veriyorsa o zaman sanırım after insert te değer ataman gerekli.
bir not da (sanırım biliyorsunuzdur ama) detail tabloya kayıt girmek için master tablodaya kayıt girmiş olman ve transactionu commit etmiş olman lazım. aksi halde detail tablonun kod no alanına değer gelmez. detaili kaydeder fakat kodno farklı (0 yada -1 yada null) olduğu için master tablona bağlı olarak göstermez.
kolay gelsin.
Eğer hatayı interbase değilde delphi veriyorsa tablonun fieldlarından kod no alanının required ini false yaparsan vermez. eğer interbase den veriyorsa o zaman sanırım after insert te değer ataman gerekli.
bir not da (sanırım biliyorsunuzdur ama) detail tabloya kayıt girmek için master tablodaya kayıt girmiş olman ve transactionu commit etmiş olman lazım. aksi halde detail tablonun kod no alanına değer gelmez. detaili kaydeder fakat kodno farklı (0 yada -1 yada null) olduğu için master tablona bağlı olarak göstermez.
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
Evet Gökmen sanırım eski versiyon delphi de ve dolaysıyla eski bde bileşenlerinden kaynaklanabilir. Yoksa ben de hem bde hem de IBx lerde @bgoktas ın dediği gibi otomatik alıyor. Yani delphi7 de otomatik oluyor.gkimirti yazdı:ibtable kullanıyorsan detail tabloya kodno alanını otomatik atması lazım
ibdataset yada ibqueryde olmuyor malesef, yada ben de yapamadım
before insert olayında elle eklemek gerekiyor.
İşi garantiye almak için afterinsert te atama yapmak da işi çözer.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
hocam bende d7 kullanıyorum ama bir turlu master detail bağlantısı yapamadım ibx lerle
veri tabanı olarak firebird 1,5 kullanıyorum
ibdatasetim mastersource diye bi özelliği yok
ben nasıl bağlayacağım şimdi bunları..
veri tabanı olarak firebird 1,5 kullanıyorum
ibdatasetim mastersource diye bi özelliği yok
ben nasıl bağlayacağım şimdi bunları..
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
IBDataSet in BDE/Query de olduğu gibi DataSource kısmına master tablonun bağlı olduğu DataSource i ekleyip select i de;
gibi yazman lazım. Burada :STOK_KODU Master DataSet inden gelen alandır.
Ayrıca IBTable ile daha kolay da yapabilirsin.
Kod: Tümünü seç
select stok_kodu, stok_adi from hareket
where stok_kodu = :STOK_KODU
Ayrıca IBTable ile daha kolay da yapabilirsin.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
hocam bu sırada anlamadıgım bieşey daha var
ben burda sadece kayıt girdireceğim kullanmam gereken en mantıklı tool ib tablemi yoksa ibquery mi yada ibdataset mi ne kullanmalıyım eskiden hep query kullanırdım ama burda kararsız kaldım
ben burda sadece kayıt girdireceğim kullanmam gereken en mantıklı tool ib tablemi yoksa ibquery mi yada ibdataset mi ne kullanmalıyım eskiden hep query kullanırdım ama burda kararsız kaldım
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
ibdataset kayıt ekleme, silme, değiştirme gibi işlemlerde kullanacaksın.
ibquery ise sorgulama yaptığında kullanacaksın.
Kolay gelsin...
ibquery ise sorgulama yaptığında kullanacaksın.
Kolay gelsin...
Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
peki ya birde ibtable var bu ne işe yarıyor bunu anlayabilirmiyim.. 

بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Bde' eden esinlenmişler boş ver onu zaten dökümanlar kullanım açısından IbTable'ı tafsiye etmiyorlar ben hiç kullanmıyorum.
Kolay Gelsin...
Kolay Gelsin...
Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.