Gridde seçilen kayıtları sime

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
muttalip
Üye
Mesajlar: 71
Kayıt: 18 Haz 2003 08:58
Konum: İstanbul
İletişim:

Gridde seçilen kayıtları sime

Mesaj gönderen muttalip »

Aşağıdaki ifade ile gridde seçilen kayıtları silmek istiyorum. unsafe type 'Pointer' şeklinde bir hata alıyorum.Acaba ne yapmam gerekiyor.
Delphi 7 kullanıyorum.

Kod: Tümünü seç

If Application.MessageBox('Silmek istediğinizden emin misiniz?', 'Uyarı',
             mb_IconExclamation + mb_YesNo)=idYes Then
 begin
  if DBGrid3.SelectedRows.Count > 0 then
  begin
    with DBGrid3.DataSource.DataSet do
    begin
      for i := 0 to DBGrid3.SelectedRows.Count-1 do
      begin
        ADOTable1.GotoBookmark(Pointer(DbGrid3.SelectedRows.Items[i]));
        ADOTable1.DeleteRecords(arCurrent);
      end;
    end;
    ADOTable1.Requery();
    DBGrid3.Hint:='Toplam : '+IntToStr(ADOTable1.recordcount);
  end;
 end;
Muttalip TOPTAŞ

Yıldız Teknik Üniversitesi
Bilgi İşlem Dairesi Başkanlığı

Tel: 0212-3832134
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Merhaba,
GotoBookMark ile bir kayıda gidebilmeniz için öncelikle query bidirectional olmalı ayrıca Bookmark pointerları GetBookmark metoduyla alınmış olmalı. Yani

Kod: Tümünü seç

ADOTable1.GotoBookmark(Pointer(DbGrid3.SelectedRows.Items[i]));

satırında sizin aldığınız pointer ile bookmark pointerları farklı.

Sorun şu ki : GetBookmark metodu sadece üzerinde bulunan kayıt için bookmark döndürüyor, yani kayıtları silmeden önce ya bütün silinmesi gereken kayıtların üzerinden geçeceksiniz ve bookmark'ları toplayacaksınız ya da alternatif bir yöntem deneyeceksiniz.

Şahsen ben olsam bu işi SQL ile hallederdim, ya her kayıt için bir delete querysi çalıştırırdım ya da tüm seçilmiş kayıtlar için tek bir sql cümlesi oluşturup onu çalıştırırdım.

Belki de daha kolay bir yöntem vardır benim bilmediğim
Cevapla