Fireird Commit edince multiple rows diyor

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Fireird Commit edince multiple rows diyor

Mesaj gönderen musti »

S.a
Foreing key li Master Detail table da

Commit edince Detail dosyamda
no curren record for fetch operation
multiple rows in singleton select diyor
ve kayıt yapamıyorum
nede boyle olur anlayamadım
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selam
kardeş
O normal dir Fk olayını tam yapöışsın yani sen Master da bir kayıt ile detayda bir kayıt eşleşemediğinden yapıyor Veya mastara hiç kayıt girmeden detaya kayıt girmeye çalıştığınızdan FK bu durumu engelliyor ve detay tablonuza kayıt yapamıyorsunuz İlişki kurduğunuz ID leri ve bunlara bağlı genarators leri gözden geçirmenizi tavsiye ediyorum.Normal de sizin durumunuz hata değil.Kolay gelsin
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Merhaba,

VT'de

Kod: Tümünü seç

  select alan1 from tablo1 into :paremetre1;
gibi bir kullanım varsa hatayı bundan veriyordur. Bu gibi durumlarda sadece 1 kayıt dönmesi gerekir ama sizin durumunuzda birden fazla kayıt dönüyormuş. Trigger ve stored procedureleri inceleyin. Kayıtlara da bakın belki anahtar alanda aynı numaralı birdenfazla kayıt vardır.
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Mesaj gönderen musti »

yok hocam iki tablem var IBdataset Master detail fisno pk ve fk

detail fisno alıyor baktım
sonra Sakla Tusuna basıyorum olmuyor
sakla tusundada da

if (DataModule1->IBTransaction1->InTransaction )
DataModule1->IBTransaction1->CommitRetaining();

bu sefer de master kayıt oluyor detial olmuyor

Master->ApplyUpdates
Detail->ApplyUpdates
koyarsam yukardaki hatayı veriyor
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

detaile hiç mi kayıt giremiyosunuz.Bence Master-Detay ID lerinizi kontrol edin.
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Mesaj gönderen musti »

s.a
Detail.Post yazınca yani
Detail dosyası post edilince no current record for fetch operation
diyor.

Onu yazmasam detail kayıt olmuyor.
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

Selam peki genarators var mı eğer genarators varsa
ibdatasetten şu şekilde ayarlayın
Generator Field
-------------------------
Generator:=GEN_CISLEM_ID;
Field:=DETAY_ID;
İncrement By:=1;
Apply Event :=On Post radio butonu seçili olmalı bu şekilde mi acaba
genaratorunuz.Kolay gelsin.
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Mesaj gönderen musti »

master tablem de var gen_id ama bunun post yada new olması ne far ederki anlamadım.(ama genid ıbdatsette tanımlı aynı sekilde)

sorunum mail detai dosyamda. :(

sanırım fk ile ilgili ama cozemedim.
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selam
kardeş
Fk tablomun DDl sini gönderiyom

Kod: Tümünü seç

SET SQL DIALECT 3;

SET NAMES WIN1254;



/******************************************************************************/
/****                                Tables                                ****/
/******************************************************************************/



CREATE TABLE CISLEM (
    DETAY_ID       INTEGER NOT NULL,
    DET_MASTER_ID  INTEGER,
    TARIH          DATE,
    VTARIH         TIMESTAMP,
    ACIKLAMA       VARCHAR(100) COLLATE PXW_TURK,
    MIKTAR         DOUBLE PRECISION,
    BIRIM          CHAR(10) COLLATE PXW_TURK,
    FIYAT          DOUBLE PRECISION,
    TUTAR          NUMERIC(15,2),
    ODENEN         NUMERIC(15,2),
    BAKIYE         NUMERIC(15,2),
    CKOD           CHAR(15),
    ISK1           INTEGER,
    ISK2           INTEGER,
    ISK3           INTEGER,
    ISK4           INTEGER,
    KDV            INTEGER,
    NETTUTAR       DOUBLE PRECISION,
    KDVNETTUTAR    DOUBLE PRECISION,
    SN             CHAR(20),
    CGRUP          CHAR(20)
);




/******************************************************************************/
/****                             Foreign Keys                             ****/
/******************************************************************************/

ALTER TABLE CISLEM ADD CONSTRAINT FK_CISLEM_1 FOREIGN KEY (DET_MASTER_ID) REFERENCES CKART (MASTER_ID) ON DELETE CASCADE ON UPDATE CASCADE;

bu şekilde
ben
Ckart ile Cislem ara,sında da şu şekilde ilişki kurmuştum
Ckartın:=Master_Id si ile
cislem tablonun:=det_master_id si ile
ilişki kurmuştum
benim master detay tablomda
her ikisindede otomatik artan sayı var
hem ckartta hemde cislem tablosunda
cislem tablom benim detay tablom.
ben
detay tablomu otomatik artan olmayan Det_master_id ile
master tablom olan otomatik artan PK ile ilişki kurmuştum
det_master_id ise benim Hazırladığım Fk.
otomatik sayı artarken
master tablomdaki ckartta master_id ile detay tablomdaki det_master_id
sayılar aynı yani misal olarak 200=200 gibi.Bunlara bir bakarmısın.
Kolay gelsin...
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Mesaj gönderen musti »

tsk ederim ilgin icin ama sanırım sorunum baska
trigerlardan kaynaklıyor mus cozdum
yaptıgım trigerda post ve update sırasında master tablodaki tarihin aynısını almasını saglıyordum.
kaldırdım sorun kalmadı.

Artık bunu kod yazarak yapacaz saglık olsun. neden bu triger sorun olsun anlamadım.

Yapmak istedigim masterdaki tarih ile detaildeki tarih aynı olsun.
bunun icin kucuk bir triger yapmıstım

tsk ederim.

bunu kod yazerken birdah dbgridi bastan sona kontrol etip degisen tarihi detail dosyasına yazmam lazim :(
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Tarih almaya çalışırken toplam 1 kayıt dönmesi gerekirken sizin yazdığınızda birden fazla dönüyordur. select ifadesini select first 1 gibi yazarak denemeler yapın. Yapmanız gereken sadece 1 kayıt döndürdüğüne emin olmak.
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Mesaj gönderen musti »

:D :) t-hex :)
Tsk ederim.

Aynen Dediginiz gibi.
Cevapla