Kodbank İndir

! CODEBANK 2012 !

İNDİRMEK&DETAYLI BİLGİ ALMAK İÇİN BURAYI TIKLAYINIZ.

ÖNEMLİ AÇIKLAMA: MUTLAKA OKUYUNUZ!

Gönderen Konu: Dbgrid de Alanları Toplama  (Okunma sayısı 1206 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı fikret.kina

  • Yeni Üye
  • *
  • İleti: 12
  • Rep: +0/-0
Dbgrid de Alanları Toplama
« : 25 Ağustos 2010 16:59:45 »
2 Tablom var master-details şeklinde birinde üyelerin kayıtları ve diğerinde her üyenin yatırdığı para miktarı kaydını tutuyorum... Borc tablosunun dbgridinde yatirdigi_para diye bi alan var o alandaki tüm kayıtları toplayamıyorum
Adotable kullandımm yanlış mı yaptımm query mi kullanmam gerekir??

Çevrimdışı barutali

  • Administrator
  • *****
  • İleti: 2.117
  • Rep: +51/-0
  • Cinsiyet: Bay
  • Falan filan ...
Ynt: Dbgrid de Alanları Toplama
« Yanıtla #1 : 25 Ağustos 2010 20:49:48 »
sql cümlesi ile aşağıdaki gibi yapabilirsin :

 with query do
begin
 close;
 sql.clear;
 sql.add('SELECT SUM(YATIRDIGI_PARA) AS SONUC FROM BORC ');
 Open;
end;

 Label1.caption := Floattostr(query.fields[0].asFloat);


ezbere yazdım ufak hatalar olabilir...



Amatör Küme Programcı

Çevrimdışı fikret.kina

  • Yeni Üye
  • *
  • İleti: 12
  • Rep: +0/-0
Ynt: Dbgrid de Alanları Toplama
« Yanıtla #2 : 26 Ağustos 2010 16:32:51 »
Hocam sizin başka bi konudaki yazınızdan aynı bu kodlarlarla hallettim bi sorum daha olacak...
Kodlarım birazcık uzun oldu kayıt olma tarihinden bu güne kadar ay kadar aidatla çarpıyo falan yatırması gekenden çıkarıyor vs.
Şimdi vt nına kayıt yaptıgımızda veya düzenlediğimizde sildiğimizde yani toplamı etkilyecek bir işlem yaptıgımızda her butona bu kodları yazmak dogrumu yada bi fonksiyon yazsak da her işlemde onu çağırsak olabilir mi böyle bi imkan var mı delphi de ??

Çevrimdışı orhanc

  • Kıdemli Üye
  • *****
  • İleti: 314
  • Rep: +1/-0
  • Cinsiyet: Bay
  • Giddy Up
    • Kişisel Sitem
Ynt: Dbgrid de Alanları Toplama
« Yanıtla #3 : 26 Ağustos 2010 16:46:14 »
Tablo yerine query kullan ve toplamları query içinde toplat. Gride otomatik toplanmış olarak gelecek zaten.

Çevrimdışı fikret.kina

  • Yeni Üye
  • *
  • İleti: 12
  • Rep: +0/-0
Ynt: Dbgrid de Alanları Toplama
« Yanıtla #4 : 26 Ağustos 2010 16:54:57 »
Zaten dünden beri query kullanıyorum ama sorunum o deil... Bütün yatırılan parayı topluyorum ama yeni bi aidat ekledniğinde yada bi aidat düzenlendiğinde yada silindiğinde label daki toplam değişmiyor sadece formun onshowuna yazdım kodlarımı ...

Yani kodlarının hepsini aynı şekilde bütün butonlara yazsam doğru olur mu yada istenildiğinde o kodları çağırmak gibi bi seçeneğimiz var mı ?

Şimdiden çok tşk ederim...

Çevrimdışı orhanc

  • Kıdemli Üye
  • *****
  • İleti: 314
  • Rep: +1/-0
  • Cinsiyet: Bay
  • Giddy Up
    • Kişisel Sitem
Ynt: Dbgrid de Alanları Toplama
« Yanıtla #5 : 26 Ağustos 2010 17:26:26 »
onu onshow yerine ayrı bir prosdüre olarak düzenle ve her ekleme ve silme işleminden sonra onu tekrar çalıştır.

Çevrimdışı fikret.kina

  • Yeni Üye
  • *
  • İleti: 12
  • Rep: +0/-0
Ynt: Dbgrid de Alanları Toplama
« Yanıtla #6 : 26 Ağustos 2010 17:44:54 »
Birazcık açarmısnız?  ;) Onu nasıl yapmak gerekir hocam procedure u nerye tanımlaycam ve onu istediğim zaman nasıl çağıracağım?

