SQL SUM TOPLAM ALMAK

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
OZAY
Üye
Mesajlar: 23
Kayıt: 22 Eyl 2014 10:52

SQL SUM TOPLAM ALMAK

Mesaj gönderen OZAY »

Merhaba arakadaşlar
query de alacak isimli alanı sql de sum komutu ile toplatıp edit içerisine yazdırmak istiyorum ama
sürekli hata alıyorum yazdığım kod aşağıdaki gibi nerde hata yapıyorum acaba

Kod: Tümünü seç

query1.close;
query1.sql.Add('SELECT SUM(ALACAK) AS TOPLAM FROM banka');
query1.open;
edit1.text:=inttostr(query1.FieldByName('TOPLAM').AsInteger);
query kontrolünü yeni kullanmaya başladım
yardımcı olabilirmisiniz şimdiden teşekkürler
Kullanıcı avatarı
tuna
Üye
Mesajlar: 300
Kayıt: 07 Tem 2008 04:39
Konum: İstanbul

Re: SQL SUM TOPLAM ALMAK

Mesaj gönderen tuna »

Merhaba sorgunu şu şekilde denermisin.

Kod: Tümünü seç

query1.close;
query1.sql.text:='SELECT SUM(ALACAK) AS TOPLAM FROM banka';
query1.open;
edit1.text:=inttostr(query1.FieldByName('TOPLAM').AsInteger);
Yine hata verirse hata kodunuda yazarsan daha çabuk yardım edebiliriz.
Kolay gelsin.
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: SQL SUM TOPLAM ALMAK

Mesaj gönderen m_ekici »

Bunu Denermisin

Kod: Tümünü seç

edit1.text:=FormatFloat('#,##0.0', query1.FieldValues['TOPLAM']);
bunda da hatayı iki şekilde verir. Gelen değer NULL olabilir. (ISNULL(TOPLAM,0) AS TOPLAM ile düzeltebilirsin.) Diğeri de bilgisayarın kuruş ve binlik ayıracı ile SQL inki farklı olabilir. (aldığın hatayı da yazarsan daha faydalı oluruz)

Kolay gelsin
OZAY
Üye
Mesajlar: 23
Kayıt: 22 Eyl 2014 10:52

Re: SQL SUM TOPLAM ALMAK

Mesaj gönderen OZAY »

query1:Field 'SNO' not found hatasını veriyor sno databasein ilk sütunu
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: SQL SUM TOPLAM ALMAK

Mesaj gönderen sabanakman »

Aldığınız hatanın sebebi, sorgunun çalıştığı DataSet nesnesinin alanları ile sorgu sonucundan çıkan alanların farklı olmasından kaynaklanmaktadır. Sorguyu başka bir Query bileşeni kullanarak çalıştırın veya Fields Editor de ekli olan alanları çıkararak deneyebilirsiniz.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: SQL SUM TOPLAM ALMAK

Mesaj gönderen freeman35 »

yaptım oldu yerine yazdığınız kodun ne iş yaptığını, asıl yapmak istediğinizi, en önemlisi ise kullandığınız class ların çalışmasını ve kodlarını iyice öğrenmeniz lazım.
şöyleki:
query1.sql.Add('SELECT SUM(ALACAK) AS TOPLAM FROM banka');
1-)add() var olan stringlist e satırı ekler.
2-) " AS TOPLAM" zaten sum olan bir sql sonucunu edit edemezsin ayrıca adını değiştirmek yersiz. TField da display labelda bunu yaparsın

