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