SQL Sorgulama !!

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
ozcank yazdı:assoft kardeşim ben db kullanıyorum ve şu şekildede tanımlama yaptım;
Button1 e ;
Query1.Close;
Query1.SQL.Clear;
Query1.Params[0].AsDateTime:=DateTimePicker1.DateTime;
Query1.Params[1].AsDateTime:=DateTimePicker2.DateTime;
Query1.Open;
Query1.refresh;

bunları yazdım.

SQL Strings Kısmınada;
SELECT * FROM ROKAYIT
WHERE ROMONTAJTAR >=:ROFILKTAR AND ROMONTAJTAR<=:ROFSONTAR AND
bunlar yazılı ve bu şekilde çalışıyor bu kısıma SUM da eklemek istiyorum alanım ROGENELTOPL bu alanı toplatıp Label3 e yazdırmak istiyorum hepsi bu kadar.
yukarıdaki şekilde kullanırsanız sizin sql komutunuz uçmaz mı?
Yani sql.clear kullanarak hepsini silmiş olmuyor musunuz?

Kolay gelsin.
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
Normalde aşağıdaki kod ile istediğinizi vermesi lazım ben ibx bileşenleri ile yazdım. Sonuç veriyor.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
      ibquery1.Close;
     ibquery1.SQL.Clear;
     ibquery1.SQL.add('select sum (deger) from istatistik where tarih between :baslangic_tarihi  and :bitis_tarihi');
     ibquery1.ParamByName('baslangic_tarihi').AsDate:=strtodate('01.01.2005');
     ibquery1.ParamByName('bitis_tarihi').AsDate:=strtodate('31.12.2005');
     ibquery1.Open;
   Label1.Caption:=FormatCurr('##,###,###,###',StrToFloat(ibQuery1.fields[0].AsString));


end;


Hala probleminiz kalmışsa mesaj atın bir bakalım.
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Mesaj gönderen sako »

Sum(Miktar) as Miktar şeklinde girdim bu seferde diğer alanların olmadığını söyleyor yanına bişeyler ekledim ama olmadı. Belli biz yazılış şekli varmı acaba
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Bir örnekte ben vermek istedim. Umarım İş Görür;

Kod: Tümünü seç

var
  b : double;
begin
  QBakiye.close;
  Qbakiye.sql.Clear;
  QBakiye.sql.add('select sum(tutar) from action where tarih>=:T1 and tarih<=:T2 and cariid=:cid and ba=0');
  QBakiye.params[0].AsDate:=dxDateEdit1.date;
  QBakiye.params[1].AsDate:=dxDateEdit2.date;
  QBakiye.Params[2].AsCurrency:=Query1id.AsCurrency;
  QBakiye.Open;
  b:=QBakiye.fields[0].AsCurrency;
 Label1.Caption := FormatCurr(##,###,###,###' b);
Kolay Gelsin...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
sako yazdı:Sum(Miktar) as Miktar şeklinde girdim bu seferde diğer alanların olmadığını söyleyor yanına bişeyler ekledim ama olmadı. Belli biz yazılış şekli varmı acaba
Eğer query nin fields editörünü kullanıp fields eklemişseniz size bu hatayı verebilir. Bu yüzden hesaplamaları ayrı bir query ile yapmanızı ve fieldsları vermemenizi tavsiye ederim. Ben sorgu ve hesaplamalar için ayrı queryler kullanıyorum.
Kolay gelsin.
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Mesaj gönderen sako »

Sonradan bişey eklemedim. Yok dediği alanların hepsi kendisinde var ve ayrı bi query kullanıyom zaten. sum (miktar) as miktar deyince miktarı kabul etti ama bu sefer diğer alanların olmadığını söylüyor..
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Label, Edit ya da benzer bir şey ile alandaki bilgileri view etmeye falan mı çalışıyorsunuz?
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

sako yazdı:Benim problemim alanlarla alakalı galiba değiştirmem gereken bişey var ama bulamıyom.
Size yukarıda söyledim. Ya başka bir ibquery veya query ekleyin. Veya mevcut query nizdeki fieldsları silin.
Bunun için query nize sağ tıklayın. Fields editor u seçin, sağ tıklayıp select all seçeneğini seçin. sağ tıklayıp delete seçeneğini seçin.
sonra programınızı bir daha çalıştırın. Düzelmesi lazım.

Yukarıda mesajda verdiğim örneği query ye sağ tıklayıp fields editor a geçip add all fields deyip. Programı çalıştırdığımda bana sizinki gibi bir hata verdi.
Kolay gelsin.
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Mesaj gönderen sako »

bLue aLonE yazdı:Label, Edit ya da benzer bir şey ile alandaki bilgileri view etmeye falan mı çalışıyorsunuz?
Öyle bişey yapmadım..
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Peki bu sorguyu nasıl view ediyorsunuz?
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Mesaj gönderen sako »

Şu hatardan bi kurtulsam wiew etcem ama kurtulylamadım ki
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
@sako
query nizin field editorunde fields olmadığından emin misiniz. Aynı zamanda sonucu dbgride alıyorsanız aynı zamanda onunda column editörünün boş olduğundan emin misiniz.

O query yi kullanan bir dbedit bileşeni varsa o da ona neden oluyor. Ben az önce denedim. Hata verdi. Yani query sonucunu bir dbgride atıyorsanız. dbgridin dışında herhangi bir dbedit de kullanılmayacak !!!!!!

Kolay gelsin.
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Mesaj gönderen sako »

Teşekkür ederim ofenX:) Senin dediğin çıktı. o mesajıngözümden kaçmış:)
artık hata varmiyo ama dbgridde kayıtları göremiyom.. Bu normalmi?

Toplamı

edit1.text:=(gelirqmiktar.text); şeklinde mi artarcam..
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

sako yazdı:artık hata varmiyo ama dbgridde kayıtları göremiyom.. Bu normalmi?
Toplamı
edit1.text:=(gelirq.miktar); şeklinde mi artarcam..
Yukarıdaki mesajda label a atama yapmıştım.
Siz sum() ile toplam aldığınızda

Kod: Tümünü seç

 edit1.text:=ibQuery1.fields.fieldbyname('miktar').asstring;

veya

Kod: Tümünü seç

   edit1.text.Caption:=ibQuery1.fields[0].asstring;

şeklinde sonucu aktarabilirsiniz.

Diğer konuya gelince toplam sonucunu aldıktan sonra.

Kod: Tümünü seç


       ibquery1.Close;
     ibquery1.SQL.Clear;
     ibquery1.SQL.add('select * from from istatistik ');
     ibquery1.Open;

gibi bir komutla toplam almadan önceki sql cümleniz ne ise yine onu istersiniz.

Kolay gelsin.
Cevapla