sql de sum komutu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
dtgb
Üye
Mesajlar: 175
Kayıt: 07 May 2004 10:02

sql de sum komutu

Mesaj gönderen dtgb »

Merhaba arkadaslar

if edit4.Text <> '' then
Result := AddResult(Result) + ' Lot_No LIKE ''' + edit4.Text+ '%''';

boyle bir sql cumlesine sum komutunu nasıl ekleye bilirim
sum ile gramaj alanının toplamını alacagım.
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selam aslına bakarsan hem arama yapmaya çalışmışsınzı hem de toplam aldırmaya çalışıyorsunuz neye göre ve nasıl veya yapmak istediğiniz.Olay biraz daha açabilirseniz sorunuzu daha iyi çözüme ulaşabiliriz sanırım Kolay gelsin.
Kullanıcı avatarı
dtgb
Üye
Mesajlar: 175
Kayıt: 07 May 2004 10:02

Mesaj gönderen dtgb »

Evt haklısınız
yapmak istedigim su veritabanımda birden fazla alana gore sorgu yapıyorum
ornegin
tarih ,vardiya,gurup,makine no gibi daha birkac alana gore sorgulama yapıyorum
sorgumu hazırlamıs oldugum formda hahangi kritere ait edit in icerisi doluysa onuda sorguma ekleyerak yapıyorum
ornegin
makine no=1
vardiyası =A dersem bunları suzerek getiriyor son yapmak istedigim se her suzme sonunda gramaj degerlerinin toplamını bana vermesi
sum kullandıgım zaman grid ici bosalıyor sadce toplam degeri veriyor.
sizce ne yapmam gerek.
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba,

soru başlığınızda SQL ile sum toplamı aldırmak demişsiniz bence bu soruyu Veri tabanı formuna sormanız gerikir.

Bu konu forumda fazlasıyla konuşuldu

:ara Sum

Arama yaparsanız sonuca daha kısa sürede ulaşacağınızı düşünüyorum.

Kolay gelsin.

Not: Yukarıdaki sql cümlesimi hiçbişey anlayamadım
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
dtgb
Üye
Mesajlar: 175
Kayıt: 07 May 2004 10:02

Mesaj gönderen dtgb »

Haklısınız yanlıslıkla programlama kısmında sordum sorumu
ama tabiki soruyu sormadan once baya bi arastırdım sum ile ilgili soruları inceledim fakat fakat benim yapmak istedigimle ilgili bir cozum bulamadım cunku her and li aramadan sonra sum komutunu devreye sokmam gerek.
tesekkurler...
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Bu başlık altında devam etmek fayda var sanırım.

Bence yapmak istediğiniz en azından örnekler yazarak burada açıklarsanız sorunuza hemen cevap bulunacaktır.

Ne yapmak istediğiniz lütfen açıklayıcı şekilde yazınız. Son olarakta bu işlem için kullandığınız sql kodunu yazınız.

Kolay gelsin.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
dtgb
Üye
Mesajlar: 175
Kayıt: 07 May 2004 10:02

Mesaj gönderen dtgb »

function TFRMListe.GetSQLFilter: String;
function AddResult(SQL: String): String;
begin
if SQL <> '' then
Result := SQL + ' AND ';
end;
var
a: Integer;
ara:string;
begin
Result := '';
if edit4.Text <> '' then
Result := AddResult(Result) + ' Lot_No LIKE ''' + edit4.Text+ '%''';
//**tarih aralıgını bu fonksiyona ekleyemedim
// if DateTimeToStr(QryTarih.DateTime) <> '' then
// Result := AddResult(Result) + ' Tarih = ' + DateTimeToStr(QryTarih.DateTime);

if edit3.Text <> '' then
Result := AddResult(Result) + ' Sicil_No LIKE ''' + edit3.Text + '%''';
if edit5.Text <> '' then
Result := AddResult(Result) + ' Makina_No LIKE ''' + Edit5.Text + '%''';
if edit6.Text<> '' then
Result :=AddResult(Result) + ' Gurup like ''' + edit6.text + '%''';
end;

**********************************************************
SORGULAMA YAPTIGIM BUTONUN CLİGİNDE İSE ASAGIDAKİ KOD VAR

