Dbgrid bir Sütunun bütün değerleri

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kara77
Üye
Mesajlar: 3
Kayıt: 16 Ara 2015 11:30

Dbgrid bir Sütunun bütün değerleri

Mesaj gönderen Kara77 »

Kod: Tümünü seç

   A1        A2       A3
  örnek     örnek     5
  örnek     örnek     
  örnek     örnek     3
  örnek     örnek

İyi geceler arkadaşlar,

Örnek olarak yukarıdaki tarzda bir tablom var. Bunu dbgridde gösteriyorum
Programın açılışında A3 sütununundaki bütün değerleri almak istiyorum. Yani 5-_-3-_

Bunu aşagıdaki kodla yapamadım.

Kod: Tümünü seç

procedure TAnasayfa.FormActivate(Sender: TObject);
begin
 if Sorgula.recordcount>0 then
  begin
   for i := 0 to Sorgula.RecordCount-1 do
    begin
     ShowMessage(Sorgula.FieldByName('A3').AsString) ;
   end;
  end;
end;
bu kodla sadece A3 alanının ilk hücresindeki değer satır sayısınca gösteriliyor (yani 4 kez 5 yazan mesaj veriyor)

Yardımlarınızı bekliyorum, ilgilenen arkadaşlara şimdiden teşekkürler

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4733
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: Dbgrid bir Sütunun bütün değerleri

Mesaj gönderen mrmarman »

Merhaba.

Bir tabloda kayıt okuduğun zaman otomatik olarak bir sonraki kayda geçmez. Onun için senin biraz iteklemen lazım. :wink:
tablodaki NEXT komutu bu işlemi yapar. FOR döngüsü içerisinde ShowMessage ile gösterdikten sonraki takip eden satırda

Kod: Tümünü seç

Sorgula.NEXT;
diyerek bir sonraki kayda konumlanmasını sağlayabilirsin.

Burada metodik bir olası sorunla karşılaşmamak için if ile bir sorgu ihtiyacın olacak.

Kod: Tümünü seç

if not Sorgula.EOF then ShowMessage...
Çünkü sen her NEXT dediğinde bir sonraki kayda konumlanacak ya, senin for ile belirttiğin döngü sayısı mevcut kayıt sayısından daha da fazla olduğu taktirde sıkıntı olacaktır. EOF yani End Of File (dosya/kütük sonu diyelim) halini bu şekilde kontrol ediyoruz.

Nihai olarak tüm kayıtları nasıl alıyoruz sorusu gündeme geliyor. Burada FOR döngüsü yerine WHILE END veya REPEAT UNTIL döngüsü tercih ediyoruz. Şart olarak yukarıda belirttiğim NOT EOF durumu olduğu sürece diyoruz.

Örneğinden yola çıkarsak

Kod: Tümünü seç

procedure TAnasayfa.FormActivate(Sender: TObject);
begin
  Sorgula.FIRST; // ilk kayda konumlanır. Yani gridde bir satıra tıklamışsan en başa getirmek için.
  while NOT Sorgula.EOF do
  begin
     ShowMessage(Sorgula.FieldByName('A3').AsString) ;
     Sorgula.Next;
  end;
end;
veya

Kod: Tümünü seç

procedure TAnasayfa.FormActivate(Sender: TObject);
begin
  Sorgula.FIRST; // ilk kayda konumlanır. Yani gridde bir satıra tıklamışsan en başa getirmek için.
  if NOT Sorgula.EOF then // kayıt yoksa peşinen önünü keselim diye koyduk
  begin
    REPEAT
       ShowMessage(Sorgula.FieldByName('A3').AsString) ;
       Sorgula.Next;
    UNTIL Sorgula.EOF;
  end;
end;
Başarılar.
Resim Resim

AfterPost
Üye
Mesajlar: 127
Kayıt: 12 Tem 2014 10:22

Re: Dbgrid bir Sütunun bütün değerleri

Mesaj gönderen AfterPost »

mrmarman hocam yine çok hızlısınız

Kara77
Üye
Mesajlar: 3
Kayıt: 16 Ara 2015 11:30

Re: Dbgrid bir Sütunun bütün değerleri

Mesaj gönderen Kara77 »

Çok teşekkür ederim mrmarman hocam, yazdığınız kod 4 4 lük çalışıyor maşallah, emeğinize sağlık.

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4733
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: Dbgrid bir Sütunun bütün değerleri

Mesaj gönderen mrmarman »

Burada detay kod değil, kavramdı. Eğer mantığı kavrayabilmiş ve diğer işlerinde de bu koda bakmadan çözüm üretebiliyorsan hedefe ulaşıldı diyebiliriz. Başarılar.
Resim Resim

Kara77
Üye
Mesajlar: 3
Kayıt: 16 Ara 2015 11:30

Re: Dbgrid bir Sütunun bütün değerleri

Mesaj gönderen Kara77 »

eywallah, mantığını da kavradım

Cevapla