Toplam sonuç

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
loxka
Üye
Mesajlar: 214
Kayıt: 18 Ağu 2003 01:10

Toplam sonuç

Mesaj gönderen loxka »

SQL de filtreleme sonucu DBGrid'de bulduğum sonuçların sayısını bir label içinde göstermek istiyorum.
Nasıl yapabilirim, teşekkür ederim
Ancestor
Üye
Mesajlar: 188
Kayıt: 27 Ara 2004 06:12
Konum: Manisa - Kırkağaç

Mesaj gönderen Ancestor »

DBGrid'deki toplam kayıt sayısından bahsediyorsanız, query1.recordcount ile bunu aldırabilirsiniz.
Ama içeriğinden herhangi bir bölümün toplamını istiyorsanız (mesela fiyat, sayı, yai vb..) sql sorguda sum (toplama) kodu kullanmalısınız.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

Kod: Tümünü seç

query1.last;
label1.caption := inttostr(query1.recordcount);
yazarsanız daha iyi olur.
Ancestor
Üye
Mesajlar: 188
Kayıt: 27 Ara 2004 06:12
Konum: Manisa - Kırkağaç

Mesaj gönderen Ancestor »

nitrokonat, buradaki query1.last; komutunun görevi nedir? Ben bu şekilde kullanmıyorum. Artısını eksini bilelim de ona göre kullanalım dimi :)
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

Kod: Tümünü seç

kodkontrol.Close;
kodkontrol.SQL.Clear;
kodkontrol.SQL.Add('select CARIKOD from CARIKART');
kodkontrol.Open;
kayitsayisi:=kodkontrol.RecordCount;
showmessage(inttostr(kayitsayisi));
sonuç 1 çıkıyor her zaman.

Kod: Tümünü seç

kodkontrol.Close;
kodkontrol.SQL.Clear;
kodkontrol.SQL.Add('select CARIKOD from CARIKART');
kodkontrol.Open;
kodkontrol.Last;
kayitsayisi:=kodkontrol.RecordCount;
showmessage(inttostr(kayitsayisi));
kayıtsayısı doğru çıkıyor-
deneyin görün
Ancestor
Üye
Mesajlar: 188
Kayıt: 27 Ara 2004 06:12
Konum: Manisa - Kırkağaç

Mesaj gönderen Ancestor »

Kod: Tümünü seç

query1.Close;
query1.SQL.Clear;
query1.sql.Add('select * from Satislar');
query1.Open;
showmessage(inttostr(query1.RecordCount));
Sonucu doğru verdi. Senin verdiklerinde ne sorun var bilmiyorum ama Last komutu vt'deki son kayda gitmeyi sağlıyor. Toplam kayıtla bi bağdaşımını göremedim bi sorayım dedim.
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
Ancestor yazdı:. Senin verdiklerinde ne sorun var bilmiyorum ama Last komutu vt'deki son kayda gitmeyi sağlıyor. Toplam kayıtla bi bağdaşımını göremedim bi sorayım dedim.
recordcount un yanlış bilgi verdiği söyleniyor. Sanırım bazen tüm kayıtlar çekilmiyor. Ardadaşımız last yapmakla sanırım fetch.all işlemi yapmış oluyor. Böyle yapınca rakam doğru çıkmış oluyor.

Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

valla dostum last'ın son kayda gittiğini biliyorum da geçenlerde ben de last yazmadan kullandım baktım yanlış sonuç veriyor. sen söyleyince last'ı kaldırıp yeniden de denedim yine aynı, sadece 1 veriyor.
ben de dedim ki herhalde recordcount database imlecinden yukarıdaki kayıt sayısını veriyor.
kodu aşağıdaki gibi düzenledim bu sefer 3 yazdı.

Kod: Tümünü seç

kodkontrol.Close;
kodkontrol.SQL.Clear;
kodkontrol.SQL.Add('select CARIKOD from CARIKART');
kodkontrol.Open;
kodkontrol.next;
kodkontrol.Next;
kayitsayisi:=kodkontrol.RecordCount;
showmessage(inttostr(kayitsayisi));
benim delphi de mi bi problem vardır nedir?
büyüklerimiz bu konuya bi açıklık getirirse sevinirim.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

NOT: yukarıdaki sorguda 34 kayıt var. 2 kere next yaptığım için 3 diye sonuç verdi.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhaba,

Forumda ustalarımız recordcount tun yalnış sonuç verbileceğini belirtirler. bunun için fetchall yapmak gerekiyor doğru sonuç için last komutuda çıkan sonucun sonuna gittiği ve verinin tümünü çektiği için aynı işi yapıyor ve sonuç doğru oluyor. bende genelde last komutunu kullanırım. tabi bunları yazmadan doğru sonuç çıkmasıda muhtemel fakat ileride olabilecek sorun ve yanlış sonuçları önlemek maksadı ile ustalar verinin tümünü çekerek toplam göstermeyi öneriyorlar.

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
loxka
Üye
Mesajlar: 214
Kayıt: 18 Ağu 2003 01:10

Mesaj gönderen loxka »

Hepinizin ağzına sağlık sağolun...
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Neden sql koduyla yapmayı düşünmediniz acaba. yani;

Kod: Tümünü seç

SELECT     COUNT(*) AS ToplamKayıt
FROM         CARIKART
bu şekilde yapıp sonucu alırsanız daha sağlıklı olur.

Saygılarımla
Kolay gelsin.
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]
_________________
loxka
Üye
Mesajlar: 214
Kayıt: 18 Ağu 2003 01:10

Mesaj gönderen loxka »

nitrokonat'ın açıklamasından sonra

Kod: Tümünü seç

query1.last; 
label1.caption := inttostr(query1.recordcount);
gibi yapınca, doğru sonuç elde ediliyor.
Forumda bizar araştırınca recordcount ta bazı arkadaşların sıkıntı çektiğini okudum, last ile sonuç (defalarca denedim) doğru veriliyor.
Sanırım bu şekilde yapmak daha sağlıklı, yinede teşekkürler.
Cevapla