Sql ile Çoklu İşlem Yaptırma (Sum) Proplemi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Sql ile Çoklu İşlem Yaptırma (Sum) Proplemi

Mesaj gönderen pro_imaj »

Merhaba,

Arkadaşlar Sql ile önce bir listelem yapıyorum ardındanda bu listelenen kayıtlarda sütun toplamak istiyorum ama malesef olmuyor.

sorun Query RequestLive alanınyla ilgili zannedersem
kod şöyle


With Query1 do
begin
Close;
SQL.Clear;
SQL.Add ('SELECT * FROM FINSAT460.STI WHERE IslemTur=1 and MalKodu="ML 223" ');
open;
Label1.Caption:=Query1.Fields[0].Value;


Hata veren kod;

With Query1 do
begin
RequestLive:=False;
Close;
//SQL.Clear;
SQL.Text := 'SELECT SUM (Tarih) FROM FINSAT460.STI ';
open;
Label4.Caption:=Query1.Fields[0].Value;
RequestLive:=True;


Sütün toplamını listeleme işlemi yaptıktan sonra almak istiyorum ama hata veriyor.

bu iki kodu aynı anda nasıl kullanabilirim.

Saygılarımla
Teşekkür ederim
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]
_________________
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

merhaba;

viewtopic.php?t=8385&highlight=

Kod: Tümünü seç

SELECT SUM (Tarih) FROM FINSAT460.STI '
+ 'Tarih' alanı Date tipindeyse,öyle gibi gözüküyor.Toplam aldıramassın,Sayısal bir alan olması lazım.

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

Merhaba

Mesaj gönderen pro_imaj »

Hocam

Tarih alanı integer bir alan çok saçma biliyorum ama böyle (yani benim vt diil başka bir prog vt si.

onu örnek olsun diye yazdım.

başka bir alanda olabilir.


son olarak şu kodu yazdım oda hata veriyor.

With Query1 do
begin
Close;
SQL.Clear;
SQL.Add ('SELECT * SUM (Tarih) FROM FINSAT460.STI WHERE IslemTur=1 and MalKodu="ML 223" ');
open;
Label1.Caption:=Query1.Fields[0].Value;
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ı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Bu sorun beni çıltırdıyor ya

Mesaj gönderen pro_imaj »

:oops:

Üstadlar

MSQL de şu kod mütiş çalışıyor

SELECT sum (Tarih) FROM FINSAT460.STI WHERE IslemTur=1 and MalKodu='ML 223'


Aynı kodu delphide Querye uyarladığımda yani.
With Query1 do
begin
Close;
SQL.Clear;
SQL.Add ('SELECT Sum (Tarih) FROM FINSAT460.STI WHERE IslemTur=1 and MalKodu="ML 223" ');
open;
Label1.Caption:=Query1.Fields[0].Value;
end;


Hata veriyor. Hatanın nedeni ise
RequestLive alanından kaynaklanıyor bunu anladım ama nasıl çalışacak onu anlamadım.

Saygılamla
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]
_________________
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

merhaba;

Kod: Tümünü seç

With Query1 do
begin
Close;
SQL.Clear;
SQL.Add ('SELECT SeninAlan1,Seninalan2,(SELECT  SUM (Tarih) FROM FINSAT460.STI WHERE IslemTur=1 and MalKodu="ML 223") as SONUC  FROM FINSAT460.STI WHERE IslemTur=1 and MalKodu="ML 223" ');
open; 
Label1.Caption:=IntToStr(Query1.FieldByName('SONUC').AsInteger); 


Şöyle bir denermisin;
'SeninAlan1,Seninalan2' bu alanları çoğaltabilirsin,isteğine göre.

iyi günler....
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

Kod: Tümünü seç

Hata veriyor. Hatanın nedeni ise
RequestLive alanından kaynaklanıyor bunu anladım 
Bence SQL de toplam aldırmayla 'RequestLive'in hiç bir bağımlılığı yok.

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

merhaba

Mesaj gönderen pro_imaj »

Merhaba Uğur bey (benim ismimde uğur)


Yardımlarınız için teşekkür ederim.
Ama yinede olmuyor.

Sizin yapmış olduğunuz böyle bir kod varmı.

yani önce bir listeleme uygun kritere göre sonrada bu kriterler içerisindeki bir alanın sütun toplamını aldırma.

Saygılarımla
Teşekkür ederim.
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]
_________________
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

merhaba;

Memnun oldum;

Yukarıdaki kod çalışması lazım.Bence sizin hatalarınız başka nedenlerden kaynaklanıyor.

Mesela çok basit olacak ama

Kod: Tümünü seç

Select * from Tabloismi where Adi="ugur" 
yukarıdaki kod İsmi 'ugur' olanları listeliyor.

Kod: Tümünü seç

Select sum(maas) from Tabloismi where Adi="ugur" 
Yukarıdaki kod ise İsmi 'ugur' olanların Maas toplamını veriyor.

İkisini de tek SQL de yapayım dersen,arkadaşlar bunu önermiyorlar,daha yavaş çalışacağı için,ben de yeni öğrendim ; :)

Kod: Tümünü seç

Select SeninAlan1,SeninAlan2, (Select sum(maas) from Tabloismi where Adi="ugur") as MaasToplam  from Tabloismi where Adi="ugur" 
Veritabanı Proğramcılığı = SQL ; :wink:

iyi akşamlar...
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
ya ben mi göremedim acaba diye bakıyorum ama yinede göremedim.
yazılan sql lerin verdiği hata mesajı ney acaba
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Oncelikle hata mesajını bilirsek daha faydali olma sansimiz olur... Basit bir hatanin etrafinda donup duruyor ama cozumu yakalayamiyormusuz gibime geliyor....

veritabanı tarafinda calisan kod delphi de de calisir. Hic bir problem olmaz... Ama dediginiz gibi bu tarz bir kod icin RequestLive=False olmali..
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Merhaba

Mesaj gönderen pro_imaj »

Merhaba


With Query1 do
begin
Close;
SQL.Clear;
SQL.Add ('SELECT SUM (Tarih) FROM FINSAT460.STI WHERE IslemTur=1 ');
ShowMessage(Query1.SQL.Text);
open;
label1.Caption:=Query1.Fields[0].Value;

Yukarıdaki kod ile ilemi çözdüm.

Emeği geçen herkeze tşk ederim.

Not: bir ara while do döngüsünü bile düşündüm ama 16000 kayıt var bayaaa kastı makinayı.

Saygılarımla
Çalışmalarınızda başarılarç
Arkadaşlar.
:wink:
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]
_________________
Cevapla