Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Aynı tarihler
#1
Selamlar;

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;
Hayat bazen güzel olabiliyor.
Cevapla
#2
Merhaba

 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;

Burada forla dönüyorsun ama her defasında sql cümlenin sonucunda dönen değerin ilk sırakadini alıyorsun. ilerlemiyorsun gördüğüm kadarıyla.

Benim while ile döndüğüm bir kod bloğu, her dönüşte Next fonksiyonu ile ilerlerim. Eof fonksiyonu sql cümlem ile dönen sorgunun sonuna geldiğimde while'dan çıkmamı sağlıyor.

       
   with MyQuery do
       begin
           Close;
           SQL.Clear;
           SQL.Add('SELECT * FROM sure where durum=:durum');
           ParamByName('durum').AsString := '0';
           Open;
           while not Eof do
           begin
             id := FieldByName('id').AsString;
             adı := FieldByName('adi').AsString;
             Next;
           end;
       end;

anladığım kadar sorun burada kontrol edebilir misin ?
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#3
Programlama dilinden bağımsız olarak, kodda ki branch(dal), blok sayısını artıran kullanım şekillerinden uzak durmak,
ileriye yönelik kodun bakımını  ve debug edilmesi konusunda fayda sağlar.

Aksi takdirde Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol artacağı için kodu anlamak ve değiştirmek hem zorlaşacak hem de tehlikeli hale gelecektir.
One of the major software engineering challanges is managing change.
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Birden fazla Uygulamayı aynı anda derleme yhackup 10 361 27-10-2017, Saat: 20:44
Son Yorum: Abdullah ILGAZ
  Aynı kayıttan - çözüldü serhat 3 355 03-08-2017, Saat: 10:35
Son Yorum: Abdullah ILGAZ
  2 program aynı port kullanabilir mi? Shou 9 553 15-01-2017, Saat: 01:30
Son Yorum: Tuğrul HELVACI



Konuyu Okuyanlar: 1 Ziyaretçi