Database listeleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 11:10

Database listeleme

Mesaj gönderen Serhat »

Merhaba;

Listview de yaklaşık 500 ve üzeri kayıt var;
Listview de en altıdaki kayıtla ilgili işlem yapıktan sonra save butonuyla ile databaseye kayıt işlemini tamamlıyorum, buraya kadar bir sıkıntı yok...

Fakat listeleme sonrasında en alttaki kayıt seçili iken tekrar verileri databaseden çekmek zorunda kaldığımdan, ve listview de ki kayıtlar (Items.Clear) ile silindiğinden bir anda en alttaki seçili satır iptal olup ve en üste gelmiş oluyor. databaseden verileri çekme sırasında nasıl bir yol izleyebilirim ki en alttaki seçili kayıttan en üste gelmemeli...

Kod: Tümünü seç

procedure TForm1.ArsivListele(Sender: TObject);
begin
    Close;
    SQL.Clear;
    SQL.Add('Select * From ARSIV');
    Prepare;
    Open;
    ArsivListView.Items.Clear;
    while Not Eof do
    begin
      ArsivListView.Items.BeginUpdate;
      try
        with ArsivListView.Items.Add do
        begin
          SubItems.Add(FieldByName('URUN').Value);
          SubItems.Add(FieldByName('NOTLAR').AsString);
          SubItems.Add(FieldByName('KATEGORI').AsString);
          SubItems.Add(FieldByName('ZEMINRENK').AsString);
          SubItems.Add(FieldByName('YAZIRENK').AsString);
          SubItems.Add(FieldByName('YAZITIPI').AsString);
          SubItems.Add(DateToStr(FieldByName('TARIH').Value));
          SubItems.Add(IntToStr(FieldByName('ID').AsInteger));
          Next;
        end;
      finally
      ArsivListView.Items.EndUpdate;
      end;
    end;
  end;
end;
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Database listeleme

Mesaj gönderen ertank »

Merhaba,

Yapmak istediğinizi doğru anlayabilmek adına, mevcut durumdaki ve olmasını istediğiniz şekli ile ekran görüntüleri paylaşabilir misiniz?
Kullanıcı avatarı
yhackup
Üye
Mesajlar: 115
Kayıt: 09 Ağu 2014 09:09
İletişim:

Re: Database listeleme

Mesaj gönderen yhackup »

ertank yazdı:Merhaba,

Yapmak istediğinizi doğru anlayabilmek adına, mevcut durumdaki ve olmasını istediğiniz şekli ile ekran görüntüleri paylaşabilir misiniz?
Demek istediği,
Listview de atıyorum listeden 10. seçeneği seçtin, tekrar listeleme yapınca seçili olan satır en üstteki oluyor,

Çözüme gelince, tekrar listelemeden önce, listviewdeki indexini tutarsın bir kenarda veya adını nesi varsa, listeyi tekrar çektiğinde onu seçtirirsin.
Çaylak Delphici :D

Yakup ULUTAŞ
Kullanıcı avatarı
yhackup
Üye
Mesajlar: 115
Kayıt: 09 Ağu 2014 09:09
İletişim:

Re: Database listeleme

Mesaj gönderen yhackup »

ListBox1 ta denedim, belki yol gösterir

Seçili olanın indexi,

Kod: Tümünü seç

procedure TForm1.Button15Click(Sender: TObject);
var
        yer : Integer;
begin
        yer := ListBox1.ItemIndex;
        ShowMessage(IntToStr(yer));
end;
Edit11.Text'e yazılan indexi seçer,

Kod: Tümünü seç

procedure TForm1.Button16Click(Sender: TObject);
var
        yer : Integer;
begin
        yer := StrToInt(Edit11.Text);
        ListBox1.ItemIndex := yer;
end;
Çaylak Delphici :D

Yakup ULUTAŞ
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Database listeleme

Mesaj gönderen brs »

Ben kullanıyorum işinizi görecektir...

Kod: Tümünü seç

procedure TForm1.BtnKaydetClick(Sender: TObject);
var
  IndexRow, Git: Integer;
begin
  if ListView.SelCount = 1 then // bir kayıt seçili ise
  begin
    IndexRow := ListView.Selected.Index; // index numarasını aldık
  end;

Kodların

       end;
        end;
        for Git := 0 to Items.Count - 1 do // en sonunda  secili olan satıra gider
        begin
          if IndexRow = Items[Git].Index then
          begin
            Scroll(0, (Items[Git].Top) - 50);
            ItemIndex := IndexRow;
            Exit;
          end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Database listeleme

Mesaj gönderen ertank »

yhackup yazdı:
ertank yazdı:Merhaba,

Yapmak istediğinizi doğru anlayabilmek adına, mevcut durumdaki ve olmasını istediğiniz şekli ile ekran görüntüleri paylaşabilir misiniz?
Demek istediği,
Listview de atıyorum listeden 10. seçeneği seçtin, tekrar listeleme yapınca seçili olan satır en üstteki oluyor,

Çözüme gelince, tekrar listelemeden önce, listviewdeki indexini tutarsın bir kenarda veya adını nesi varsa, listeyi tekrar çektiğinde onu seçtirirsin.
Merhaba,

Soruyu anladığımı düşünüyorum. Anlamadığım kısım gönderilen kod parçası içinde yazdığı kadarıyla ListView içindeki herşey siliniyor. Yeniden dolduruluyor. Bu anlamda kod parçasının bahsi geçen sorunun oluşmasına neden olduğunu düşünmüyorum.

Sıralamanın bozuk olmasına sebep;
- kod içinde görmediğimiz kısımlardaki bir mantık hatası olabilir.
- database içinden okunan bilgilerin seçilmesi/sıralanması ile ilgili bir mantık hatası olabilir.
- bizim görmediğimiz ve soruda açıklanması atlanmış farklı bir yerden kaynaklı bir sorun olabilir (OnExit, OnEnter, OnChange olaylarına yazılmış başka kodlar, vb. veya bambaşka birşey)

İhtimalleri ve soru-cevap kısmını uzatmak yerine sorunlu çalışan kodun tamamını görüp düzeltmek daha hızlı ve doğru olacağını düşündüğüm için örnek kod gönderilmesini talep ediyorum.
Cevapla