Aylara Göre Kar/Zarar Raporu

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ı
ayhanarican
Üye
Mesajlar: 37
Kayıt: 03 Tem 2003 01:24
Konum: İzmir
İletişim:

Aylara Göre Kar/Zarar Raporu

Mesaj gönderen ayhanarican »

Merhaba,


Delphi 6 + Paradox + TQuery kullanıyorum.
2 tablom var.
1 i Gider tablosu (ID,Tarih,GiderTürü,Tutar($))
2 cisi OdenenTaksitler(ID,RefID,Tarih,Tutar($),Odenen($))

bulunduğu yıldaki verileri Aylık olarak gruplayacak Kar Raporunu nasıl yapabilirm.
Ödenen(Gelir) taksitleri ve giderleri aylık olarak gruplayacak çıktı tablosunda

Ay Gelir Gider Kar
1 ### ### ###
2 ### ### ###
...
...
...
12 ### ### ###

alanları olacak.

Sanırım SELECT veya WHERE içinde if li ifadeler kullanmam gerekiyor fakat nasıl yapacağımı bilmiyorum.


yardımlarınızı bekliyorum. Teşekkürler.
csyasar
Üye
Mesajlar: 646
Kayıt: 25 Şub 2004 10:14
Konum: Tokat

Mesaj gönderen csyasar »

öncelikle aynı şeyi ben de nbi aralar yapmaya çalışmıştım. ama aylara göre sıralama yapabilecek bir sql ifadesi(en azından paradoxla çalışacak) yok. veritabanında 1 tane daha field aç ve ismi AY olsun. her kayıt işlemi sırasında tarihlerin ay bölümünü

Kod: Tümünü seç

Label1.Caption:=Copy(tarih.Text,4,2);
komutu ile kopyala. daha sonra sql sorgularıyla işlemi halledersin. Kullanımı:

mesela forma butto1 olsun. OnClick olayına şöyle bi kod gireceksin:

Kod: Tümünü seç

query1.close; //Query'i kapatıyoruz.
query1.sql.clear; //Query'nin içindeki sql cümlelerini siliyoruz.
query1.sql.add('select * from tablo.db'); // Sorgu yapacağımız tabloyu seçiyoruz.
query1.sql.add('where AY:='+#39+edit1.text+#39); //Tablemızın AY fieldındaki değerler edit1'deki ile aynı olan ifadeleri seçiyoruz.
query1.open; //Ve seçilen kayıtları query1'de gösteriyoruz.

bu kadar... kolay gelsin... :)
Kullanıcı avatarı
ayhanarican
Üye
Mesajlar: 37
Kayıt: 03 Tem 2003 01:24
Konum: İzmir
İletişim:

Mesaj gönderen ayhanarican »

bazı veritabanların da MONTH() diye tarihin ay kısmını ayıran SQL fonksiyonu olduğunu öğrendim. Bu fonksiyon Paradox ta kullanılabiliyor mu(denedim invalid use of keyword hatası verdi.) yada paradox taki karşılığı nedir.
bu iki tabloya bir tablo daha ilave edelelim. Aylar Tablosu

Aylar.db
Ayno AyAdi(A10)
1 Ocak
2 Şubat
3 Mart
..
..
..
12 Aralık

ve diğer tabloların Tarih ve Tutar alanları ile ilişkilendirilecek.
yani Gider tablosunun Ocak ayı toplamını alacak Gider Alanına aktaracak.
OdenenTaksit tablosunun Ocak ayı toplamını hesaplayacak Gelir alanına aktaracak ve Şubat, Mart diye devam edecek.

Aslında SQL de SELECT kısmında Tarih Ay kısmını ayıran bir fonksiyon olsa bu iş kolay olurdu.
Cevapla