Master-Detail - Hata Nerde ? - Örnek Uygulama Mevcut. (.zip)

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Master-Detail - Hata Nerde ? - Örnek Uygulama Mevcut. (.zip)

Mesaj gönderen hi_selamlar »

S.A. Arkadaşlar...

Firebird ile bir türlü Master-Detail kayıt olayını gerçekleştiremedim.
Forumda aradım :!: fakat bulduğum örnekleri bir türlü çalıştıramadım.

sizlerden ricam yaptığım deneme kod link'i aşağıda veriyorum.

lütfen 2 gündür bu olayı araştırıyorum fakat bulamadım.

lütfen aşağıdaki kodu çekip bir inceleyin. hatam nerde.

Bu işlemi Fatura İçin Master-Detail olarak kullanmak istiyorum.


http://rapidshare.com/files/5424240/deneme1.zip.html

NOT!
zip içerisinde .fdb ve pas dosyaları mevcut. kötü amaçlı hiç bir uygulama yoktur içerisinde.
S.A.
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
detay tablosunun insert sql inde master tablonun alanına değer atamamışsınız.
onnewrecordda atam yapmışsınız ama detay tablosuna yeni kayıt girdiğin zaman insert sql deki kod çalışır. ordada master tablonun id si yok.
bu arada fdb dosyası bozuk(yada bende çalışmadı)
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Mesaj gönderen hi_selamlar »

(FDB Firebird 2.0 ile olşturuldu..)

dediğin gibi çalıştı fakat,

şimdide şöyle bir sorun oluştu..

ana tabloda bilgiyi giriyorum.
detay tabloya geçip detayları giriyorum. ve hata veriyor.
verdiği hata ise ana tabloda girilen DetayID bulunamadığından kayıt işlemi yapılamıyor.
tabi ben türkçeleştirdim.

Ana tabloda verileri girip onaylayınca AUTO_NO alanına otomatik numara örneğin 8 geliyor.
programı açıp kapatıyorum. ana tablo AutoNO alanı 9 gibi görünüyor.
otomatik artırmayı Generator ile oluşturuyorum.
IBDataset in generator üne onpost olara seçiyorum.
bu hatayı neden yapıyor ki!
bir türlü çözemedim..

Son şekli ile dosya link i ;
http://rapidshare.com/files/5431103/deneme1.zip.html
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

merhabalar..

detail tablonda ilişki alanı fk yapmış isen. detail tablonun post olabilmesi için mutlaka master ilişki id sini girmelisin. aksi takdirde ilişkisel vt gereçkeleşmediği için hata alman normal dir..
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Mesaj gönderen hi_selamlar »

kadirkurtoglu yazdı:merhabalar..

detail tablonda ilişki alanı fk yapmış isen. detail tablonun post olabilmesi için mutlaka master ilişki id sini girmelisin. aksi takdirde ilişkisel vt gereçkeleşmediği için hata alman normal dir..
hocam o sorunu çözdüm.

şimdiki sıkıntım inan 2 gündür uğraşıyorum olmuyor olmuyor...

bilgileri giriyorum. sorun yok. master-detail olarak.

IBDataset ile bağlantılarımı yapıyorum.
IBDataset>Generator olayını yapıyorum. On Post ve 1 olarak seçiyorum.
sorun yok. kaydımı giriyorum bana hemen ana tablo için AutoNo numarasını veriyor. örneğin : 16 olarak.

neyse programı kapatıp açıyorum daha önce girmiş olduğum AutoNo Id si
16 olan kayda bi bakıyorum ki AutoNo Id olmuş 18..

bu nasıl olabilir ki. ben 1 olarak artırmasını istiyorum.
ona göre FDB de generator ve trigger oluşturdum.

fakat kayıt yaptığımda Ana tabloda ve Detay tabloda AutoNo Id numaraları
2 şer 2 şer hareket ediyor.

hatam nerde acaba. inanın çok aradım fakat bir türlü olmuyor.

lütfen yardımlarınızı bekliyorum.

Teşekkürler.

S.A
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

hi_selamlar
neyse programı kapatıp açıyorum daha önce girmiş olduğum AutoNo Id si
16 olan kayda bi bakıyorum ki AutoNo Id olmuş 18..
arkadaşım autoinc oluşturuken hem trigger hemde sp oluşturuyorsan. bu alan hem trigger hemde sp değer gönderiyordur. ve sayı 2 şer artıyordur. sadece birini seç. ben trigger kullanıyorum. sp de kullanabilirsin. ancak bana trigger daha uygun gibi geldi..
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Mesaj gönderen hi_selamlar »

hocam ben zaten SP kullanmıyorum ki. Trigger ile işlemi yapıyorum.
fakat buna rağmen 2 şer 2 şey kayıt artıyor.

nerde hata yaptığımı bilmiyorum. herşeyi kontrol ettim. fakat hiç birşey değişmedi.

Nasıl çözeceğim. :(

S.A.
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

tekrar merhaba

Kod: Tümünü seç

CREATE TRIGGER HAREKET_BI FOR HAREKET
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.HID IS NULL) THEN
    NEW.HID = GEN_ID(GEN_HAREKET_ID,1);
END
yukarda autoinc için tanımlnan bir trigger var. yapı basit bir şekilde yeni alan değeri boş ise üreteci bir arttırarak yeni alan değerine aktarıyor. burda artımı ises GEN_HAREKET_ID, 1 olan kod yapıyor. burayı kontrol ediniz.

+

ben FK tanımladığım yapılarda

Mastertablo autoinc için artım a OnNewRecord
Detail e OnPost değerlerini veriyorum.

+

Master tablonuzun id sini manuel girin test edin. FK hatası almamanız lazım. dediğim gibi sizin master de ki id 16 iken 18 olarak değişmesi FK hatasına sebep oluyor.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
arkadaşım master tablonunda insersql inde id yi atmamış olabilirmisin.
program bir değer üretiyor(8) ama insert sql de alanı belirtmediğin için null gidiyor ve trigerda birdaha artıyor(9) oluyor. çifter çifter artmasının sebebi bu olsa gerek.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Mesaj gönderen hi_selamlar »

hocam yukarıdaki linkde
en son database yapımı ve örnek uygulamamı göndermiştim.

eğer bi bakıp incelersen çok sevirim.

lütfen.

S.A.
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

arkadaşım bir önceki mesajımda dediğim gibi
ana tablonun insertsql ini ayarlarsan sorun hallolacak.
hadi kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla