id nosu küçük olan kayıtlarda kalan toplama?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

id nosu küçük olan kayıtlarda kalan toplama?

Mesaj gönderen pelitt »

selamlar
sql tablomda şöyle bir sorunum var

tablo hesap
id........ kim.......... aidat............ aodeme.........*a.kalan........... yakit.......... yodeme...............*y.kalan.............. ay............. yil............ not
2 5 15,00 5,00 10.00 100.00 50.00 50.00 ocak 2009
3 5 15,00 5,00 10.00 100.00 50.00 50.00 şubat 2009
4 5 15,00 5,00 10.00 100.00 50.00 50.00 mart 2009


arkadaşlar buşekilde giden bir tablom var yıldızlı olanlar sqlde yok hesaplama için geçici oluşturuldu öyle bir kodlama yapacağımki mesala 5 kimlikli zaatın o güne kadar
borçlarından ödedikleri çıkacak kalan sutunlarına(a.kalan/y.kalan) yansıyacak ama nasıl yapacağım hakkında kafam durdu.....
mesajı değiştirdim çünkü her şahıs her ay için bir ödeme yapacak
En son pelitt tarafından 29 May 2009 12:34 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Re: id nosu küçük olan kayıtlarda kalan toplama?

Mesaj gönderen pelitt »

araştırdım

SELECT SUM(kalan) FROM TABLO_ADI where kim=x şekinde bir kod çalışırmı
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Re: id nosu küçük olan kayıtlarda kalan toplama?

Mesaj gönderen pelitt »

Amaçtan yola çıkarar şöyle bişey işimi görecek heralda önceki kayıtlardaki kalanı toplayıp o satırdaki kalanla toplayıp o satıra yazsın aşşağıdaki gibi
örnek
tablo hesap
id........ kim.......... aidat............ aodeme.........*a.kalan........... yakit.......... yodeme...............*y.kalan.............. ay............. yil............ not
2 5 15,00 5,00 10.00 100.00 50.00 50.00 ocak 2009
3 5 15,00 5,00 10.00 100.00 50.00 50.00 şubat 2009
4 5 15,00 5,00 30.00 100.00 50.00 150.00 mart 2009
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: id nosu küçük olan kayıtlarda kalan toplama?

Mesaj gönderen conari »

Group by kullanman lazım. Fakat bu şekilde detay gösteremezsiniz.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Re: id nosu küçük olan kayıtlarda kalan toplama?

Mesaj gönderen pelitt »

ya bu delphi bulmaca çözmek gibi bişey bu işi kayıt girerken yapayım diyeceğim ancak ozamanda önceki tarihte bir hata olsa örn. değer değişse sonraki toplamlar bunu algılamaz

Kod: Tümünü seç

procedure TForm2.ZQuery1CalcFields(DataSet: TDataSet);
begin
 ZQuery1aidatk.AsCurrency:=ZQuery1AIDAT.AsCurrency-ZQuery1AODEME.AsCurrency;
ZQuery1yakitk.AsCurrency:=ZQuery1YAKIT.AsCurrency-ZQuery1YODEME.AsCurrency;
end; 
bunu değişken olarak nasıl yazıyoruz unit1 altında tanımladım yanlız hata verdi dikkat edeceğim nokta ne
bunu tanımladıktan sonra hesaplamayı burada kurgulasam bütün dbgridlerim aynı zaten zquery1 nesnesi ile çalışıyor çok kolaylık olacak
kodu tamamiyle yazmasanızda bana bu aralığa yazabileceğim basit örnekler verirseniz(örnek kim i 4 olan kalanlar toplamı (gerçi bu mantıksız oldu sonucun yazılacağı yerde kim 4 olduğı için sürekli döngüde kalır ) gibi aklınıza gelen birşeyler) ben o yoldan çıkıp birşeyler elde edebilirim sanırım
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: id nosu küçük olan kayıtlarda kalan toplama?

Mesaj gönderen conari »

örn. değer değişse sonraki toplamlar bunu algılamaz
Bunlar için Vt de trigger kullanılır.

5 nolu kim için toplamları bu şekilde al zaten Query kullanıyorsan Calc field da kullanma bunu Query de hesaplattırıp göster.

Kod: Tümünü seç

select kim, sum(aidat), 
sum(aodeme), 
sum(aidat-aodeme) AS AidatKalan,// calc field olarak yaptığın hesaplama
sum(yakit), 
sum(yodeme), 
sum(yakit-yodeme) As Yakıtkalan // calc field olarak yaptığın hesaplama
from tablo where kim=5 group by kim
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Re: id nosu küçük olan kayıtlarda kalan toplama?

Mesaj gönderen pelitt »

