firebirdde triger çalışıyor dediler bana

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

kusura bakmassanız eğer bu konuda ufacık bir kod parçası istesem ayp etmiş olurmuyum acaba
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
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 »

Bence ayıp etmiş olursun Kod'unu yazmaya başla problem yaşadığın yerleri beraber düzeltelim.

ipucu veriyorum

Kod: Tümünü seç


if (fis.kdv = is null) then
           fis.tutar := fis.adet * fis.birimFiyat
else
           fis.tutar := (((fis.adet * fis.birimFiyat) * fis.kdv) /100) + (fis.adet * fis.birimFiyat)


Kod'da hata olabilir test etmedim.
Bunun gibi bir şey yapacaksın

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ı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

trigger tarafında yazılacak kod klasik bir update kodu olacak.... yani

Kod: Tümünü seç

Update TABLO set TOPLAM=BIRIM_FIYAT*ADET*(KDV+100)/100 where PRIMARY_KEY=new.PRIMARYKEY
eger bunların toplamı bir master tabloya yazılacaksa da o zaman master tablonun butun detaylarının bu degerini toplayıp master'a update eden bir update kodu olmalı.... icinde bir sub query ile detay tablodaki toplamları bulabilir.....
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

fahrettin yazdı: eger bunların toplamı bir master tabloya yazılacaksa da o zaman master tablonun butun detaylarının bu degerini toplayıp master'a update eden bir update kodu olmalı.... icinde bir sub query ile detay tablodaki toplamları bulabilir.....
sub query de nasıl yazılıyor

ben sub kelimesini visual basicten hatırlıyorum

ama burda nasıl kullanacağımı bilemiyorum

yapmak istediğim işi tam olarak fahrettin hocam tarif etmiş helal hocam ben bile böyle tarif edemezdim...
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Master ve detay tabloda ne gibi alanlar oldugunu en azından primary keylerinin ne oldugunu ve hesaba girecek alanların ne oldugunu belirtirseniz.... Daha somut bir fikir vermeye calisalim.... Fakat bu sırada seminer Seminer 6 ve 8 i bu anlamdaki açığı kapatmak amacıyla incelemenizi tavsiye ederim.....
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Anladiğim kadarıyla @ALUCARD ın sorduğu daha kayıtı girerken miktar, birim fiyat ve kdv den tutarın anında hesaplatılması. AfterUpdate veya AfterInsert te bu işi yapabilirsin ama triggerların da tetiklenebilmesi kayıtı post etmene bağlı. Yoksa sen daha bilgileri girerken hesaplamaz. Fakat post ettiğin anda hesaplayıp veritabanına yazar.
sub query de nasıl yazılıyor

ben sub kelimesini visual basicten hatırlıyorum

ama burda nasıl kullanacağımı bilemiyorum
SubQuery sorgu içindeki başka sorgulara denir. Yani alt sorgu gibi..

Örn;

Kod: Tümünü seç

Select * from Tablo1 t1
where t1.uye_no in (select uye_no from tablo2) ...
Bu yazım şekillerinden bir tanesi. Veri tabanının desteklediği değişik şekillerde sub-query yi kullanmak mümkün.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

rsimsek yazdı:Anladiğim kadarıyla @ALUCARD ın sorduğu daha kayıtı girerken miktar, birim fiyat ve kdv den tutarın anında hesaplatılması. AfterUpdate veya AfterInsert te bu işi yapabilirsin ama triggerların da tetiklenebilmesi kayıtı post etmene bağlı. Yoksa sen daha bilgileri girerken hesaplamaz. Fakat post ettiğin anda hesaplayıp veritabanına yazar.
@rsimsek hocam yani bili giriş anında toplam hesapları delphi tarafında yapacağım yanlış anlamadıysam...
teşekkur ederim...
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

O işin klasik yolu.
Konu Trigger olduğuna göre işlemi orada yapmak daha mantıklı. Fakat o zamanda kayıtı post edince tutar kısmı hesaplanıp atanır. Buna dikkat etmek lazım. Yani kdv li tutarı after_update ve after_insert trigger lerine ayrı ayrı yazmak lazım. Post tan sonra commit/refresh yaparak hesaplanan tutarın görüntülenmesi sağlanabilir.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

hocam bi dakka şimdi kafam karıştı

bu iş triger le olurmu olmazmı onu anlayamadım

ben bütün işi veritabanına yıkmak istiyorum.

mantıklı olanda bu zannedersen
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Zaten biz de veritabanı kısmını anlattık ya :wink: trigger falan :)
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

hocam teşekkur ediyorum ve hemen deniyorum
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Cevapla