Kodbank İndir

! CODEBANK 2012 !

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

ÖNEMLİ AÇIKLAMA: MUTLAKA OKUYUNUZ!

Gönderen Konu: DBGrid Toplama  (Okunma sayısı 4310 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı akfbircan

  • Kıdemli Üye
  • *****
  • İleti: 65
  • Rep: +0/-0
DBGrid Toplama
« : 10 Temmuz 2008 23:48:29 »
Slm arkadaşlar benim DBGRID ile ilgili bi sorum olacak. ::)Benim programımda fiyat alanı var ve ben bu alanı LABEL veya EDITin içerisine TOPLAM olarak aktarmak istiyorum. ;)Yani fiyat alanını toplayıp EDIT veya LABELe yazıyacak.Şimdiden Tşkler...

Çevrimdışı Kocaturk

  • Administrator
  • *****
  • İleti: 2.474
  • Rep: +56/-5
  • Cinsiyet: Bay
    • Delphi Dünyası
Ynt: DBGrid Toplama
« Yanıtla #1 : 11 Temmuz 2008 02:04:13 »
Fiyat alanını toplayacak derken?.. Yani tablodaki tüm kayıtlara ait fiyat alanının toplamını mı yazmak istiyorsun? diyelim ki tabloda 5 kayıt var ve label a bu 5 kayıdın fiyat alaının toplamını mı yazacaksın? belli etmemişsin. Ama anladığım doğruysa sana kendim için daha önceleri yazmış olduğum ve TBookMarkStr sınıfının kullanımına da basit bir örnek teşkil edecek function ı ekliyorum umarım işine yarar.

Function aşağıdaki gibi.

Kod: Delphi
  1. function ColSumm(var Table: TTable; FieldName: string): Longint;
  2. var
  3.   BookMarkStr: TBookmarkStr;
  4.   ColumnTotal: Longint;
  5. begin
  6.   ColumnTotal := 0;
  7.   if not Table.Active then exit;
  8.   with Table do
  9.     if RecordCount > 0 then
  10.     begin
  11.       First;
  12.       BookMarkStr := Bookmark;
  13.       DisableControls;
  14.       while not EOF do
  15.       begin
  16.         ColumnTotal := ColumnTotal + FieldByName(FieldName).AsInteger;
  17.         Next;
  18.       end;
  19.       EnableControls;
  20.       Bookmark := BookMarkStr;
  21.     end;
  22.   Result := ColumnTotal;
  23. end;
  24.  

Bu function ı ilgili formda public olarak da tanımlayabilirsin. Kullanımına gelince benim kullanımım Integer tipli alanlar içindi ama sen ne tip bir alan için kullanacaksın bilmiyorum diyelim ki parasal yada kayan noktalı tip bir alanı toplayacaksın o zaman functiondan dönen değerin tipini, ColumnTotal local değişkenin değer tipini ve 16. satırdaki AsInteger atamasını kullanacağın alanın taşıdığı veri tipine göre modifiye etmelisin. Bu modification dan sonra örneğin ilgili TTable nesenesinin AfterPost olay işleyicisinde ve ilgili formun OnShow olay işleyicisinde aşağıdaki gibi bir tanımlama yaparsan işini görür sanıyorum.

Kod: Delphi
  1.   Label1.Caption := IntToStr(ColSumm(Table1, 'FIYAT'));
  2.  


Çevrimdışı Cturk

  • Kıdemli Üye
  • *****
  • İleti: 256
  • Rep: +5/-1
  • Cinsiyet: Bay
Ynt: DBGrid Toplama
« Yanıtla #2 : 11 Temmuz 2008 18:51:56 »
Slm ...Aşağıdaki kod işini görecektir.Bir Buttona;//
Kod: Delphi
  1. var
  2.  giderytl:integer;
  3. begin
  4.   giderytl:=0;
  5.   IBDataSet1.First;
  6.   While not IBDataSet1.eof Do
  7.   begin
  8.    giderytl:=giderytl+IBDataSet1GIDER_YTL.AsInteger;//Bu alan parasal alan olacak.
  9.    IBDataSet1.Next;
  10.   end;
  11.    Label1.Caption:=Floattostr(giderytl);
  12.   end;