Cevap için çok teşekkür ettim kodda biraz değişiklik yaptım aşşağıda açıkladım yanlışım varsa düzeltin
select kim,
sum(aidat),//aidat sutunu toplam
sum(aodeme), //aödeme sutunu toplam
sum(aidat-aodeme) AS AidatKalan,// sutun toplamları birbirinden çıkarıldı aidatkalan sutununa değerleri yazıldı
bu kodu böyle kullanırsam görüntü şu şekilmi olacak
id....aidat.....aodeme.........akalan
1.....100.........50..............120
2.....70..........30..............120
3......80..........50..............120

dikkat ettiyseniz geçmiş kayıtlardada kalan 120 olarak gözükecek bu sorunu şöyle çözersem her satır kendi kim nosuna sahip ve
id si kendinden küçük satırlarla işleme tabi tutulursa çok şahane olacak aşşağıdaki şekli alacak ve zaten her çalışmada değerler yeniden hesaplanacağı için kayıt silme değiştirme durumu otomatik yansıyacak mesajı değiştire değiştire bir hal oldum ancak düşünebiliyoz selamlar

id....aidat.....aodeme.........akalan
1.....100.........50..............50
2.....70..........30..............90
3......80..........50..............120
4......80.........120..............0
sum(yakit),
sum(yodeme),
sum(yakit-yodeme) As Yakıtkalan // calc field olarak yaptığın hesaplama
from tablo where kim=(işleme giren satırın kim no sunu buraya nasıl aktarırım yani her satır için değişecek? ) group by kim and id=(işleme giren satır id sinden küçük id li olanlar yapmak için ne yazmalıyım her satır için değişecek?group by id')
En son pelitt tarafından 29 May 2009 04:25 tarihinde düzenlendi, toplamda 4 kere düzenlendi.
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Re: id nosu küçük olan kayıtlarda kalan toplama?

Mesaj gönderen pelitt »

trigger a baktım çok zora benziyor
yukardaki soruyu çözersek heralda delphide çığırmığır açarız bizim bile kafamız karıştı delphi neyitsin :D
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: id nosu küçük olan kayıtlarda kalan toplama?

Mesaj gönderen conari »

sizin yapmak istediğiniz son görüntü değil anlaşılan yürüye bakiye istiyorsunuz doğrumudur?
burada konuştuk
viewtopic.php?f=18&t=25145
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: id nosu küçük olan kayıtlarda kalan toplama?

Mesaj gönderen conari »

pelitt yazdı:trigger a baktım çok zora benziyor
yukardaki soruyu çözersek heralda delphide çığırmığır açarız bizim bile kafamız karıştı delphi neyitsin :D
Trigger dedim çünkü değişiklik falan otomatik olsun dediniz.
Fakat dediğiniz için Stored Prosedur ler kullanılır.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Re: id nosu küçük olan kayıtlarda kalan toplama?

Mesaj gönderen pelitt »

conari yazdı:sizin yapmak istediğiniz son görüntü değil anlaşılan yürüye bakiye istiyorsunuz doğrumudur?
burada konuştuk
viewtopic.php?f=18&t=25145
ikinci tablo şeklinde olması ve içinden değişiklik yaptığımda değişikliklere göre yenilenmesi önemli
dediğiniz yerde firebird 2.1 vs. denmiş ben bu işlemi dbgridde gerçekleştirmek istiyorum birde
procedure TForm2.ZQuery1CalcFields(DataSet: TDataSet);
begin
ZQuery1aidatk.AsCurrency:=ZQuery1AIDAT.AsCurrency-ZQuery1AODEME.AsCurrency;
ZQuery1yakitk.AsCurrency:=ZQuery1YAKIT.AsCurrency-ZQuery1YODEME.AsCurrency;
end;


böyle bir kod çok işlek oluyor mesala ödemeyi değiştir kalan hemencecik kendi değişiyor ondan dolayı yazacağım kodda buraya uygun olsunki
yaptığım değişiklik hemen dbgride yansısın onu istiyom kardeş yardımların için teşekkür ettim sağol

kırmızılı yazdığım yerlere acaba nasıl bir kod gireceğim orayı halledersek heralda sorun kalmıyacak
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Re: id nosu küçük olan kayıtlarda kalan toplama?

Mesaj gönderen pelitt »

selamlar arkadaşlar bu sorunu hala çözemedim yardım edecek yokmu
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Re: id nosu küçük olan kayıtlarda kalan toplama?

Mesaj gönderen pelitt »

Kod: Tümünü seç

select O.OrderId,
    convert(char(10),O.OrderDate,101) as 'Order Date',
    O.OrderAmt, 
    (select sum(OrderAmt) from Orders 
                          where OrderID <= O.OrderID and 
                               convert(char(10),OrderDate,101)
                             = convert(char(10),O.OrderDate,101))
	                               'Running Total' 
from Orders O
  order by OrderID
sorunun çözümü bu kod ama bir türlü uyarlayamadım
Cevapla