Çevrimdışı orhanc

  • Kıdemli Üye
  • *****
  • İleti: 314
  • Rep: +1/-0
  • Cinsiyet: Bay
  • Giddy Up
    • Kişisel Sitem
Ynt: Dbgrid de Alanları Toplama
« Yanıtla #7 : 26 Ağustos 2010 20:23:04 »
on showa yazdığın kodu alıyorsun

bunu yukarıdaki public kısmıan ekle

Kod: [Seç]
procedure AlanTopla;
Bunu yazdıktan sonra Ctrl+SHift+C ye basarsan prosedür gövdesini otomatik oluşturur.

Kod: [Seç]
procedure TForm1.AlanTopla; //buradaki TForm1 senin formunun adına göre değiştir
begin
 // bu araya yapmak istediğin kodları ekle
end;

diyelim kaydet tuşun var onun onclick olayına da şunu yazıyorsun

Kod: [Seç]
AlanTopla;
her kayıt ettikten sonra otomatik toplayacaktır.
« Son Düzenleme: 27 Ağustos 2010 00:04:44 by orhanc »

Çevrimdışı fikret.kina

  • Yeni Üye
  • *
  • İleti: 12
  • Rep: +0/-0
Ynt: Dbgrid de Alanları Toplama
« Yanıtla #8 : 26 Ağustos 2010 20:43:57 »
procedure TForm6.FormShow(Sender: TObject);
var
tarih1,tarih2 : TDateTime;
yil1,yil2,ay1,ay2,gun1,gun2 : word;
fark : Integer;
SONUC:integer;
begin
begin
SONUC:=0;
DataModule9.ADOQuery5.Close;
DataModule9.ADOQuery5.SQL.Clear;
DataModule9.ADOQuery5.SQL.Add('Select * From 130_AIDATLAR Where UYE_NO='''+DBEdit1.text+'''');
DataModule9.ADOQuery5.Open;
DataModule9.ADOQuery5.First;
While not DataModule9.ADOQuery5.eof Do
begin
SONUC:=SONUC+DataModule9.ADOQuery5.FieldByName('YATIRDIGI').AsInteger;
DataModule9.ADOQuery5.Next;
end;
end;
BitBtn3.Visible:=true;
BitBtn4.Visible:=false;
tarih1:=StrToDate(DBEdit6.Text);
tarih2:=Date;

fark:=SONUC-((((ay2+((yil2-yil1)*12))-ay1)+1)*400);// 400 tl aylık aidatı
if fark>0 then
Label7.Caption:='TL FAZLA YATIRMIŞ..!'
else if fark<0 then
label7.Caption:='TL EKSİK YATIRMIŞ..!'
else if fark=0 then
label7.Caption:='AÇIK YOK ŞU ANDA';
label5.Caption:=inttostr(fark);
DataModule9.ADOTable5_130AIDATLAR.Refresh;
end;




//kardes ins olur dediğin gibi yoksa her butona yazmam gerekecek bu kadar kodu... ::D tsk ederim

Çevrimdışı orhanc

  • Kıdemli Üye
  • *****
  • İleti: 314
  • Rep: +1/-0
  • Cinsiyet: Bay
  • Giddy Up
    • Kişisel Sitem
Ynt: Dbgrid de Alanları Toplama
« Yanıtla #9 : 26 Ağustos 2010 21:15:16 »
Kodun okunaksız bir düzen ver

Çevrimdışı Cturk

  • Kıdemli Üye
  • *****
  • İleti: 256
  • Rep: +5/-1
  • Cinsiyet: Bay
Ynt: Dbgrid de Alanları Toplama
« Yanıtla #10 : 19 Eylül 2010 17:52:40 »
Selamlar..Cevap biraz geç oldu ama..diğer arkadaşlarda faydalanır....
Kod: [Seç]
with query do
begin
 close;
 sql.clear;
 sql.add('SELECT SUM(YATIRDIGI_PARA) AS SONUC FROM BORC ');
 Open;
end;

 Label1.caption := Floattostr(query.fields[0].asFloat);
...Yukardaki kodu Datasourcenin "OnDataChange" olayına atarsan labeldeki sonuç kayıt anında değişir.
« Son Düzenleme: 19 Eylül 2010 17:56:46 by Cturk »