Listviewdeki ve databasedeki tarih alanlarını karşılaştırıp aynı olan tarihlerin listviewdeki index numarasına göre işlem yaptıracağım;
Fakat nerede hata yaptığımı bir türlü anlayamadım; For döngüsü kullanarak listviewdeki tüm verileri kontrol ediyorum, databasewdeki tüm kayıtlarında kontrol edilmesini nasıl sağlaya bilirim sadece ilk kayıt eşitse showmessage devreye giriyor diğer kayıtlar kontrol edemedim...
procedure TForm2.TarihleriEkle(Sender: TObject);
var
BuldumDb, BuldumPl: String;
begin
With ListViewPL, Form1.FDQuery1 do
begin
if Items.Count > 0 then
begin
Connection := Form1.GenelConnection;
Close();
SQL.Clear();
SQL.Add('Select * From LISTEM');
Prepared := True;
Open();
for J := Items.Count - 1 downto 0 do
begin
BuldumPl := Items.Item[J].SubItems[6];
BuldumDb := FieldByName('TARIHI').AsString;
if Pos(BuldumDb, BuldumPl) > 0 then // Aynı kayıt varsa
begin
SHOWMESSAGE(INTTOSTR(Items[J].Index));
end;
end;
end;
end;
end;
var
BuldumDb, BuldumPl: String;
I:Integer;
begin
With ListViewPL, FDQuery1 do
begin
Connection := '.....';
Close();
SQL.Clear();
SQL.Add('Select * From LISTEM');
Prepared := True;
Open();
Seçenek 1
while Not(Eof) do
begin
ListViewPL.ItemIndex[0];
if ListViewPL.Items.IndexOf(FieldByName('TARIHI').AsString) >= 0 then
buldum......
Next;
end;
yada.....
Seçenek 2
FDQuery1.DisableControls;
for I := 0 to length(ListViewPL) - 1 do
begin
FDQuery1.First;
if FDQuery1.Locate('TARIHI', ListViewPL.Items[I], [loPartialKey]) then
buldum......
end;
FDQuery1.EnableControls;
end;
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız. Mevlana
Dostk yazdı:Listviewdeki ve databasedeki tarih alanlarını karşılaştırıp aynı olan tarihlerin listviewdeki index numarasına göre işlem yaptıracağım;
Fakat nerede hata yaptığımı bir türlü anlayamadım; For döngüsü kullanarak listviewdeki tüm verileri kontrol ediyorum, databasewdeki tüm kayıtlarında kontrol edilmesini nasıl sağlaya bilirim sadece ilk kayıt eşitse showmessage devreye giriyor diğer kayıtlar kontrol edemedim...
procedure TForm2.TarihleriEkle(Sender: TObject);
var
BuldumDb, BuldumPl: String;
begin
With ListViewPL, Form1.FDQuery1 do
begin
if Items.Count > 0 then
begin
Connection := Form1.GenelConnection;
Close();
SQL.Clear();
SQL.Add('Select * From LISTEM');
Prepared := True;
Open();
for J := Items.Count - 1 downto 0 do
begin
BuldumPl := Items.Item[J].SubItems[6];
BuldumDb := FieldByName('TARIHI').AsString;
if Pos(BuldumDb, BuldumPl) > 0 then // Aynı kayıt varsa
begin
SHOWMESSAGE(INTTOSTR(Items[J].Index));
end;
end;
end;
end;
end;
Merhaba,
Yukarıdaki kod tüm liste verilerini SQL sorgusundaki ilk kayıt ile kotrol ediyor. Database içinde olup olmadığının kontrolünü TDataSet.Locate() ile yapmanızda fayda var. Ezberden ve test etmeden yazdığım aşağıdaki kod parçasının yön gösterici olacağını ümit ediyorum.
for J := Items.Count - 1 downto 0 do
begin
if Form1.FDQuery1.Locate('TARIHI', Items.Item[J].SubItems[6], []) then
begin
ShowMessage(IntToStr(Items[J].Index));
end;
end;