Menghapus Rekaman Menggunakan Metode Hapus

Menggunakan metode Hapus menandai rekaman saat ini atau sekelompok rekaman dalam objek Recordset untuk dihapus. Jika objek Recordset tidak mengizinkan penghapusan rekaman, kesalahan terjadi. Jika Anda berada dalam mode pembaruan segera, penghapusan terjadi dalam database segera. Jika rekaman tidak berhasil dihapus (karena pelanggaran integritas database, misalnya), rekaman akan tetap dalam mode edit setelah panggilan ke Perbarui. Ini berarti Anda harus membatalkan pembaruan menggunakan CancelUpdate sebelum memindahkan rekaman saat ini (misalnya, menggunakan Tutup, Pindahkan, atau NextRecordset).

Jika Anda berada dalam mode pembaruan batch, rekaman ditandai untuk dihapus dari cache dan penghapusan aktual terjadi saat Anda memanggil metode UpdateBatch . (Untuk melihat rekaman yang dihapus, atur properti Filter ke adFilterAffectedRecords setelah Hapus dipanggil.)

Mencoba mengambil nilai bidang dari rekaman yang dihapus menghasilkan kesalahan. Setelah menghapus rekaman saat ini, rekaman yang dihapus tetap terkini hingga Anda berpindah ke rekaman lain. Setelah Anda menjauh dari rekaman yang dihapus, rekaman tersebut tidak lagi dapat diakses.

Jika Anda menumpuk penghapusan dalam transaksi, Anda dapat memulihkan rekaman yang dihapus dengan menggunakan metode RollbackTrans . Jika Anda berada dalam mode pembaruan batch, Anda dapat membatalkan penghapusan yang tertunda atau grup penghapusan yang tertunda dengan menggunakan metode CancelBatch .

Jika upaya untuk menghapus rekaman gagal karena konflik dengan data yang mendasar (misalnya, rekaman telah dihapus oleh pengguna lain), penyedia mengembalikan peringatan ke kumpulan Kesalahan tetapi tidak menghentikan eksekusi program. Kesalahan run-time hanya terjadi jika ada konflik pada semua rekaman yang diminta.

Jika properti dinamis Tabel Unik diatur dan Recordset adalah hasil dari menjalankan operasi JOIN pada beberapa tabel, metode Hapus hanya akan menghapus baris dari tabel bernama di properti Tabel Unik .

Metode Hapus mengambil argumen opsional yang memungkinkan Anda menentukan rekaman mana yang dipengaruhi oleh operasi Hapus . Satu-satunya nilai yang valid untuk argumen ini adalah salah satu konstanta yang dijumlahkan ADO AffectEnum berikut:

  • adAffectCurrent Hanya mempengaruhi rekaman saat ini.

  • adAffectGroup Hanya mempengaruhi rekaman yang memenuhi pengaturan properti Filter saat ini. Properti Filter harus diatur ke nilai FilterGroupEnum atau array Bookmark untuk menggunakan opsi ini.

Kode berikut menunjukkan contoh menentukan adAffectGroup saat memanggil metode Hapus . Contoh ini menambahkan beberapa rekaman ke sampel Recordset dan memperbarui database. Kemudian filter Recordset menggunakan filter adFilterAffectedRecords enumerated constant, yang hanya menyisakan rekaman yang baru ditambahkan yang terlihat di Recordset. Terakhir, ini memanggil metode Hapus dan menentukan bahwa semua rekaman yang memenuhi pengaturan properti Filter saat ini (rekaman baru) harus dihapus.

'BeginDeleteGroup  
    'add some bogus records  
    With objRs  
        For i = 0 To 8  
            .AddNew  
            .Fields("CompanyName") = "Shipper Number " & i + 1  
            .Fields("Phone") = "(425) 555-000" & (i + 1)  
            .Update  
        Next i  
  
        ' update  
        .UpdateBatch  
  
        'filter on newly added records  
        .Filter = adFilterAffectedRecords  
        Debug.Print "Deleting the " & .RecordCount & _  
                    " records you just added."  
  
        'delete the newly added bogus records  
        .Delete adAffectGroup  
        .Filter = adFilterNone  
        Debug.Print .RecordCount & " records remain."  
    End With  
'EndDeleteGroup