edit1.text:=inttostr(query1.FieldByName('TOPLAM').AsInteger);
edit1 e neden alıyorsun ? bu değer değiştirilecek mi? sadece göserilecek mi?
-)Eğer sadece gösterilecekse, neden dbtext yada dblabel (delphideki class adını hatırlamıyorum) e bağlamıyorsun? atama vs bir şeye gerek kalmaz
-)Eğer illaki TEdit te kullanacaksan, neden taklalar attırıp değiştirmeye uğraşıyorsun ? yani TField classın da .Asstring; i kullanırsan sana kızmaz, senin yerine çevirme işini yapar. Formatlı olarak istiyorsada, Objectinspecter dan verdiğin Display format a uygun olarak, Tfield ın displayText functionından çevirme vs kullanmadan değeri alırsın.
Sadece TField class ının 2-3 function ını öğrenmek nekadar işe yarıyor.
Ayrıca, ilk mesajında hata veriyor demişsinde ne olduğunu yazmazsan, biz nerden bilelim ne olduğunu !!! derdin " 1-)add()" ile olan yazdığım satırla alakalıdır.
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
OZAY
Üye
Mesajlar: 23
Kayıt: 22 Eyl 2014 10:52

Re: SQL SUM TOPLAM ALMAK

Mesaj gönderen OZAY »

Ben zaten sql öğrenmeye çalışıyorum bugüne kadar hep database ve table çalıştım şimdi query kullanmaya başladım sql komutlarını öğrenmek amacım yaptığım programda sql ile tüm komutlar çalışıyor sadece sum komutunu çalıştıramadım sonuç edite göstermek toplamı görmek için edit yerine label olur dblabel olur tüm örnekleri inceledim ama sum komutunu yapamadım ya bilmediğim bi ayarı var query nin yapmak istediğim database de integer olan sütünün alt toplamlarını almak bunun için bulduğum örnekler çalıştıramıyorum sizin verebileceğiniz bir örnek varmı acaba şimdiden teşekkürler
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: SQL SUM TOPLAM ALMAK

Mesaj gönderen esistem »

Kod: Tümünü seç

query1.close;
query1.sql.Add('SELECT SUM(ALACAK) AS TOPLAM FROM banka');
query1.open;
edit1.text:=inttostr(query1.FieldByName('TOPLAM').AsInteger);
Selam OZAY,
öncelikle ALACAK, BORC gibi alanlar integer tanımlanmaz (tanımlanmamalı). Float tanımlama yapınız zira kuruşlu tutarları alamazsınız.

Yazdığın SUM kodu doğru, fakat query1.sql.add şeklinde yazman yanlış. Şu şekilde yazmalısın.

Kod: Tümünü seç

query1.close;
query1.sql.Clear; // önce query içersinde var olan kodu silmelisin.
query1.sql.Add('SELECT SUM(ALACAK) AS TOPLAM FROM banka'); // sonra ekleme yapmalısın
query1.open; // tabloyu açtık doğrudur.
edit1.text:=inttostr(query1.FieldByName('TOPLAM').AsInteger); // inntostr aslında doğru fakat daha önce dediğim gibi FLOAT alan tanımlarsan hiç problem yaşamazsın. 
//Eğer FLOAT alan tanımlamışsan
edit1.text:=FormatFloat('#,##0.#0',Query1.FieldByName('TOPLAM').AsFloat); // şeklinde yapabilirsiniz.
//veya
edit1.text:=FloatToStr(Query1.FieldByName('TOPLAM').AsFloat); // şeklinde yapabilirsiniz.

izmirlikemal
Üye
Mesajlar: 155
Kayıt: 10 Oca 2014 01:08
Konum: izmir/Buca

Re: SQL SUM TOPLAM ALMAK

Mesaj gönderen izmirlikemal »

Sayın sabanakman arkadaşımın yanıtına soruyla cevap veriyorum;
Aynı problem bende de oluyor.
Field ' ID_No' not found (*)
hatası veriyor.
Sizin arkadaşa verdiğiniz yanıtda olduğu gibi 'DataSet nesnesinin alanları ile sorgu sonucundan çıkan alanların farklı olmasından kaynaklanmaktadır' şeklinde değil, zaten aldığım alan isimleri adoquery den aldığım alan isimleri. Ayrıca SUM koduyla toplam almak isterken yine sizi yazdığınız gibi
'Fields Editor de ekli olan alanları çıkararak deneyebilirsiniz' kullanmayacağım alanları tek tek çıkarmama rağmen sürekli Fields Editor'ün ilk sırasındaki
alanın olmadığı mesajını veriyor.
Hata hep ilk alan adı ile geliyor.(*) işaretli hata kodunda 'ID_NO' yok hatası verdiğinde hesaplanabilecek (Float) alan adını değiştirdiğimde bile ilk satırdaki alan adı hatalı diyor.
Arkadaşlarım lütfen yardımcı olunuz.
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: SQL SUM TOPLAM ALMAK

