firebird 2.0'da ana tablodan detail tabloya bilgi girişi

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ı
burakb44
Üye
Mesajlar: 131
Kayıt: 11 Mar 2005 03:13

firebird 2.0'da ana tablodan detail tabloya bilgi girişi

Mesaj gönderen burakb44 »

arkadaşlar merhaba iki adet tablo var
1. tablonun fatura_tarihi, cari kodu ve belge numarasını okutup detail tabloda 1. tablonun cari kodu ve belge numarasına eşit olan kayıtların fatura tarihini 1. tablodaki fatura tarihine eşitlemek istiyorum.

Kod: Tümünü seç

CREATE PROCEDURE KONTROL 
AS
DECLARE VARIABLE TARIH DATE;
DECLARE VARIABLE C_KODU INTEGER;
DECLARE VARIABLE B_NO INTEGER;
BEGIN
FOR SELECT fatura_tarihi, cari_kodu, belge_no FROM c_fatura_ozet INTO tarih, c_kodu, b_no
DO 
BEGIN 
UPDATE c_fatura_detay SET fatura_tarihi=:tarih WHERE cari_kodu=:c_kodu AND belge_no=:b_no;
END

kod yukarıda fakat çalışmıyor sebebi ne olabilir


yardımlarınız için teşekkürler

burak bitikçi
malatya
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Delphi ile alakası olmayan db sorularınızı veritabanı bölümüne sormanız gerektiğinden konu taşınmıştır. Lütfen biraz daha dikkat edelim :idea:
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Son END'i koymamışsın ve ":" ları eksik kullanmışsın.

Eğer IBOConsole veya benzeri bir yerden çalıştıracaksan kodun:

Kod: Tümünü seç

CREATE PROCEDURE KONTROL
AS
  DECLARE VARIABLE TARIH DATE;
  DECLARE VARIABLE C_KODU INTEGER;
  DECLARE VARIABLE B_NO INTEGER;
BEGIN
  FOR SELECT fatura_tarihi, cari_kodu, belge_no FROM c_fatura_ozet INTO :tarih, :c_kodu, :b_no DO
  BEGIN
    UPDATE c_fatura_detay SET fatura_tarihi=:tarih WHERE cari_kodu=:c_kodu AND belge_no=:b_no;
  END
END
şeklinde, eğer Delphi içinden çalıştıracaksan:

Kod: Tümünü seç

CREATE PROCEDURE KONTROL
AS
  DECLARE VARIABLE TARIH DATE;
  DECLARE VARIABLE C_KODU INTEGER;
  DECLARE VARIABLE B_NO INTEGER;
BEGIN
  FOR SELECT fatura_tarihi, cari_kodu, belge_no FROM c_fatura_ozet INTO ::tarih, ::c_kodu, ::b_no DO
  BEGIN
    UPDATE c_fatura_detay SET fatura_tarihi=::tarih WHERE cari_kodu=::c_kodu AND belge_no=::b_no;
  END
END
şeklinde olması gerekir.

İyi çalışmalar.
Kullanıcı avatarı
burakb44
Üye
Mesajlar: 131
Kayıt: 11 Mar 2005 03:13

Mesaj gönderen burakb44 »

arkadaşlar merhaba, Hakan Can yazdığın şeyleri uyguladım ama malesef bir sonuç alamadım, olmaması çok ilginç acaba nerede hata yapıyorum, sistemle alakalı bir problem olabilirmi

Burak BİTİKÇİ
MALATYA
Kullanıcı avatarı
Terminator
Üye
Mesajlar: 313
Kayıt: 13 Ara 2005 01:45
Konum: İzmir, ama Aydın Efesi!

Mesaj gönderen Terminator »

burakb44 yazdı:arkadaşlar merhaba, Hakan Can yazdığın şeyleri uyguladım ama malesef bir sonuç alamadım, olmaması çok ilginç acaba nerede hata yapıyorum, sistemle alakalı bir problem olabilirmi

Burak BİTİKÇİ
MALATYA
Sistemle alakalı bir problem olamaz, bu sistem sen doğmadan önceden beri bu şekilde çalışıyor. :)

aldığın hatayı bir iletiver bi zahmet de bizi telepatiye zorlama..
Firebird Foundation Member #208
http://www.firebirdsql.org
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Terminator yazdı:..
Sistemle alakalı bir problem olamaz, bu sistem sen doğmadan önceden beri bu şekilde çalışıyor. :)

aldığın hatayı bir iletiver bi zahmet de bizi telepatiye zorlama..
:lol: :lol:

Cevaba gelince telepati sonucu anladığım kadarıyla :wink:

Kod: Tümünü seç

CREATE PROCEDURE KONTROL
AS
DECLARE VARIABLE C_KODU INTEGER;
BEGIN
  UPDATE c_fatura_detay fd 
  SET fatura_tarihi =(SELECT fatura_tarihi FROM c_fatura_ozet
                      WHERE cari_kodu = fd.cari_kodu AND belge_no = fd.belge_no INTO :C_KODU); -- bu kısmı denemek lazım! 
END
Bazan espri ve şakalaşmak da gerekir, umarım yanlış anlaşılmaz :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla