SQL ve Delphi Hk.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
denizfatihi

SQL ve Delphi Hk.

Mesaj gönderen denizfatihi »

Aşağıdaki gibi edit ederken insert ediyorum 2 adet tablom var satış faturası kesince (Stok Hareket Tablosu) bunu (Cari Hareket Tablosuna) Borc olarak kaydediyor buraya kadar herşey normal lakin Fatura üzerinde değişiklik veya silme işlemi yapınca bunu Cari Hareket Tablosuna uygulamıyor. (SQL server veri tabanı kullanıyorum yardımcı olacak arkadaşlara şimdiden teşekürler)

Kod: Tümünü seç

        Query1.Open;
        query5.Open;
        Query1.Append;
        query5.Append;
        Query1.FieldByName('FISNO').ASSTRING:=Edit1.Text;
        query5.FieldByName('BELGE_NO').ASSTRING:=Edit1.Text;
        Query1.FieldByName('STOK_KODU').ASSTRING:=Edit4.Text;
        Query1.FieldByName('STOK_ADI').ASSTRING:=Edit5.Text;
        query5.FieldByName('BORC').ASSTRING:=Edit8.Text;
        query5.FieldByName('ACIKLAMA').ASSTRING:=Edit10.Text;
        query5.FieldByName('DOVIZ_TURU').ASSTRING:=cOMBOBOX4.Text;
        query5.FieldByName('DOVIZ_TUTAR').ASstring:= Edit14.Text;

        Query1.Post;
        query5.Post;
        Query1.Close;
        query5.Close;
        Query1.Open;
        query5.Open;
P206
Kıdemli Üye
Mesajlar: 395
Kayıt: 17 Haz 2003 12:36
Konum: İstanbul

Mesaj gönderen P206 »

Selamlar


Queryle SQL yazarak denesen.

Kod: Tümünü seç

 insert into tablo (alan1,alan2) values (:alan1, :alan2)
gibi
I love my car.
Blog Yaptık
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Sayin denizfatihi,
derin bir mesele açtınız.... Bu tür işleri triggerlar aracılığı ile yapmanızı hararetle tavsiye ederim....

Konu ile ilgili kaynak olarak duzenledigimiz seminerleri izlemeyi ve de su makaleyi okumanızı tavsiye ederim...
viewtopic.php?t=644
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Salih
Üye
Mesajlar: 250
Kayıt: 11 Mar 2004 05:36

Nasıl yapılır ?

Mesaj gönderen Salih »

Merhaba,

Peki denizfatihi'nin sorduğu işlemi triggerlar kullanarak (Kaba hatlarıyla) nasıl yaparız ?
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Kod: Tümünü seç

CREATE TRIGGER NAKITISLEMLER_AI0 FOR NAKITISLEMLER
ACTIVE AFTER INSERT POSITION 0
AS
begin
  /* Trigger text */
  insert into hareketler (hareketler.carikod, hareketler.cariunvan, hareketler.tarih, hareketler.islemturu,
  hareketler.borc, hareketler.alacak) values (nakitislemler.carikod, nakitislemler.cariunvan, nakitislemler.tarih,
  nakitislemler.islemturu, nakitislemler.borc, nakitislemler.alacak);


   if (nakitislemler.borc is null) then
    update carikart SET carikart.alacak = carikart.alacak + nakitislemler.alacak where CARIKART.carikod = nakitislemler.carikod;
  Else
    update carikart SET carikart.borc = carikart.borc + nakitislemler.borc where CARIKART.carikod = nakitislemler.carikod;
end

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 »

ben bu tür işleri procedure kullanarak yapıyorum sonrada trigirle proceduru çağırıyorum boylece bitane procedur yazarak heryerde aynı proceduru cağırıyorum

Procedur

Kod: Tümünü seç

CREATE PROCEDURE MUSTERI_URUN_GIRIS_INSERT (
    ID INTEGER,
    GENELTOPLAM FLOAT)
AS
DECLARE VARIABLE DLR_KAYIT_SAYISI INTEGER;
begin 
      select count(*)from CARIHESAP where ID = :ID INTO DLR_KAYIT_SAYISI;
      if (DLR_KAYIT_SAYISI=0) then
      insert into CARIHESAP (ID,BAKIYE) values(:ID,0);
      update CARIHESAP set BAKIYE = BAKIYE+:GENELTOPLAM where
      ID = :ID;
        End

triger

Kod: Tümünü seç

CREATE TRIGGER FATURABASLIK_INSERT FOR FATURABASLIK
ACTIVE AFTER INSERT POSITION 0
AS
begin
   execute procedure musteri_urun_giris_insert NEW.CH_ID, new.GENELTOPLAM;
   end
bu kayıt yapıldığın da çalışan triger


yanlız ben firebird 1.5 kullanıyorum bu kodları ordan aldım
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

@husonet hocam valla iyi zamanlama aynı anda yazdık :lol:
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
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 »

Maaşallah demek lazım. MAAŞALLAH.

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.
Salih
Üye
Mesajlar: 250
Kayıt: 11 Mar 2004 05:36

Teşekkürler

Mesaj gönderen Salih »

Cevaplar için çok teşekkürler.

Biraz daha büyüyeyim de ben de soru cevaplamaya başlayayım diye can atıyorum. İnşallah o günler fazla uzak değildir...

Sevgi, saygı....
denizfatihi

teşekkürler

Mesaj gönderen denizfatihi »

bana yardımcı olan akdaşların tümüne teşekir ederim
Hesipnizden Allah razı olsun....
sair
Kıdemli Üye
Mesajlar: 288
Kayıt: 16 Haz 2003 04:41
Konum: Kastamonu
İletişim:

Mesaj gönderen sair »

eheh sizin verdiğiniz triger ve stored procedure örnekleri firebird e ait, denizfatihini tırmalatacaksınız valla.. SQL serverda bunlar biraz farklı. DEğişkenlerin başına @ işareti falan konuyordu bildiğim kadarıyla. @GENELTOPLAM gibi.. Triger ve stored procedurelerin SQL serverdaki yapısını Naile hanıma sorun bence.... SQL server in uzmanı o...
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
denizfatihi

sair arkadaşın dikkatine

Mesaj gönderen denizfatihi »

valla hiç gerek kalmadı 4 query ile işlemi halletmiştim zaten sadece daha
kolay yolu varmı diye merak etmiştim
Cevapla