Bu Şekilde DBGridde Hem Tüm liste Toplamı alınacak hemde Kriterlere göre listelenen Parasal alan kaç tane ise her iki türlü Toplam alınacak..
« Son Düzenleme: 11 Temmuz 2008 19:11:35 by Cturk »

Çevrimdışı akfbircan

  • Kıdemli Üye
  • *****
  • İleti: 65
  • Rep: +0/-0
Ynt: DBGrid Toplama
« Yanıtla #3 : 11 Temmuz 2008 20:11:55 »
tşkler çokk sağolun...

Çevrimdışı benkeibushido

  • Yeni Üye
  • *
  • İleti: 17
  • Rep: +0/-0
  • Cinsiyet: Bay
Ynt: DBGrid Toplama
« Yanıtla #4 : 27 Nisan 2009 10:47:56 »
Çok teşekkür ederim ... güzel örnekler çok işime yaradı ;)

Çevrimdışı bykade

  • Yeni Üye
  • *
  • İleti: 2
  • Rep: +0/-0
Ynt: DBGrid Toplama
« Yanıtla #5 : 07 Eylül 2009 01:00:20 »
var 
giderytl:integer; 
begin 
 giderytl:=0; 
 IBDataSet1.First; 
 WhilenotIBDataSet1.eof Do 
 begin 
  giderytl:=giderytl+IBDataSet1GIDER_YTL.AsInteger;//Bu alan parasal alan olacak. 
  IBDataSet1.Next; 
 end; 
  Label1.Caption:=Floattostr(giderytl); 
 end; 
------------------
bu örnekte nota yada virgüllü olanı hesaplamıyor
örneğin alanlarda olan 0,4+0,5+0,2 gibi olanaları...bunları nasıl toplatırız acil yardım

Çevrimdışı sabanakman

  • Global Moderatör
  • *****
  • İleti: 767
  • Rep: +13/-0
  • Cinsiyet: Bay
Ynt: DBGrid Toplama
« Yanıtla #6 : 07 Eylül 2009 09:32:46 »
[ALAN].AsInteger tam sayı değeri verir, eğer ondalıklı (reel) sayılarla işlem yapılacaksa [ALAN].AsFloat ile toplama yapmalısınız.
Şaban Şahin AKMAN

Derin olan kuyu değil kısa olan iptir

Çevrimdışı barutali

  • Administrator
  • *****
  • İleti: 2.116
  • Rep: +51/-0
  • Cinsiyet: Bay
  • Falan filan ...
Ynt: DBGrid Toplama
« Yanıtla #7 : 08 Eylül 2009 16:49:36 »
query kullandığını varsayarsak ...


Kod: Delphi
  1.  
  2. with query do
  3. begin
  4. close;
  5. sql.clear;
  6. sql.add('Select  SUM(TOPLANCAKALAN) From TABLON as SONUC');
  7. OPEN;
  8. end;
  9.  
  10. label1.caption := floattostr(query.fieldbyname('SONUC').asfloat;
  11.  
  12.  

alternatifler çoğalsın istedim ..




Amatör Küme Programcı

Çevrimdışı Cturk

  • Kıdemli Üye
  • *****
  • İleti: 256
  • Rep: +5/-1
  • Cinsiyet: Bay
Ynt: DBGrid Toplama
« Yanıtla #8 : 08 Eylül 2009 18:10:31 »
Parasal alanın Field'ı "DOUBLE PRECISION" olarak ata (Parasal alanlarda daha randımanlı çalışır,problem yaşamazsın.) üstüne gel; Object inspector\Display Format = ###0.00 // olarak tanımla.

Çevrimdışı beysoft

  • Yeni Üye
  • *
  • İleti: 2
  • Rep: +0/-0
Ynt: DBGrid Toplama
« Yanıtla #9 : 27 Eylül 2009 20:28:15 »
emeğinize sağlık arkadaşlar

Çevrimdışı 3hamit

  • Yeni Üye
  • *
  • İleti: 1
  • Rep: +0/-0
Ynt: DBGrid Toplama
« Yanıtla #10 : 09 Mart 2010 23:47:09 »
tv kartının görüntüsünü forumda bir butona basarak nasıl açabilirim. yardım ederseniz sevinirim