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
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)
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. - .
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 !!!
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
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.
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.
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.
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.
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
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.