Mesaj gönderen ertank »

Merhaba,

Fields Editor içeriğini *komple* boşalttığınız halde hata alıyor iseniz kaynak kodunuzun ilgili kısımlarını ve SQL komutunu paylaşmanızı rica ediyorum. Eğer SQL komutu çalışma zamanında oluşturuluyor ise kaynak kod içinden SQL komutu oluşturduğunuz kısımları da paylaşmanızı rica ediyorum. Hatanın hangi satırda olduğunu da belirtirseniz sorunu anlamak adına yardımcı olabilir.
Kullanıcı avatarı
tuna
Üye
Mesajlar: 300
Kayıt: 07 Tem 2008 04:39
Konum: İstanbul

Re: SQL SUM TOPLAM ALMAK

Mesaj gönderen tuna »

query1.open komutundan önce aşağıdaki satırı ekleyin sonra open yapın. Sorununuz çözülecektir.

query1.CursorType:=ctKeyset;

ayrıca varsa query1 nesnesine bağlı dataset nesnesinin bağlantısınıda kesmeniz gerekmektedir.

bu ayarı isterseniz object inspector penceresinden de ayarlayabilirsiniz. Kolay gelsin.
izmirlikemal
Üye
Mesajlar: 155
Kayıt: 10 Oca 2014 01:08
Konum: izmir/Buca

Re: SQL SUM TOPLAM ALMAK

Mesaj gönderen izmirlikemal »

Arkadaşlar ben sorunumu ertank arkadaşımızın verdiği değerli bilgileri sayesinde çözdüm. Konu ile ilgili arkadaşlarımın viewtopic.php?f=2&t=37103&p=199762#p199762 linkine uğramalarını öneririm.
ertank arkadaşıma teşekkür ederim.
alitiras
Üye
Mesajlar: 8
Kayıt: 11 Eyl 2014 09:36

Re: SQL SUM TOPLAM ALMAK

Mesaj gönderen alitiras »

Sorguyu SQL de yaptığımda Çalışıyor
delphide TOPLAM field not found diyor
query ye TOPLAM diye field ekleyip
calculated seçtiğimde de 0 geliyor Sql de sorgu sonucu 0 değil
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: SQL SUM TOPLAM ALMAK

Mesaj gönderen ertank »

alitiras yazdı: 30 Eyl 2022 11:39 Sorguyu SQL de yaptığımda Çalışıyor
delphide TOPLAM field not found diyor
query ye TOPLAM diye field ekleyip
calculated seçtiğimde de 0 geliyor Sql de sorgu sonucu 0 değil
Merhaba,

Soru sorarken ilgili bilgiyi paylaşmayı ihmal etmeyin. Kullandığınız SQL ifadesini veya Delphi kodunu bilmiyoruz. Her zaman bu tür eksik bilgi içeren sorulara cevap vermek mümkün olmayabiliyor.

Sizin durumunuzda tahminen SQL sorgularında SUM() sonucunu gösteren kolon adı TOPLAM değildir. Çok yüksek ihtimal ile SUM SUM_1 gibi bir isimle geliyordur. Muhtemelen bu sebepten Delphi içinde hata alıyorsunuz.

Aşağıdaki şekilde SUM() yazarsanız TOPLAM adında SUM() kolonu olacaktır. Delphi içinden de TOPLAM kolon adı ile bilgi okuyabilirsiniz.

Kod: Tümünü seç

select ad,sum(miktar) as toplam from stokhareket
Cevapla