kayıtların aylara göre toplanması
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 386
- Kayıt: 02 Tem 2007 09:43
kayıtların aylara göre toplanması
değerli arkadaşlar;
cekler isminde tablom var. tablodaki kayıtların aylara göre toplanıp edit'e aktarılmasını nasıl yapabilirim. 1. ay toplmı edit1 de 2. ay toplamı edit2 de gibi
kolay gelsin.
cekler isminde tablom var. tablodaki kayıtların aylara göre toplanıp edit'e aktarılmasını nasıl yapabilirim. 1. ay toplmı edit1 de 2. ay toplamı edit2 de gibi
kolay gelsin.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3077
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: kayıtların aylara göre toplanması
Büyüklerin ellerinden, küçüklerin gözlerinden öpmeyi unutmuşsun .akuyumcu63 yazdı:değerli arkadaşlar...
Neyse şakayı bir yana bırakırsak; sorunun cevabını şöyle bir sorgu ile aylara göre toplamını alabilirsin. Örneğim SQL Server'a göre olacak.
Kod: Tümünü seç
select month(EvrakTar), sum(tutar) from cekler group by month(EvrakTar)
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
-
- Üye
- Mesajlar: 386
- Kayıt: 02 Tem 2007 09:43
- sabanakman
- Kıdemli Üye
- Mesajlar: 3077
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Paradox SQL fonksiyonları hakkında pek bilgim yoktur fakat önerim kodla toplaman olacak.
Kod: Tümünü seç
var Aylar:array of [1..12] Real;
i:Integer;
Yil , Ay, Gun:Word;
begin
for i:=1 to 12 do Aylar[i]:=0;
Tbl.First;
while nor Tbl.Eof do begin
DecodeDate(TblTarih.AsDateTime, Yil , Ay, Gun);
Aylar[Ay]:=Aylar[Ay]+TblTutar.AsFloat;
Tbl.Next;
end;
end;
//Aylar dizisinde toplamlar var...
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
-
- Üye
- Mesajlar: 135
- Kayıt: 14 Kas 2005 12:24
İyi çalışmalar.
Ben bir projemde böyle bir işlem yapmıştım.
Döngü ile tablodan aldığınızda yavaşlama olabilir ya da program kesilebiliyor.
Çözümü ise şu şekilde buldum.
Veritabanımda aylar isminde bir master ve hareketler isminde bir detail tablo oluşturup Sum fonksiyonu ile toplamları mastera aktardım. Daha sonra masterdaki alanlar ve detaildeki alanlar için cxGrid de iki adet level ve dbwiev ile halletim. cxGrid bu iş için iyi bir çözüm. Master-Detail diye aratırsanız bununla ilgili bir çok mesaj forumda mevcut.
Ben bir projemde böyle bir işlem yapmıştım.
Döngü ile tablodan aldığınızda yavaşlama olabilir ya da program kesilebiliyor.
Çözümü ise şu şekilde buldum.
Veritabanımda aylar isminde bir master ve hareketler isminde bir detail tablo oluşturup Sum fonksiyonu ile toplamları mastera aktardım. Daha sonra masterdaki alanlar ve detaildeki alanlar için cxGrid de iki adet level ve dbwiev ile halletim. cxGrid bu iş için iyi bir çözüm. Master-Detail diye aratırsanız bununla ilgili bir çok mesaj forumda mevcut.
-
- Üye
- Mesajlar: 386
- Kayıt: 02 Tem 2007 09:43
SQL komutlarıyla filitreleme yaparak hesaplatılsa daha sağlıklı olur diye düşünüyorum,
sabanakman;
select month(EvrakTar), sum(tutar) from cekler group by month(EvrakTar)
yukarıdaki kodda "month" komutunu çalıştıramadık. 2 adet datetimepicker ile iki tarih aralığını filitreleyip hesaplatabiliyoruz ancak, otomatik olarak belli bir aya ait kayıtları çığıran yada filitreleyen bir fonksiyon almalı diye düşünüyorum.
sayin adminlerim lütfen bu konuya bir el atın;
kolay gelsin,
sabanakman;
select month(EvrakTar), sum(tutar) from cekler group by month(EvrakTar)
yukarıdaki kodda "month" komutunu çalıştıramadık. 2 adet datetimepicker ile iki tarih aralığını filitreleyip hesaplatabiliyoruz ancak, otomatik olarak belli bir aya ait kayıtları çığıran yada filitreleyen bir fonksiyon almalı diye düşünüyorum.
sayin adminlerim lütfen bu konuya bir el atın;
kolay gelsin,
- sabanakman
- Kıdemli Üye
- Mesajlar: 3077
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
-
- Üye
- Mesajlar: 135
- Kayıt: 14 Kas 2005 12:24
Hocam ben cxGrid de ısrar ediyorum. Sebebi de şu;
Biliyorsunuz bileşenin DataController kısmında FooterSumary yordamı mevcut.
Projede kullanımı ise şöyle olabilir.
Öncelikle master detail ilişki kurup sonra da her bir detail dbTableView in FooterSumary kısmında toplam bakiye gösterilir.
Hem görünüş itibari ile hem de işlem azlığı nedeniyle daha güzel olacağını düşünüyorum.
ama elinizde bu bileşenler yok diyelim.
o zaman da kodla yapmak zorunda kalacaksınız tabiki.
Burada fonksiyon kullandığınızda month gibi veritabanına bağlı olarak karşınıza ayrı sorunlar çıkacaktır. Bu durumda ben genelde alan toplamını yeni bir değer vererek editlere aktarıyorum.
Yani
Biliyorsunuz bileşenin DataController kısmında FooterSumary yordamı mevcut.
Projede kullanımı ise şöyle olabilir.
Öncelikle master detail ilişki kurup sonra da her bir detail dbTableView in FooterSumary kısmında toplam bakiye gösterilir.
Hem görünüş itibari ile hem de işlem azlığı nedeniyle daha güzel olacağını düşünüyorum.
ama elinizde bu bileşenler yok diyelim.
o zaman da kodla yapmak zorunda kalacaksınız tabiki.
Burada fonksiyon kullandığınızda month gibi veritabanına bağlı olarak karşınıza ayrı sorunlar çıkacaktır. Bu durumda ben genelde alan toplamını yeni bir değer vererek editlere aktarıyorum.
Yani
Kod: Tümünü seç
'SELECT SUM(AlanA) AS AlanAToplam,Ay,AyNo FROM TabloA WHERE AyNo = '''+edtAy.Text+'''';
//akabinde tabloyu aktif et ve....
Edit1.Text := TabloADBAlanAToplam.Value;//Durumu göre çevirme yapılır.
Bu mantığın daha uygun olacağı kanaatindeyim.
Başarılar
Daha önce localsql helpinden faydalanarak bir soruya cevap vermiştim. Orda verdiğim örnek şu şekildeydi.akuyumcu63 yazdı: sabanakman;
select month(EvrakTar), sum(tutar) from cekler group by month(EvrakTar)
yukarıdaki kodda "month" komutunu çalıştıramadık.
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
begin
QUERY1.CLOSE;
QUERY1.SQL.Clear;
QUERY1.SQL.Add('SELECT * FROM OZCANK ');
QUERY1.SQL.Add(' WHERE EXTRACT(MONTH FROM TARIH)=EXTRACT(MONTH FROM CAST(:BUGUN AS DATE ))');
QUERY1.SQL.Add(' AND EXTRACT(YEAR FROM TARIH)=EXTRACT(YEAR FROM CAST(:BUGUN AS DATE ))');
QUERY1.ParamByName('BUGUN').AsDate:=DATE;
QUERY1.Open;
end;
O konu ile ilgili olarak viewtopic.php?t=13983&postdays=0&postor ... t&start=15
linkine bakabilirsiniz.
İyi çalışmalar.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Logo Go özel eğitim, web tasarım, teknik servis
-
- Üye
- Mesajlar: 386
- Kayıt: 02 Tem 2007 09:43
- sabanakman
- Kıdemli Üye
- Mesajlar: 3077
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Aslında @ofenX'in verdiği metodu araştırıp ondan sonra sql ile olmaz demem gerekirdi . Kendisi bize bunu hazır olarak sunduğu için dayanamayıp sql ile kodunu koduna çevrilince çalışıp çalışmayacağını denedim ama malesef Paradox bu konuda çok zayıf kalmış. group by olarak alan ismi istemekte ısrar ettiğinden aylara göre grup yapmaya olanak sağlamadı.
Kod: Tümünü seç
select month(EvrakTar), sum(tutar) from cekler group by month(EvrakTar)
Kod: Tümünü seç
select Extract(month from EvrakTar), sum(tutar) from cekler group by Extract(month from EvrakTar)
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
-
- Üye
- Mesajlar: 386
- Kayıt: 02 Tem 2007 09:43
tarih değerleri konusunda sql fonksiyonları yetersiz kalıyorsa yılı 400 ayı 32 işe çarpıp toplayın ve gunu ekleyin...
ben bir suru işte bunu formulize edip kullanıyorum (as400 boyle manyak etmişti beni)
ben bir suru işte bunu formulize edip kullanıyorum (as400 boyle manyak etmişti beni)
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Evet haklısınız. Localsql helpinde
İyi çalışmalar.
şeklinde yazıyor. Boşuna sizi uğraştırdık. Kusura bakmayın.Note Derived values (calculated fields) cannot be used as the basis for a GROUP BY clause.
Column references cannot be passed to an GROUP BY clause via parameters.
İyi çalışmalar.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Logo Go özel eğitim, web tasarım, teknik servis