procedure TFRMListe.araClick(Sender: TObject);
begin
if ((edit1.Text<>'' )and(edit2.Text<>'')) then
begin
dm.QTartim.Close;
dm.QTartim.SQL.Clear;
dm.QTartim.SQL.Add('select * from TBL_Tartim where tarih between '''+DateTimeToStr(dt1.DateTime)+''' and '''+DateTimeToStr(dt2.DateTime)+'''');
dm.QTartim.Open;
end
else
begin
dm.QTartim.Close;
dm.QTartim.SQL.Clear;
dm.QTartim.SQL.Add('select * from TBL_Tartim');
dm.QTartim.Open;
end ;

GlobalFilter := GetSQLFilter;

if GlobalFilter <> '' then
begin
dm.QTartim.Filter := GlobalFilter;
dm.QTartim.Filtered := True;
end
else
begin
dm.QTartim.filtered := False;
end
end;

Kodlamam bu sekilde sorgu duzgun olarak calısıyor qtartima baglı gridimde gramaj alanım var her sorgu sonunda toplam gramajı bulmam gerek bunu nereye ne sekilde yazmam gerek sum komutunu sadece tek basına kullanabiliyorum
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba,

Sorgunuz düzgün olarak çalışıyorsa sadece toplam almak için

Kod: Tümünü seç

dm.QTartim.Close; 
dm.QTartim.SQL.Clear; 
dm.QTartim.SQL.Add('select sum(Toplatacağınız alan),digeralan1,digeralan2 from TBL_Tartim Group by sectigimiz alanlar'); 
dm.QTartim.Open; 
end ; 
Böyle yaparsanız toplatmış olacaksınız.
Yanlız dikkat etmeniz gerekn bir husus var.
:idea: sum işleminde sonuç set satır olarak döner bu sonucu nereye yazdırmak istiyorsanız oradan aldırmalısınız.

Saygılarımla
Kolay gelsin.
En son pro_imaj tarafından 24 Eyl 2005 11:51 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Merhaba.
Sum ile toplam almak istediğiniz alanları yazdıktan sonra akabinde view etmek istediğiniz diğer alanları ayrıca sorgu sonunda gruplamanız yani group by ifadesi ile belirtmeniz gerekir..Ek olarak kodlama konusunda ilerde sıkıntı yaşamamak için kod standardı uygulamanızı tavsiye ederim.

Kolay gelsin..
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba,
@bLue aLonE cevabın için tşk ederim ben eklemeyi unutmuşum. :)
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Ekip ruhu bu olsa gerek :)
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selam
aslında bunu paremetreler ile çok rahat bir şekilde halledebilirsiniz.gerçi forumdada sizin örneğinize benzer örnekler mevcut biraz incelemeniz lazımdı aslında
anladığım kadarı ile
siz
her and ile
kontrol yapıp yani filtreleme yapıp sonucu mesela atıyom edit bileşeninde göstermek veay dbeditte.
filtreleme olayına gelince size belki değişik bir fikir vermesi babından yazıyorum birde şu şekildede aslında yapabilirsiniz.

Query nin Sql satırına

Kod: Tümünü seç

select sum(toplam) from cislem where   cislem.tarih between  :tarih1 and :tarih2 and cislem.CKOD
between :kod1 and :kod2 and cislem.ADSOYAD between :ad1 and ad2
order by tarih
bu kendi proğramımdan bir örnek dikkat edilirse bu sql satırında
3 tane fielde göre raporlama örneği tabiiki
burada tarih1,tarih2,kod1,kod2,ad1,ad2 bunların params özelliğindende tipi belirtilmeli
daha sonra siz bu şekilde hem
bir filtreleme alırsınız
hemde filtreleme yaptığınız alanın toplamında bulmuş olursunuz.Kolay gelsin.
Kullanıcı avatarı
dtgb
Üye
Mesajlar: 175
Kayıt: 07 May 2004 10:02

Mesaj gönderen dtgb »

Vermis oldugunuz degerli ilgilerinizden dolayı cok tesekkurler arkadaslar
ins pazartesi bunları deneyecegim.
Herkese kolay gelsin.
Yardımlasmayla asılmayacak engel yoktur.
Kullanıcı avatarı
dtgb
Üye
Mesajlar: 175
Kayıt: 07 May 2004 10:02

Mesaj gönderen dtgb »

Merhabalar Arkadaslar
Konuyu baya bi uzattım ama pro_imaj arkadasımız demis ki "sum işleminde sonuç set satır olarak döner bu sonucu nereye yazdırmak istiyorsanız oradan aldırmalısınız." bunu biraz daha acabilirmisiniz.
ben bu kodu yazdıgımda

begin
dm.QTartim.Close;
dm.QTartim.SQL.Clear;
dm.QTartim.SQL.Add('select sum(Gramaj) from TBL_Tartim Group by sicil_no,lot_no');
dm.QTartim.Open;
EDit7.Text:=dm.QTartim.Fields[0].Value;
end ;
bu sekilde yazdıgımda sadece toplamı edite yazıyor gride kayıt gelmiyor
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selam
gride kayıt gelmez

Kod: Tümünü seç

dm.QTartim.Close; 
dm.QTartim.SQL.Clear; 
dm.QTartim.SQL.Add('select sum(Gramaj) from TBL_Tartim Group by sicil_no,lot_no'); 
dm.QTartim.Open; 
EDit7.Text:=dm.QTartim.Fields[0].Value; 
bu kodunuzu yazdunzı
ve bundan sonra da
tekrar

Kod: Tümünü seç

dm.QTartim.Close; 
dm.QTartim.SQL.Clear; 
dm.QTartim.SQL.Add('select *) from TBL_Tartim'); 
dm.QTartim.Open;
yazın kolay gelsin
Cevapla