Procedurede Kontrol Problemim

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
sinancaylak
Üye
Mesajlar: 151
Kayıt: 30 Oca 2004 09:16
Konum: Manisa

Procedurede Kontrol Problemim

Mesaj gönderen sinancaylak »

Kod: Tümünü seç

SET TERM ^ ;

CREATE PROCEDURE TBL_PUAN_DETAY_EKLE
AS
DECLARE VARIABLE IADE INTEGER;
DECLARE VARIABLE ALISVERISNO INTEGER;
DECLARE VARIABLE MUSTERI_ID INTEGER;
DECLARE VARIABLE TOPMIKTAR INTEGER;
DECLARE VARIABLE TOPBRUTTUTAR NUMERIC(8,2);
DECLARE VARIABLE TOPISKTUTAR NUMERIC(8,2);
DECLARE VARIABLE TOPNETTUTAR NUMERIC(8,2);
DECLARE VARIABLE TOPPUANI INTEGER;
DECLARE VARIABLE KAYIT_SAYISI INTEGER;
DECLARE VARIABLE TOPPTUTAR NUMERIC(8,2);
begin
MUSTERI_ID=12;
FOR
    SELECT TBL_ALISVERIS.IADE, 
    TBL_ALISVERISDETAY.MUSTERI_ID, 
    TBL_ALISVERISDETAY.ALISVERISNO, 
    SUM( TBL_ALISVERISDETAY.MIKTAR ) AS MIKTAR, 
    SUM( TBL_ALISVERISDETAY.TUTAR ) AS TUTAR,
    SUM( TBL_ALISVERISDETAY.ISKTUTAR ) AS ISKTUTAR,
    SUM( TBL_ALISVERISDETAY.NET_TUTAR ) AS NET_TUTAR,
    SUM( TBL_ALISVERISDETAY.PUANI ) AS PUANI,
    SUM( TBL_ALISVERISDETAY.PTUTAR) AS PTUTAR

    FROM TBL_ALISVERIS TBL_ALISVERIS 
    INNER JOIN TBL_ALISVERISDETAY TBL_ALISVERISDETAY 
    ON  (TBL_ALISVERIS.ALISVERISNO = TBL_ALISVERISDETAY.ALISVERISNO) 
    WHERE TBL_ALISVERISDETAY.MUSTERI_ID=:MUSTERI_ID AND TBL_ALISVERIS.IADE=1
    GROUP BY TBL_ALISVERIS.IADE,TBL_ALISVERISDETAY.ALISVERISNO,TBL_ALISVERISDETAY.MUSTERI_ID
    INTO IADE, ALISVERISNO,MUSTERI_ID , TOPMIKTAR, TOPBRUTTUTAR,TOPISKTUTAR,TOPNETTUTAR,TOPPUANI,TOPPTUTAR
DO BEGIN
        SELECT COUNT(*) FROM TBL_PUAN_DETAY WHERE TBL_PUAN_DETAY.ALISVERISNO=:ALISVERISNO INTO KAYIT_SAYISI;
        if (KAYIT_SAYISI=0) then

        INSERT INTO TBL_PUAN_DETAY (MUSTERI_ID,ALISVERISNO,TOPMIKTAR,TOPTUTAR,TOPISKTUTAR,TOPNET_TUTAR,TOPPUANI,TOPPTUTARI)
        VALUES (:ALISVERISNO,:MUSTERI_ID,:TOPMIKTAR,:TOPBRUTTUTAR,:TOPISKTUTAR,:TOPNETTUTAR,:TOPPUANI,:TOPPTUTAR);

        ELSE

        UPDATE TBL_PUAN_DETAY SET
        TOPMIKTAR=:TOPMIKTAR,
        TOPTUTAR=:TOPBRUTTUTAR,
        TOPISKTUTAR=:TOPISKTUTAR ,
        TOPNET_TUTAR=:TOPNETTUTAR,
        TOPPUANI=:TOPPUANI,
        TOPPTUTARI=:TOPPTUTAR;
        END
  suspend;
 END^

SET TERM ; ^
Merhaba burada for içerisindeki kodumda herhangi bir problemim yok ama do beginden sonra şöyle bir problemin var do beginden sonra alış veriş nmarasına göre kontol edecek kayıt yoksa kayıtları ekleyecek varsa kayıt bilgilerini güncelleyecek ama bir türlü yapmıyor tabloya kayıtların aynısını aynen basıyor. Yardımcı olabilirseniz sevinirim.
Sinan ÇAYLAK
Software Developer
Delphi & .Net
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Madem sadece INSERT - UPDATE yapacaksın ve dışarıya kayıt dönmeyecekse SUSPEND yazmana gerek yok :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
sinancaylak
Üye
Mesajlar: 151
Kayıt: 30 Oca 2004 09:16
Konum: Manisa

Mesaj gönderen sinancaylak »

recep hocam dediğinizi yaptım yine olmadı ama ben sorunu şu şekilde çözdüm update bölümünü kaldırarak proceduün başında o müşteriye ait kayıtları sildirim sonra bidaha insert yaptırdım yardımınız için teşekkür ederim. Saolun
Sinan ÇAYLAK
Software Developer
Delphi & .Net
Cevapla