SQL de Toplam Alma !!!

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Parametre leri

Kod: Tümünü seç

open;
demeden önce ki satıra yaz.Hatanın türkçesi "bilinmeyen tip" bence tarih alanlarını kontro let özellikle tarih formatlarını.kolay gelsin.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Nasıl kontrol ettireceğimi bilmiyorum bayağı bir uğraştım son olarak bu şeklini aldı yardım ederseniz sevinirim.
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

open; den önce aldığım zaman
Query1:Parameter 'ROFILKTAR' not found hatası veriyor
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Arkadaşlar yardımlarınızı bekliyorum !!!!!!!
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
Query1:Field 'ROFILKTAR' is of an unknown type
ROFILKTAR parametresinin tipini bilmediğini söylüyor.
Queryyi seçip object insperctorden "params" özelliğine tıkla. açılan pencereden parametrelerini seçip değer datatypını ayarla.
+
yazdığın sql in doğru calışıp çalışmadığını kontrol etmek için herhangi bir sql editöründen kontrol et. (delphi ile beraber gelen SQL Explorer veya kullandığın veritabanı programına uygun herhangi bir editörle bu işi yapabilirsin.
bide kodları şöyle dene.

Kod: Tümünü seç

procedure Button1.Click(Sender:Tobject);
var
SQlCumle:String;
begin
SQLCumle:='select sum(toplam1) as TOP1, sum(toplam2) as TOP2, Sum(toplam3) as TOP3, sum(toplam4) as TOP4, sum(toplam5) as TOP5 FROM ROKAYIT WHERE ROMONTAJTAR >=:ROFILKTAR AND ROMONTAJTAR<=:ROFSONTAR';
Query1.close;
Query1.sql.clear;
Query1.sql.add(SQLCumle);
Query1.ParamByName('ROFILKTAR').AsDateTime:= DateTimePicker1.DateTime;
Query1.ParamByName('ROFSONTAR').AsDateTime:=DateTimePicker2.DateTime;
Query1.Open;
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

bu şekilde yaptığım zaman "query1.Müşteri Kodu not found" diye bir hata veriyor.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
sanırım query1 i başka işler içinde kullanıyorsun çünki sql de muşterikodu gibi bişey göremedim. forma ikinci bir query koyup onunla yapmayı dene.
yok illa query1 i kullanacağım diyorsan ozaman query1i in fields editörüne bi bak bakalım orda başka fieldlar görünüyorumu. görünen field varsa onları sildiğin zaman büyük ihtimalle çalışacaktır. ama sildiğin(sileceğin) fieldları kullanan yerlerde hata çıkabilir. en iyisimi ikinci bir query kullan
kolay gelisn.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Arkadaşlar benim SQL yapmak istediğim şu ;
MUSKODU,MUSADI,MUSSOY,MUSADR,TOPLAM1,TOPLAM2,TOPLAM3,TOPLAM4,TOPLAM5 DB deki alanlarımı DBGrid1 e yazdırarak
TOPLAM1,TOPLAM2,TOPLAM3,TOPLAM4,TOPLAM5 alanlarını
Label1,Label2,Label3,Label4,Label5 e aktarmak. Yardımcı olursanız çok sevinirim.
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

O zaman Dbgride Bağlı Query le değilde başka bir query ekle forma ve o tabloya bağla ve ona göre yap.Bir de şunu söyliyim query nin fieldseditöründe alan isimleri varsa sum fornksiyonu çalışmıyor.buna da dikkat et bende anlamış değilim ama çalışmıyor.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

tek bir DB var
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
tek bir db olması fark etmez.
istediğin kadar query veya teble ile db ne bağlanabilirsin.
tabi burda istediğin kadar kelimesi teorik olarak.
yani ikincibir query kullanman tavsiye edilir.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Arkadaşlar şu şekilde değiştirdim alanları herşeyi
SQL in String kısmına bu şekilde yazdım

SELECT SUM(RO5TOPT) AS RO5T, SUM(ROILKKTOPT) AS ROILKT, SUM(RO1MICTOPT) AS RO1T,
SUM(ROMEBTOPT) AS ROMEBT, SUM(ROSONKTOPT) AS ROSONT FROM ROKAYIT
WHERE (ROMONTAJTAR BETWEEN :ROFILKTAR AND :ROFSONTAR)

sonra Button1 onclick olayına ;

procedure TForm28.Button1Click(Sender: TObject);
Begin
Query1.Active:=False;
Query1.Params[0].AsDate:=DateTimePicker1.Date;
Query1.Params[1].AsDate:=DateTimePicker2.Date;
// Query1.Prepared; (bu alan çalışmadı)
Query1.Active:=True;
end;
Label3.Caption:=IntToStr(Query1.FieldByName('RO5T').AsInteger);
Label4.Caption:=IntToStr(Query1.FieldByName('ROILKT').AsInteger);
end;


yazdım ama ne hesapladı nede alanları görebildim acaba nerde hata yaptım.Birde DBGRid1 de RO5T,ROILKT,RO1T,ROMEBT,ROSONT alanlarını görüyorum ama yine veriler yok.
Cevapla