Detail Table' da kayıt ekleme sırasında sorun?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ergunalp
Üye
Mesajlar: 28
Kayıt: 31 May 2004 01:52
Konum: Adana

Detail Table' da kayıt ekleme sırasında sorun?

Mesaj gönderen ergunalp »

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..
Delphi konusunda daha çok database ile ilgileniyorum...
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

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...
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

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...
bgoktas yazdı: ..siz detail kısımda veri girmek istediğinizde, master tarafındaki kodno alanını otomatik olarak getirmesi gerekmekte.
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 inde

Kod: Tümünü seç

DetailKOD.AsInteger := MasterKOD.AsInteger; 
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 :!:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

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...
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

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!!
ergunalp
Üye
Mesajlar: 28
Kayıt: 31 May 2004 01:52
Konum: Adana

Mesaj gönderen ergunalp »

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...
Delphi konusunda daha çok database ile ilgileniyorum...
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

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.
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

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.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

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.
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.
İşi garantiye almak için afterinsert te atama yapmak da işi çözer.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

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ı..
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

IBDataSet in BDE/Query de olduğu gibi DataSource kısmına master tablonun bağlı olduğu DataSource i ekleyip select i de;

Kod: Tümünü seç

select stok_kodu, stok_adi from hareket
where stok_kodu = :STOK_KODU
gibi yazman lazım. Burada :STOK_KODU Master DataSet inden gelen alandır.

Ayrıca IBTable ile daha kolay da yapabilirsin.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

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
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

ibdataset kayıt ekleme, silme, değiştirme gibi işlemlerde kullanacaksın.
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.
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

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
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

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

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Cevapla