Borç Alacak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
isahin4746
Üye
Mesajlar: 11
Kayıt: 12 Ara 2015 04:17

Borç Alacak

Mesaj gönderen isahin4746 »

Merhaba Kolay gelsin iyi Çalışmalar
Bu Kodla Bor Dekontuna Cari Hesabı seçiyorum Veri tabanı firebird ben bu işlemleri BitBtn üzerinde yapıyorum

Kod: Tümünü seç

procedure TBorcDekont.SecClick(Sender: TObject);
begin
 Application.CreateForm(TSecCari,SecCari);
  try
    if SecCari.Showmodal = idOK then
    begin
    Data.CHareketCH_CARIID.AsString := Data.CariHesapCARIID.AsString;
    Data.CHareketCH_CARIUNVANI.AsString := Data.CariHesapCARI_UNVANI.AsString;
    Data.CHareketCH_CARIKODU.AsString := Data.CariHesapCARIKODU.AsString;
    end;
    finally
    FreeAndNil(SecCari);
  end;
end;

end.
Ve Bu Kodla İse Kaydet İşlemini Yapıyorum Cari Hesabın Bakiyesine İşliyorum

Kod: Tümünü seç

Data.CHareket.Post;
Data.Carihesap.Edit;
Data.CarihesapCARI_BORC.Value:=Data.CarihesapCARI_BORC.Value+Data.CHareketCH_BORC.Value;
Data.CarihesapCARI_BAKIYE.Value:=Data.CarihesapCARI_BORC.Value-Data.CarihesapCARI_ALACAK.Value;
Data.Carihesap.Post;
Data.CariHesap.Close;
Data.CariHesap.Open
;

Düzeltme işleminde Şu şekilde sorunum Var Kayıt Düzelt dediğimde Yani o borç dekontunu başka bir cari hesaba almam gerekiyor ama şu sorunla karşılaşıyorum başka hesapları karıştırıyor

kayıt silme kodu

Kod: Tümünü seç

Data.CHareket.Edit;
Data.Carihesap.Edit;
Data.CarihesapCARI_BORC.Value:=Data.CarihesapCARI_BORC.Value-Data.CHareketCH_BORC.Value;
Data.CarihesapCARI_BAKIYE.Value:=Data.CarihesapCARI_BORC.Value+Data.CarihesapCARI_ALACAK.Value;
Data.CariHesap.Post;
Data.CHareket.Delete;
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: Borç Alacak

Mesaj gönderen esistem »

Selam,
veritabanı firebird demişsin, o zaman bu işleri trigger lar ile yapabilirsin, hem delphi kod kalabalığından kurtarır hemde sorunsuz çalışır. Tabloların AfterDelete, AfterInsert ve AfterUpdate trigger larına yaz gitsin hiç uğraşma,. Örnek kodu da aşağıda yazıyorum.

CARI_ISLEM_AI (Cari işlem after insert triggeri)

Kod: Tümünü seç

if (new.dovizkodu=1) then
update cari set tlborc = tlborc+new.borc, tlalacak = tlalacak+new.alacak where kod=new.carikodu;
if (new.dovizkodu=2) then
update cari set usdborc = usdborc+new.borc, usdalacak = usdalacak+new.alacak where kod=new.carikodu;
if (new.dovizkodu=3) then
update cari set eurborc = eurborc+new.borc, euralacak = euralacak+new.alacak where kod=new.carikodu;
CARI_ISLEM_AU (Cari işlem after update triggeri)

Kod: Tümünü seç

if (old.dovizkodu=1) then
update cari set tlborc = tlborc-old.borc, tlalacak = tlalacak-old.alacak where kod=old.carikodu;
if (old.dovizkodu=2) then
update cari set usdborc = usdborc-old.borc, usdalacak = usdalacak-old.alacak where kod=old.carikodu;
if (old.dovizkodu=3) then
update cari set eurborc = eurborc-old.borc, euralacak = euralacak-old.alacak where kod=old.carikodu;

if (new.dovizkodu=1) then
update cari set tlborc = tlborc+new.borc, tlalacak = tlalacak+new.alacak where kod=new.carikodu;
if (new.dovizkodu=2) then
update cari set usdborc = usdborc+new.borc, usdalacak = usdalacak+new.alacak where kod=new.carikodu;
if (new.dovizkodu=3) then
update cari set eurborc = eurborc+new.borc, euralacak = euralacak+new.alacak where kod=new.carikodu;
CARI_ISLEM_AD (Cari işlem after delete triggeri)

Kod: Tümünü seç

if (old.dovizkodu=1) then
update cari set tlborc = tlborc-old.borc, tlalacak = tlalacak-old.alacak where kod=old.carikodu;
if (old.dovizkodu=2) then
update cari set usdborc = usdborc-old.borc, usdalacak = usdalacak-old.alacak where kod=old.carikodu;
if (old.dovizkodu=3) then
update cari set eurborc = eurborc-old.borc, euralacak = euralacak-old.alacak where kod=old.carikodu;
Kısaca duruma göre eski ve yeni kayıtlara OLD veya NEW şeklinde ulaşabilirsin. Bu işlemleride veritabanına rahatça uygulayabilmek için IB Expert Personel surumunu ücretsiz olarak kullanabilirsin.
isahin4746
Üye
Mesajlar: 11
Kayıt: 12 Ara 2015 04:17

Re: Borç Alacak

Mesaj gönderen isahin4746 »

IB Expert Personel araştırdım ama bir türlü indiremedim üyelik istiyor üye olurken hata veriyor
AfterPost
Üye
Mesajlar: 158
Kayıt: 12 Tem 2014 10:22

Re: Borç Alacak

Mesaj gönderen AfterPost »

IbManagerLiteSetup i kullanın bence hem kolay kurulum hem de daha sade arayüz, çok güzel bir geliştirme aracı...
ihalilcoban
Üye
Mesajlar: 121
Kayıt: 10 Ara 2015 10:39

Re: Borç Alacak

Mesaj gönderen ihalilcoban »

esistem, hocamın bahsettiği yöntem en sağlam yöntemdir. Kullanımını öğrenirsen işini baya bir kolaylaştırır. İstersen bakiye hesaplamayı datasetlerle de yapabilirsin. Datasetle SQL SUM kullanarak istediğin alanın toplamını alıp ekranda göstermen mümkün. Bunun için kullandığım yöntemi anlatayım. Öncelikle forma veya datamodule kullanıyorsan oraya bir adet dataset bir adet datasource koy adını bakiye hesap olarak belirle. Gerekli bağlantıları yaptıktan sonra Edit Sql sine;

Kod: Tümünü seç

Select SUM(AIDAT) TOPLAM_BORC from KURS_TBL
kodunu yaz. Anlık hesaplaması için de cari tablonun afretpost ve afterdelete kısımlarında hesaplama için kullandığın dataseti close open yap. Bu şekilde bakiye hesaplamış olur. Bakiyeyi de ekranda göstermek istersen bir tane DBText ekle. Datasourcesini de hesaplama için kullandığın datasetin datasourcesine bağla işlem tamamdır.
Cevapla