Bagikan melalui


Kelas CDaoRecordset

Mewakili sekumpulan rekaman yang dipilih dari sumber data.

Sintaks

class CDaoRecordset : public CObject

Anggota

Konstruktor Publik

Nama Deskripsi
CDaoRecordset::CDaoRecordset Membuat CDaoRecordset objek.

Metode Publik

Nama Deskripsi
CDaoRecordset::AddNew Bersiap untuk menambahkan rekaman baru. Panggil Pembaruan untuk menyelesaikan penambahan.
CDaoRecordset::CanAppend Mengembalikan bukan nol jika rekaman baru dapat ditambahkan ke kumpulan rekaman melalui fungsi Tambahkan Anggota baru.
CDaoRecordset::CanBookmark Mengembalikan bukan nol jika kumpulan rekaman mendukung marka buku.
CDaoRecordset::CancelUpdate Membatalkan pembaruan yang tertunda karena operasi Edit atau TambahkanBaru .
CDaoRecordset::CanRestart Mengembalikan bukan nol jika Kueri ulang dapat dipanggil untuk menjalankan kueri kumpulan rekaman lagi.
CDaoRecordset::CanScroll Mengembalikan nonzero jika Anda bisa menggulir rekaman.
CDaoRecordset::CanTransact Mengembalikan nonzero jika sumber data mendukung transaksi.
CDaoRecordset::CanUpdate Mengembalikan bukan nol jika kumpulan rekaman dapat diperbarui (Anda dapat menambahkan, memperbarui, atau menghapus rekaman).
CDaoRecordset::Close Menutup kumpulan rekaman.
CDaoRecordset::D elete Menghapus rekaman saat ini dari kumpulan rekaman. Anda harus secara eksplisit menggulir ke rekaman lain setelah penghapusan.
CDaoRecordset::D oFieldExchange Dipanggil untuk bertukar data (di kedua arah) antara anggota data bidang dari himpunan rekaman dan rekaman terkait pada sumber data. Menerapkan pertukaran bidang rekaman DAO (DFX).
CDaoRecordset::Edit Bersiap untuk perubahan pada rekaman saat ini. Panggil Update untuk menyelesaikan pengeditan.
CDaoRecordset::FillCache Mengisi semua atau sebagian cache lokal untuk objek kumpulan rekaman yang berisi data dari sumber data ODBC.
CDaoRecordset::Find Menemukan lokasi pertama, berikutnya, sebelumnya, atau terakhir dari string tertentu dalam kumpulan rekaman jenis dynaset yang memenuhi kriteria yang ditentukan dan membuat rekaman tersebut menjadi rekaman saat ini.
CDaoRecordset::FindFirst Menemukan rekaman pertama dalam kumpulan rekaman jenis dynaset atau jenis rekam jepret yang memenuhi kriteria yang ditentukan dan membuat rekaman tersebut menjadi rekaman saat ini.
CDaoRecordset::FindLast Menemukan rekaman terakhir dalam kumpulan rekaman jenis dynaset atau jenis rekam jepret yang memenuhi kriteria yang ditentukan dan membuat rekaman tersebut menjadi rekaman saat ini.
CDaoRecordset::FindNext Menemukan rekaman berikutnya dalam kumpulan rekaman jenis dynaset atau jenis rekam jepret yang memenuhi kriteria yang ditentukan dan membuat rekaman tersebut menjadi rekaman saat ini.
CDaoRecordset::FindPrev Menemukan rekaman sebelumnya dalam kumpulan rekaman jenis dynaset atau jenis rekam jepret yang memenuhi kriteria yang ditentukan dan membuat rekaman tersebut menjadi rekaman saat ini.
CDaoRecordset::GetAbsolutePosition Mengembalikan jumlah rekaman rekaman rekaman objek saat ini.
CDaoRecordset::GetBookmark Mengembalikan nilai yang mewakili marka buku pada rekaman.
CDaoRecordset::GetCacheSize Mengembalikan nilai yang menentukan jumlah rekaman dalam kumpulan rekaman jenis dynaset yang berisi data yang akan di-cache secara lokal dari sumber data ODBC.
CDaoRecordset::GetCacheStart Mengembalikan nilai yang menentukan marka buku rekaman pertama dalam kumpulan rekaman yang akan di-cache.
CDaoRecordset::GetCurrentIndex Mengembalikan CString yang berisi nama indeks yang terakhir digunakan pada jenis CDaoRecordsettabel terindeks.
CDaoRecordset::GetDateCreated Mengembalikan tanggal dan waktu tabel dasar yang CDaoRecordset mendasar objek dibuat
CDaoRecordset::GetDateLastUpdated Mengembalikan tanggal dan waktu perubahan terbaru yang dilakukan pada desain tabel dasar yang CDaoRecordset mendasar objek.
CDaoRecordset::GetDefaultDBName Mengembalikan nama sumber data default.
CDaoRecordset::GetDefaultSQL Dipanggil untuk mendapatkan string SQL default untuk dijalankan.
CDaoRecordset::GetEditMode Mengembalikan nilai yang menunjukkan status pengeditan untuk rekaman saat ini.
CDaoRecordset::GetFieldCount Mengembalikan nilai yang menunjukkan jumlah bidang dalam kumpulan rekaman.
CDaoRecordset::GetFieldInfo Mengembalikan jenis informasi tertentu tentang bidang dalam kumpulan rekaman.
CDaoRecordset::GetFieldValue Mengembalikan nilai bidang dalam kumpulan rekaman.
CDaoRecordset::GetIndexCount Mengambil jumlah indeks dalam tabel yang mendasar kumpulan rekaman.
CDaoRecordset::GetIndexInfo Mengembalikan berbagai jenis informasi tentang indeks.
CDaoRecordset::GetLastModifiedBookmark Digunakan untuk menentukan rekaman yang terakhir ditambahkan atau diperbarui.
CDaoRecordset::GetLockingMode Mengembalikan nilai yang menunjukkan jenis penguncian yang berlaku selama pengeditan.
CDaoRecordset::GetName Mengembalikan yang CString berisi nama kumpulan rekaman.
CDaoRecordset::GetParamValue Mengambil nilai saat ini dari parameter yang ditentukan yang disimpan dalam objek DAOParameter yang mendasar.
CDaoRecordset::GetPercentPosition Mengembalikan posisi rekaman saat ini sebagai persentase dari jumlah total rekaman.
CDaoRecordset::GetRecordCount Mengembalikan jumlah rekaman yang diakses dalam objek recordset.
CDaoRecordset::GetSQL Mendapatkan string SQL yang digunakan untuk memilih rekaman untuk kumpulan rekaman.
CDaoRecordset::GetType Dipanggil untuk menentukan jenis kumpulan rekaman: jenis tabel, jenis dynaset, atau jenis rekam jepret.
CDaoRecordset::GetValidationRule Mengembalikan yang CString berisi nilai yang memvalidasi data saat dimasukkan ke dalam bidang.
CDaoRecordset::GetValidationText Mengambil teks yang ditampilkan saat aturan validasi tidak terpenuhi.
CDaoRecordset::IsBOF Mengembalikan bukan nol jika kumpulan rekaman telah diposisikan sebelum rekaman pertama. Tidak ada rekaman saat ini.
CDaoRecordset::IsDeleted Mengembalikan bukan nol jika kumpulan rekaman diposisikan pada rekaman yang dihapus.
CDaoRecordset::IsEOF Mengembalikan bukan nol jika kumpulan rekaman telah diposisikan setelah rekaman terakhir. Tidak ada rekaman saat ini.
CDaoRecordset::IsFieldDirty Mengembalikan bukan nol jika bidang yang ditentukan dalam rekaman saat ini telah diubah.
CDaoRecordset::IsFieldNull Mengembalikan bukan nol jika bidang yang ditentukan dalam rekaman saat ini adalah Null (tidak memiliki nilai).
CDaoRecordset::IsFieldNullable Mengembalikan bukan nol jika bidang yang ditentukan dalam rekaman saat ini dapat diatur ke Null (tidak memiliki nilai).
CDaoRecordset::IsOpen Mengembalikan bukan nol jika Buka telah dipanggil sebelumnya.
CDaoRecordset::Move Memposisikan kumpulan rekaman ke jumlah rekaman tertentu dari rekaman saat ini ke kedua arah.
CDaoRecordset::MoveFirst Memposisikan rekaman saat ini pada rekaman pertama dalam kumpulan rekaman.
CDaoRecordset::MoveLast Memposisikan rekaman saat ini pada rekaman terakhir dalam kumpulan rekaman.
CDaoRecordset::MoveNext Memposisikan rekaman saat ini pada rekaman berikutnya dalam kumpulan rekaman .
CDaoRecordset::MovePrev Memposisikan rekaman saat ini pada rekaman sebelumnya dalam kumpulan rekaman.
CDaoRecordset::Open Membuat kumpulan rekaman baru dari tabel, dynaset, atau rekam jepret.
CDaoRecordset::Requery Menjalankan kueri kumpulan rekaman lagi untuk merefresh rekaman yang dipilih.
CDaoRecordset::Seek Menemukan rekaman dalam objek kumpulan rekaman tipe tabel terindeks yang memenuhi kriteria yang ditentukan untuk indeks saat ini dan menjadikan rekaman tersebut sebagai rekaman saat ini.
CDaoRecordset::SetAbsolutePosition Mengatur nomor rekaman rekaman rekaman objek saat ini.
CDaoRecordset::SetBookmark Memposisikan kumpulan rekaman pada rekaman yang berisi marka buku yang ditentukan.
CDaoRecordset::SetCacheSize Mengatur nilai yang menentukan jumlah rekaman dalam kumpulan rekaman jenis dynaset yang berisi data yang akan di-cache secara lokal dari sumber data ODBC.
CDaoRecordset::SetCacheStart Mengatur nilai yang menentukan marka buku rekaman pertama dalam kumpulan rekaman yang akan di-cache.
CDaoRecordset::SetCurrentIndex Dipanggil untuk mengatur indeks pada kumpulan catatan jenis tabel.
CDaoRecordset::SetFieldDirty Menandai bidang yang ditentukan dalam rekaman saat ini sebagai diubah.
CDaoRecordset::SetFieldNull Mengatur nilai bidang yang ditentukan dalam rekaman saat ini ke Null (tidak memiliki nilai).
CDaoRecordset::SetFieldValue Mengatur nilai bidang dalam kumpulan rekaman.
CDaoRecordset::SetFieldValueNull Mengatur nilai bidang dalam kumpulan rekaman ke Null. (tidak memiliki nilai).
CDaoRecordset::SetLockingMode Mengatur nilai yang menunjukkan jenis penguncian yang akan diterapkan selama pengeditan.
CDaoRecordset::SetParamValue Mengatur nilai saat ini dari parameter yang ditentukan yang disimpan dalam objek DAOParameter yang mendasar
CDaoRecordset::SetParamValueNull Mengatur nilai saat ini dari parameter yang ditentukan ke Null (tidak memiliki nilai).
CDaoRecordset::SetPercentPosition Mengatur posisi rekaman saat ini ke lokasi yang sesuai dengan persentase dari jumlah total rekaman dalam kumpulan rekaman.
CDaoRecordset::Update AddNew Menyelesaikan operasi atau Edit dengan menyimpan data baru atau yang diedit pada sumber data.

Anggota Data Publik

Nama Deskripsi
CDaoRecordset::m_bCheckCacheForDirtyFields Berisi bendera yang menunjukkan apakah bidang secara otomatis ditandai sebagai diubah.
CDaoRecordset::m_nFields Berisi jumlah anggota data bidang di kelas recordset dan jumlah kolom yang dipilih oleh kumpulan rekaman dari sumber data.
CDaoRecordset::m_nParams Berisi jumlah anggota data parameter di kelas recordset — jumlah parameter yang diteruskan dengan kueri recordset
CDaoRecordset::m_pDAORecordset Penunjuk ke antarmuka DAO yang mendasar objek recordset.
CDaoRecordset::m_pDatabase Database sumber untuk kumpulan hasil ini. Berisi penunjuk ke objek CDaoDatabase .
CDaoRecordset::m_strFilter Berisi string yang digunakan untuk membuat pernyataan SQL WHERE .
CDaoRecordset::m_strSort Berisi string yang digunakan untuk membuat pernyataan SQL ORDER BY .

Keterangan

Dikenal sebagai objek "recordsets", CDaoRecordset tersedia dalam tiga formulir berikut:

  • Kumpulan rekaman jenis tabel mewakili tabel dasar yang bisa Anda gunakan untuk memeriksa, menambahkan, mengubah, atau menghapus rekaman dari satu tabel database.

  • Kumpulan rekaman jenis Dynaset adalah hasil kueri yang bisa memiliki rekaman yang dapat diperbarui. Kumpulan catatan ini adalah sekumpulan rekaman yang bisa Anda gunakan untuk memeriksa, menambahkan, mengubah, atau menghapus rekaman dari tabel atau tabel database yang mendasar. Kumpulan rekaman jenis Dynaset dapat berisi bidang dari satu atau beberapa tabel dalam database.

  • Kumpulan catatan jenis rekam jepret adalah salinan statis dari sekumpulan rekaman yang dapat Anda gunakan untuk menemukan data atau membuat laporan. Kumpulan rekaman ini dapat berisi bidang dari satu atau beberapa tabel dalam database tetapi tidak dapat diperbarui.

Setiap bentuk kumpulan catatan mewakili sekumpulan rekaman yang diperbaiki pada saat kumpulan rekaman dibuka. Saat Anda menggulir ke rekaman dalam kumpulan rekaman jenis tabel atau kumpulan rekaman jenis dinaset, itu mencerminkan perubahan yang dilakukan pada rekaman setelah kumpulan rekaman dibuka, baik oleh pengguna lain atau oleh kumpulan rekaman lain di aplikasi Anda. (Kumpulan rekaman jenis rekam jepret tidak dapat diperbarui.) Anda dapat menggunakan CDaoRecordset secara langsung atau memperoleh kelas recordset khusus aplikasi dari CDaoRecordset. Anda kemudian dapat:

  • Gulir rekaman.

  • Atur indeks dan cari rekaman dengan cepat menggunakan Pencarian (hanya kumpulan rekaman jenis tabel).

  • Temukan rekaman berdasarkan perbandingan string: "", "<<=", "=", ">=", atau ">" (set rekaman jenis dynaset dan jenis rekam jepret).

  • Perbarui rekaman dan tentukan mode penguncian (kecuali kumpulan rekaman jenis rekam jepret).

  • Filter kumpulan rekaman untuk membatasi rekaman mana yang dipilihnya dari yang tersedia di sumber data.

  • Urutkan kumpulan rekaman.

  • Parameterisasi kumpulan rekaman untuk menyesuaikan pilihannya dengan informasi yang tidak diketahui hingga durasi.

Kelas CDaoRecordset memasok antarmuka yang mirip dengan kelas CRecordset. Perbedaan utamanya adalah kelas CDaoRecordset mengakses data melalui Objek Akses Data (DAO) berdasarkan OLE. Kelas CRecordset mengakses DBMS melalui Open Database Koneksi ivity (ODBC) dan driver ODBC untuk DBMS tersebut.

Catatan

Kelas database DAO berbeda dari kelas database MFC berdasarkan Open Database Koneksi ivity (ODBC). Semua nama kelas database DAO memiliki awalan "CDao". Anda masih dapat mengakses sumber data ODBC dengan kelas DAO; kelas DAO umumnya menawarkan kemampuan unggul karena khusus untuk mesin database Microsoft Jet.

Anda dapat menggunakan CDaoRecordset secara langsung atau memperoleh kelas dari CDaoRecordset. Untuk menggunakan kelas recordset dalam kedua kasus, buka database dan buat objek recordset, teruskan konstruktor penunjuk ke objek Anda CDaoDatabase . Anda juga dapat membuat CDaoRecordset objek dan membiarkan MFC membuat objek sementara CDaoDatabase untuk Anda. Kemudian panggil fungsi Anggota terbuka kumpulan rekaman, menentukan apakah objek tersebut adalah kumpulan rekaman jenis tabel, kumpulan rekaman jenis dynaset, atau kumpulan rekaman jenis rekam jepret. Open Panggilan memilih data dari database dan mengambil rekaman pertama.

Gunakan fungsi anggota objek dan anggota data untuk menggulir rekaman dan mengoperasikannya. Operasi yang tersedia bergantung pada apakah objek adalah kumpulan rekaman jenis tabel, kumpulan rekaman jenis dynaset, atau kumpulan rekaman jenis rekam jepret, dan apakah itu dapat diperbarui atau baca-saja — ini tergantung pada kemampuan database atau sumber data Open Database Koneksi ivity (ODBC). Untuk menyegarkan rekaman yang mungkin telah diubah atau ditambahkan sejak Open panggilan, panggil fungsi Anggota kueri ulang objek. Panggil fungsi anggota objek Close dan hancurkan objek ketika Anda selesai dengannya.

CDaoRecordset menggunakan pertukaran bidang rekaman DAO (DFX) untuk mendukung pembacaan dan pembaruan bidang rekaman melalui anggota C++ tipe aman dari kelas anda CDaoRecordset atau CDaoRecordset-turunan. Anda juga dapat menerapkan pengikatan dinamis kolom dalam database tanpa menggunakan mekanisme DFX menggunakan GetFieldValue dan SetFieldValue.

Untuk informasi terkait, lihat topik "Objek Recordset" di Bantuan DAO.

Hierarki Warisan

CObject

CDaoRecordset

Persyaratan

Header: afxdao.h

CDaoRecordset::AddNew

Panggil fungsi anggota ini untuk menambahkan rekaman baru ke kumpulan rekaman tipe tabel atau tipe dynaset.

virtual void AddNew();

Keterangan

Bidang rekaman awalnya Null. (Dalam terminologi database, Null berarti "tidak memiliki nilai" dan tidak sama dengan NULL di C++.) Untuk menyelesaikan operasi, Anda harus memanggil fungsi Perbarui anggota. Update menyimpan perubahan Anda ke sumber data.

Perhatian

Jika Anda mengedit rekaman lalu menggulir ke rekaman lain tanpa memanggil Update, perubahan Anda hilang tanpa peringatan.

Jika Anda menambahkan rekaman ke kumpulan rekaman jenis dynaset dengan memanggil AddNew, rekaman terlihat di kumpulan rekaman dan disertakan dalam tabel yang mendasar tempat rekaman terlihat oleh objek baru CDaoRecordset apa pun.

Posisi rekaman baru tergantung pada jenis recordset:

  • Dalam kumpulan rekaman jenis dynaset, di mana rekaman baru dimasukkan tidak dijamin. Perilaku ini berubah dengan Microsoft Jet 3.0 karena alasan performa dan konkurensi. Jika tujuan Anda adalah membuat rekaman yang baru ditambahkan rekaman saat ini, dapatkan marka buku rekaman terakhir yang dimodifikasi dan pindah ke marka buku tersebut:
rs.SetBookmark(rs.GetLastModifiedBookmark());
  • Dalam kumpulan rekaman jenis tabel yang indeksnya telah ditentukan, rekaman dikembalikan di tempat yang tepat dalam urutan pengurutan. Jika tidak ada indeks yang ditentukan, rekaman baru dikembalikan di akhir kumpulan rekaman.

Rekaman yang ada saat ini sebelum Anda gunakan AddNew tetap terkini. Jika Anda ingin membuat rekaman baru saat ini dan kumpulan rekaman mendukung marka buku, panggil SetBookmark ke marka buku yang diidentifikasi oleh pengaturan properti LastModified dari objek himpunan rekaman DAO yang mendasar. Melakukannya berguna untuk menentukan nilai untuk bidang penghitung (kenaikan otomatis) dalam rekaman tambahan. Untuk informasi selengkapnya, lihat GetLastModifiedBookmark.

Jika database mendukung transaksi, Anda dapat melakukan panggilan sebagai AddNew bagian dari transaksi. Untuk informasi selengkapnya tentang transaksi, lihat kelas CDaoWorkspace. Perhatikan bahwa Anda harus memanggil CDaoWorkspace::BeginTrans sebelum memanggil AddNew.

Adalah ilegal untuk memanggil AddNew kumpulan rekaman yang fungsi anggota Terbukanya belum dipanggil. CDaoException akan dilemparkan jika Anda memanggil AddNew kumpulan rekaman yang tidak dapat ditambahkan. Anda dapat menentukan apakah kumpulan rekaman dapat diperbarui dengan memanggil CanAppend.

Kerangka kerja menandai anggota data bidang yang diubah untuk memastikan mereka akan ditulis ke rekaman pada sumber data oleh mekanisme pertukaran bidang rekaman DAO (DFX). Mengubah nilai bidang umumnya mengatur bidang kotor secara otomatis, jadi Anda jarang perlu memanggil SetFieldDirty sendiri, tetapi Terkadang Anda mungkin ingin memastikan bahwa kolom akan diperbarui atau dimasukkan secara eksplisit terlepas dari nilai apa yang ada di anggota data bidang. Mekanisme DFX juga menggunakan penggunaan PSEUDO NULL. Untuk informasi selengkapnya, lihat CDaoFieldExchange::m_nOperation.

Jika mekanisme buffering ganda tidak digunakan, maka mengubah nilai bidang tidak secara otomatis mengatur bidang sebagai kotor. Dalam hal ini, perlu untuk secara eksplisit mengatur bidang kotor. Bendera yang terkandung dalam m_bCheckCacheForDirtyFields mengontrol pemeriksaan bidang otomatis ini.

Catatan

Jika rekaman di-buffer ganda (yaitu, pemeriksaan bidang otomatis diaktifkan), panggilan CancelUpdate akan memulihkan variabel anggota ke nilai yang mereka miliki sebelumnya AddNew atau Edit dipanggil.

Untuk informasi terkait, lihat topik "AddNew Method", "CancelUpdate Method", "LastModified Property", dan "EditMode Property" di Bantuan DAO.

CDaoRecordset::CanAppend

Panggil fungsi anggota ini untuk menentukan apakah kumpulan rekaman yang dibuka sebelumnya memungkinkan Anda menambahkan rekaman baru dengan memanggil fungsi Tambahkan Anggota baru.

BOOL CanAppend() const;

Tampilkan Nilai

Bukan nol jika kumpulan rekaman memungkinkan penambahan rekaman baru; jika tidak, 0. CanAppend akan mengembalikan 0 jika Anda membuka recordset sebagai baca-saja.

Keterangan

Untuk informasi terkait, lihat topik "Tambahkan Metode" di Bantuan DAO.

CDaoRecordset::CanBookmark

Panggil fungsi anggota ini untuk menentukan apakah kumpulan rekaman yang dibuka sebelumnya memungkinkan Anda untuk menandai rekaman secara individual menggunakan marka buku.

BOOL CanBookmark();

Tampilkan Nilai

Bukan nol jika kumpulan rekaman mendukung marka buku, jika tidak, 0.

Keterangan

Jika Anda menggunakan kumpulan rekaman yang sepenuhnya didasarkan pada tabel mesin database Microsoft Jet, marka buku dapat digunakan kecuali pada kumpulan rekaman jenis rekam jepret yang ditandai sebagai kumpulan rekaman gulir khusus penerusan. Produk database lain (sumber data ODBC eksternal) mungkin tidak mendukung marka buku.

Untuk informasi terkait, lihat topik "Properti Bookmarkable" di Bantuan DAO.

CDaoRecordset::CancelUpdate

Fungsi CancelUpdate anggota membatalkan pembaruan yang tertunda karena operasi Edit atau TambahkanBaru .

virtual void CancelUpdate();

Keterangan

Misalnya, jika aplikasi memanggil Edit fungsi atau AddNew anggota dan belum disebut Perbarui, CancelUpdate membatalkan perubahan apa pun yang dilakukan setelah Edit atau AddNew dipanggil.

Catatan

Jika rekaman di-buffer ganda (yaitu, pemeriksaan bidang otomatis diaktifkan), panggilan CancelUpdate akan memulihkan variabel anggota ke nilai yang mereka miliki sebelumnya AddNew atau Edit dipanggil.

Jika tidak Edit ada operasi atau AddNew tertunda, CancelUpdate menyebabkan MFC melemparkan pengecualian. Panggil fungsi anggota GetEditMode untuk menentukan apakah ada operasi tertunda yang dapat dibatalkan.

Untuk informasi terkait, lihat topik "Metode CancelUpdate" di Bantuan DAO.

CDaoRecordset::CanRestart

Panggil fungsi anggota ini untuk menentukan apakah kumpulan rekaman memungkinkan memulai ulang kuerinya (untuk menyegarkan rekamannya) dengan memanggil Requery fungsi anggota.

BOOL CanRestart();

Tampilkan Nilai

Bukan nol jika Requery dapat dipanggil untuk menjalankan kueri kumpulan rekaman lagi, jika tidak, 0.

Keterangan

Kumpulan rekaman jenis tabel tidak mendukung Requery.

Jika Requery tidak didukung, panggil Tutup lalu Buka untuk merefresh data. Anda dapat memanggil Requery untuk memperbarui kueri parameter yang mendasar objek recordset setelah nilai parameter diubah.

Untuk informasi terkait, lihat topik "Properti yang Dapat Dimulai Ulang" di Bantuan DAO.

CDaoRecordset::CanScroll

Panggil fungsi anggota ini untuk menentukan apakah kumpulan rekaman memungkinkan pengguliran.

BOOL CanScroll() const;

Tampilkan Nilai

Nonzero jika Anda dapat menggulir rekaman, jika tidak, 0.

Keterangan

Jika Anda memanggil Buka dengan dbForwardOnly, kumpulan rekaman hanya dapat menggulir ke depan.

Untuk informasi terkait, lihat topik "Memposisikan Penunjuk Rekaman Saat Ini dengan DAO" di Bantuan DAO.

CDaoRecordset::CanTransact

Panggil fungsi anggota ini untuk menentukan apakah kumpulan rekaman mengizinkan transaksi.

BOOL CanTransact();

Tampilkan Nilai

Bukan nol jika sumber data yang mendasar mendukung transaksi, jika tidak, 0.

Keterangan

Untuk informasi terkait, lihat topik "Properti Transaksi" di Bantuan DAO.

CDaoRecordset::CanUpdate

Panggil fungsi anggota ini untuk menentukan apakah kumpulan rekaman dapat diperbarui.

BOOL CanUpdate() const;

Tampilkan Nilai

Bukan nol jika kumpulan rekaman dapat diperbarui (tambahkan, perbarui, dan hapus rekaman), jika tidak, 0.

Keterangan

Kumpulan rekaman mungkin bersifat baca-saja jika sumber data yang mendasar bersifat baca-saja atau jika Anda menentukan dbReadOnly untuk nOptions saat Anda memanggil Buka untuk kumpulan rekaman.

Untuk informasi terkait, lihat topik "Tambahkan Metode Baru", "Edit Metode", "Hapus Metode", "Perbarui Metode", dan "Properti yang Dapat Diperbarui" di Bantuan DAO.

CDaoRecordset::CDaoRecordset

Membuat CDaoRecordset objek.

CDaoRecordset(CDaoDatabase* pDatabase = NULL);

Parameter

pDatabase
Berisi penunjuk ke objek CDaoDatabase atau nilai NULL. Jika bukan NULL dan CDaoDatabase fungsi anggota objek Open belum dipanggil untuk menyambungkannya ke sumber data, set rekaman mencoba membukanya untuk Anda selama panggilan Buka sendiri. Jika Anda melewati NULL, CDaoDatabase objek dibangun dan tersambung untuk Anda menggunakan informasi sumber data yang Anda tentukan jika Anda memperoleh kelas recordset Anda dari CDaoRecordset.

Keterangan

Anda dapat menggunakan CDaoRecordset secara langsung atau mendapatkan kelas khusus aplikasi dari CDaoRecordset. Anda dapat menggunakan ClassWizard untuk memperoleh kelas recordset Anda.

Catatan

Jika Anda memperoleh CDaoRecordset kelas, kelas turunan Anda harus menyediakan konstruktornya sendiri. Di konstruktor kelas turunan Anda, panggil konstruktor CDaoRecordset::CDaoRecordset, meneruskan parameter yang sesuai bersama dengannya.

Teruskan NULL ke konstruktor recordset Anda agar CDaoDatabase objek dibuat dan tersambung untuk Anda secara otomatis. Ini adalah pintasan yang berguna yang tidak mengharuskan Anda untuk membangun dan menghubungkan CDaoDatabase objek sebelum membuat recordset Anda. CDaoDatabase Jika objek tidak terbuka, objek CDaoWorkspace juga akan dibuat untuk Anda yang menggunakan ruang kerja default. Untuk informasi selengkapnya, lihat CDaoDatabase::CDaoDatabase.

CDaoRecordset::Close

CDaoRecordset Menutup objek akan menghapusnya dari kumpulan kumpulan rekaman terbuka di database terkait.

virtual void Close();

Keterangan

Karena Close tidak menghancurkan CDaoRecordset objek, Anda dapat menggunakan kembali objek dengan memanggil Open sumber data yang sama atau sumber data yang berbeda.

Semua pernyataan AddNew atau Edit yang tertunda dibatalkan, dan semua transaksi yang tertunda digulung balik. Jika Anda ingin mempertahankan penambahan atau pengeditan yang tertunda, panggil Perbarui sebelum Anda memanggil Close untuk setiap kumpulan rekaman.

Anda dapat menghubungi Open lagi setelah memanggil Close. Ini memungkinkan Anda menggunakan kembali objek recordset. Alternatif yang lebih baik adalah memanggil Requery, jika memungkinkan.

Untuk informasi terkait, lihat topik "Tutup Metode" di Bantuan DAO.

CDaoRecordset::D elete

Panggil fungsi anggota ini untuk menghapus rekaman saat ini dalam objek kumpulan rekaman jenis dynaset atau tipe tabel terbuka.

virtual void Delete();

Keterangan

Setelah penghapusan berhasil, anggota data bidang kumpulan rekaman diatur ke nilai Null, dan Anda harus secara eksplisit memanggil salah satu fungsi anggota navigasi recordset ( Pindahkan, Cari, SetBookmark, dan sebagainya) untuk memindahkan rekaman yang dihapus. Saat Anda menghapus rekaman dari kumpulan rekaman, harus ada rekaman saat ini di kumpulan rekaman sebelum Anda memanggil Delete; jika tidak, MFC melemparkan pengecualian.

Delete menghapus rekaman saat ini dan membuatnya tidak dapat diakses. Meskipun Anda tidak dapat mengedit atau menggunakan rekaman yang dihapus, rekaman tersebut tetap terkini. Namun, setelah Anda pindah ke rekaman lain, Anda tidak dapat membuat rekaman yang dihapus saat ini lagi.

Perhatian

Kumpulan rekaman harus dapat diperbarui dan harus ada rekaman yang valid saat ini di kumpulan rekaman saat Anda memanggil Delete. Misalnya, jika Anda menghapus rekaman tetapi tidak menggulir ke rekaman baru sebelum Anda memanggil Delete lagi, Delete melempar CDaoException.

Anda dapat membatalkan penghapusan rekaman jika Anda menggunakan transaksi dan memanggil fungsi anggota CDaoWorkspace::Rollback . Jika tabel dasar adalah tabel utama dalam hubungan penghapusan kaskade, menghapus rekaman saat ini juga dapat menghapus satu atau beberapa rekaman dalam tabel asing. Untuk informasi selengkapnya, lihat definisi "penghapusan kaskade" di Bantuan DAO.

Tidak seperti AddNew dan Edit, panggilan ke Delete tidak diikuti oleh panggilan ke Update.

Untuk informasi terkait, lihat topik "Tambahkan Metode Baru", "Edit Metode", "Hapus Metode", "Perbarui Metode", dan "Properti yang Dapat Diperbarui" di Bantuan DAO.

CDaoRecordset::D oFieldExchange

Kerangka kerja memanggil fungsi anggota ini untuk secara otomatis bertukar data antara anggota data bidang objek himpunan rekaman Anda dan kolom yang sesuai dari rekaman saat ini pada sumber data.

virtual void DoFieldExchange(CDaoFieldExchange* pFX);

Parameter

pFX
Berisi penunjuk ke CDaoFieldExchange objek. Kerangka kerja sudah menyiapkan objek ini untuk menentukan konteks untuk operasi pertukaran bidang.

Keterangan

Ini juga mengikat anggota data parameter Anda, jika ada, ke tempat penampung parameter dalam string pernyataan SQL untuk pilihan kumpulan rekaman. Pertukaran data bidang, yang disebut pertukaran bidang rekaman DAO (DFX), bekerja di kedua arah: dari anggota data bidang objek rekaman ke bidang rekaman pada sumber data, dan dari rekaman pada sumber data ke objek kumpulan rekaman. Jika Anda mengikat kolom secara dinamis, Anda tidak diharuskan untuk menerapkan DoFieldExchange.

Satu-satunya tindakan yang biasanya harus Anda ambil untuk diterapkan DoFieldExchange untuk kelas recordset turunan Anda adalah membuat kelas dengan ClassWizard dan menentukan nama dan jenis data anggota data bidang. Anda juga dapat menambahkan kode ke apa yang ditulis ClassWizard untuk menentukan anggota data parameter. Jika semua bidang harus terikat secara dinamis, fungsi ini akan tidak aktif kecuali Anda menentukan anggota data parameter.

Saat Anda mendeklarasikan kelas recordset turunan Anda dengan ClassWizard, wizard menulis penimpaan DoFieldExchange untuk Anda, yang menyerupai contoh berikut:

void CCustSet::DoFieldExchange(CDaoFieldExchange *pFX)
{
   pFX->SetFieldType(CDaoFieldExchange::param);
   DFX_Text(pFX, _T("Param"), m_strParam);
   pFX->SetFieldType(CDaoFieldExchange::outputColumn);
   DFX_Short(pFX, _T("EmployeeID"), m_EmployeeID);
   DFX_Text(pFX, _T("LastName"), m_LastName);
   DFX_Short(pFX, _T("Age"), m_Age);
   DFX_DateTime(pFX, _T("hire_date"), m_hire_date);
   DFX_DateTime(pFX, _T("termination_date"), m_termination_date);

   CDaoRecordset::DoFieldExchange(pFX);
}

CDaoRecordset::Edit

Panggil fungsi anggota ini untuk mengizinkan perubahan pada rekaman saat ini.

virtual void Edit();

Keterangan

Setelah Anda memanggil Edit fungsi anggota, perubahan yang dilakukan pada bidang rekaman saat ini disalin ke penyangga salinan. Setelah Anda membuat perubahan yang diinginkan pada rekaman, panggil Update untuk menyimpan perubahan Anda. Edit menyimpan nilai anggota data himpunan catatan. Jika Anda memanggil Edit, membuat perubahan, lalu memanggil Edit lagi, nilai rekaman dipulihkan ke apa yang mereka lakukan sebelum panggilan pertama Edit .

Perhatian

Jika Anda mengedit rekaman lalu melakukan operasi apa pun yang berpindah ke rekaman lain tanpa terlebih dahulu memanggil Update, perubahan Anda hilang tanpa peringatan. Selain itu, jika Anda menutup kumpulan rekaman atau database induk, rekaman yang diedit akan dibuang tanpa peringatan.

Dalam beberapa kasus, Anda mungkin ingin memperbarui kolom dengan membuatnya Null (tidak berisi data). Untuk melakukannya, panggil SetFieldNull dengan parameter TRUE untuk menandai bidang Null; ini juga menyebabkan kolom diperbarui. Jika Anda ingin bidang ditulis ke sumber data meskipun nilainya tidak berubah, panggil SetFieldDirty dengan parameter TRUE. Ini berfungsi bahkan jika bidang memiliki nilai Null.

Kerangka kerja menandai anggota data bidang yang diubah untuk memastikan mereka akan ditulis ke rekaman pada sumber data oleh mekanisme pertukaran bidang rekaman DAO (DFX). Mengubah nilai bidang umumnya mengatur bidang kotor secara otomatis, jadi Anda jarang perlu memanggil SetFieldDirty sendiri, tetapi Terkadang Anda mungkin ingin memastikan bahwa kolom akan diperbarui atau dimasukkan secara eksplisit terlepas dari nilai apa yang ada di anggota data bidang. Mekanisme DFX juga menggunakan penggunaan PSEUDO NULL. Untuk informasi selengkapnya, lihat CDaoFieldExchange::m_nOperation.

Jika mekanisme buffering ganda tidak digunakan, maka mengubah nilai bidang tidak secara otomatis mengatur bidang sebagai kotor. Dalam hal ini, perlu untuk secara eksplisit mengatur bidang kotor. Bendera yang terkandung dalam m_bCheckCacheForDirtyFields mengontrol pemeriksaan bidang otomatis ini.

Ketika objek recordset dikunci secara pesimis di lingkungan multipengguna, rekaman tetap terkunci sejak waktu Edit digunakan hingga pembaruan selesai. Jika kumpulan rekaman dikunci secara optimis, rekaman dikunci dan dibandingkan dengan rekaman yang telah diedit sebelumnya tepat sebelum diperbarui dalam database. Jika rekaman telah berubah sejak Anda memanggil Edit, Update operasi gagal dan MFC melemparkan pengecualian. Anda dapat mengubah mode penguncian dengan SetLockingMode.

Catatan

Penguncian optimis selalu digunakan pada format database eksternal, seperti ODBC dan ISAM yang dapat diinstal.

Rekaman saat ini tetap terkini setelah Anda memanggil Edit. Untuk memanggil Edit, harus ada rekaman saat ini. Jika tidak ada rekaman saat ini atau jika kumpulan rekaman tidak merujuk ke objek kumpulan rekaman jenis tabel terbuka atau tipe dynaset, pengecualian terjadi. Edit Panggilan menyebabkan dilemparkan CDaoException dalam kondisi berikut:

  • Tidak ada rekaman saat ini.

  • Database atau kumpulan rekaman bersifat baca-saja.

  • Tidak ada bidang dalam rekaman yang dapat diperbarui.

  • Database atau kumpulan rekaman dibuka untuk penggunaan eksklusif oleh pengguna lain.

  • Pengguna lain telah mengunci halaman yang berisi catatan Anda.

Jika sumber data mendukung transaksi, Anda dapat melakukan Edit panggilan sebagai bagian dari transaksi. Perhatikan bahwa Anda harus memanggil CDaoWorkspace::BeginTrans sebelum memanggil Edit dan setelah recordset dibuka. Perhatikan juga bahwa panggilan CDaoWorkspace::CommitTrans bukan pengganti panggilan Update untuk menyelesaikan Edit operasi. Untuk informasi selengkapnya tentang transaksi, lihat kelas CDaoWorkspace.

Untuk informasi terkait, lihat topik "Tambahkan Metode Baru", "Edit Metode", "Hapus Metode", "Perbarui Metode", dan "Properti yang Dapat Diperbarui" di Bantuan DAO.

CDaoRecordset::FillCache

Panggil fungsi anggota ini untuk menyimpan jumlah rekaman tertentu dari kumpulan rekaman.

void FillCache(
    long* pSize = NULL,
    COleVariant* pBookmark = NULL);

Parameter

pSize
Menentukan jumlah baris untuk mengisi cache. Jika Anda menghilangkan parameter ini, nilai ditentukan oleh pengaturan properti CacheSize dari objek DAO yang mendasar.

pBookmark
COleVariant yang menentukan marka buku. Cache diisi mulai dari catatan yang ditunjukkan oleh marka buku ini. Jika Anda menghilangkan parameter ini, cache diisi mulai dari rekaman yang ditunjukkan oleh properti CacheStart dari objek DAO yang mendasar.

Keterangan

Penembolokan meningkatkan performa aplikasi yang mengambil, atau mengambil, data dari server jarak jauh. Cache adalah ruang dalam memori lokal yang menyimpan data yang terakhir diambil dari server dengan asumsi bahwa data mungkin akan diminta lagi saat aplikasi sedang berjalan. Ketika data diminta, mesin database Microsoft Jet memeriksa cache untuk data terlebih dahulu daripada mengambilnya dari server, yang membutuhkan lebih banyak waktu. Menggunakan penembolokan data pada sumber data non-ODBC tidak berpengaruh karena data tidak disimpan dalam cache.

Daripada menunggu cache diisi dengan rekaman saat diambil, Anda dapat secara eksplisit mengisi cache kapan saja dengan memanggil FillCache fungsi anggota. Ini adalah cara yang lebih cepat untuk mengisi cache karena FillCache mengambil beberapa rekaman sekaligus alih-alih satu per satu. Misalnya, saat setiap cuplikan rekaman sedang ditampilkan, Anda dapat meminta panggilan FillCache aplikasi untuk mengambil rekaman senyap berikutnya.

Database ODBC apa pun yang diakses dengan objek kumpulan rekaman dapat memiliki cache lokal. Untuk membuat cache, buka objek kumpulan rekaman dari sumber data jarak jauh, lalu panggil SetCacheSize fungsi anggota dan SetCacheStart dari kumpulan rekaman. Jika lSize dan lBookmark membuat rentang yang sebagian atau sepenuhnya di luar rentang yang ditentukan oleh SetCacheSize dan SetCacheStart, bagian dari kumpulan rekaman di luar rentang ini diabaikan dan tidak dimuat ke dalam cache. Jika FillCache meminta lebih banyak rekaman daripada tetap berada di sumber data jarak jauh, hanya rekaman yang tersisa yang diambil, dan tidak ada pengecualian yang dilemparkan.

Rekaman yang diambil dari cache tidak mencerminkan perubahan yang dibuat secara bersamaan ke data sumber oleh pengguna lain.

FillCache mengambil hanya rekaman yang belum di-cache. Untuk memaksa pembaruan semua data yang di-cache, panggil SetCacheSize fungsi anggota dengan parameter lSize sama dengan 0, panggil SetCacheSize lagi dengan parameter lSize sama dengan ukuran cache yang awalnya Anda minta, lalu panggil FillCache.

Untuk informasi terkait, lihat topik "Metode FillCache" di Bantuan DAO.

CDaoRecordset::Find

Panggil fungsi anggota ini untuk menemukan string tertentu dalam kumpulan rekaman jenis dynaset atau snapshot menggunakan operator perbandingan.

virtual BOOL Find(
    long lFindType,
    LPCTSTR lpszFilter);

Parameter

lFindType
Nilai yang menunjukkan jenis operasi Temukan yang diinginkan. Nilai yang mungkin adalah:

  • AFX_DAO_NEXT Temukan lokasi berikutnya dari string yang cocok.

  • AFX_DAO_PREV Temukan lokasi string yang cocok sebelumnya.

  • AFX_DAO_FIRST Temukan lokasi pertama string yang cocok.

  • AFX_DAO_LAST Temukan lokasi terakhir string yang cocok.

lpszFilter
Ekspresi string (seperti klausa WHERE dalam pernyataan SQL tanpa kata WHERE) yang digunakan untuk menemukan rekaman. Contohnya:

rs.Find(AFX_DAO_FIRST, _T("EmployeeID = 7"));
rs.Find(AFX_DAO_NEXT, _T("LastName = 'Jones'"));

Tampilkan Nilai

Bukan nol jika rekaman yang cocok ditemukan, jika tidak, 0.

Keterangan

Anda dapat menemukan instans string pertama, berikutnya, sebelumnya, atau terakhir. Find adalah fungsi virtual, sehingga Anda dapat mengambil alih dan menambahkan implementasi Anda sendiri. Fungsi FindFirstanggota , FindLast, FindNext, dan FindPrev memanggil Find fungsi anggota, sehingga Anda dapat menggunakan Find untuk mengontrol perilaku semua operasi Temukan.

Untuk menemukan rekaman dalam kumpulan rekaman jenis tabel, panggil fungsi Cari anggota.

Tip

Semakin kecil kumpulan catatan yang Anda miliki, semakin efektif Find . Secara umum, dan terutama dengan data ODBC, lebih baik membuat kueri baru yang hanya mengambil rekaman yang Anda inginkan.

Untuk informasi terkait, lihat topik "FindFirst, FindLast, FindNext, FindPrevious Methods" di Bantuan DAO.

CDaoRecordset::FindFirst

Panggil fungsi anggota ini untuk menemukan rekaman pertama yang cocok dengan kondisi tertentu.

BOOL FindFirst(LPCTSTR lpszFilter);

Parameter

lpszFilter
Ekspresi string (seperti klausa WHERE dalam pernyataan SQL tanpa kata WHERE) yang digunakan untuk menemukan rekaman.

Tampilkan Nilai

Bukan nol jika rekaman yang cocok ditemukan, jika tidak, 0.

Keterangan

Fungsi FindFirst anggota memulai pencariannya dari awal kumpulan rekaman dan mencari ke akhir kumpulan rekaman.

Jika Anda ingin menyertakan semua rekaman dalam pencarian Anda (bukan hanya rekaman yang memenuhi kondisi tertentu) gunakan salah satu operasi Pindahkan untuk berpindah dari rekaman ke rekaman. Untuk menemukan rekaman dalam kumpulan rekaman jenis tabel, panggil Seek fungsi anggota.

Jika rekaman yang cocok dengan kriteria tidak ditemukan, penunjuk rekaman saat ini tidak ditentukan, dan FindFirst mengembalikan nol. Jika kumpulan rekaman berisi lebih dari satu rekaman yang memenuhi kriteria, FindFirst menemukan kemunculan pertama, FindNext menemukan kemunculan berikutnya, dan sebagainya.

Perhatian

Jika Anda mengedit rekaman saat ini, pastikan untuk menyimpan perubahan dengan memanggil Update fungsi anggota sebelum Anda pindah ke rekaman lain. Jika Anda berpindah ke rekaman lain tanpa memperbarui, perubahan Anda akan hilang tanpa peringatan.

Fungsi Find anggota mencari dari lokasi dan dalam arah yang ditentukan dalam tabel berikut:

Temukan operasi Mulai Arah pencarian
FindFirst Awal himpunan rekaman Akhir kumpulan rekaman
FindLast Akhir kumpulan rekaman Awal himpunan rekaman
FindNext Rekaman saat ini Akhir kumpulan rekaman
FindPrevious Rekaman saat ini Awal himpunan rekaman

Catatan

Saat Anda memanggil FindLast, mesin database Microsoft Jet sepenuhnya mengisi kumpulan rekaman Anda sebelum memulai pencarian, jika ini belum dilakukan. Pencarian pertama mungkin memakan waktu lebih lama dari pencarian berikutnya.

Menggunakan salah satu operasi Temukan tidak sama dengan panggilan MoveFirst atau MoveNext, namun, yang hanya membuat rekaman pertama atau berikutnya saat ini tanpa menentukan kondisi. Anda dapat mengikuti operasi Temukan dengan operasi Pindahkan.

Ingatlah hal berikut saat menggunakan operasi Temukan:

  • Jika Find mengembalikan bukan nol, rekaman saat ini tidak ditentukan. Dalam hal ini, Anda harus memposisikan penunjuk rekaman saat ini kembali ke rekaman yang valid.

  • Anda tidak dapat menggunakan operasi Temukan dengan kumpulan rekaman jenis rekam jepret pengguliran khusus ke depan.

  • Anda harus menggunakan format tanggal AS (bulan-hari-tahun) ketika Anda mencari bidang yang berisi tanggal, bahkan jika Anda tidak menggunakan versi A.S. dari mesin database Microsoft Jet; jika tidak, rekaman yang cocok mungkin tidak ditemukan.

  • Saat bekerja dengan database ODBC dan dinaset besar, Anda mungkin menemukan bahwa menggunakan operasi Temukan lambat, terutama saat bekerja dengan kumpulan rekaman besar. Anda dapat meningkatkan performa dengan menggunakan kueri SQL dengan klausa ORDERBY atau WHERE yang disesuaikan, kueri parameter, atau CDaoQuerydef objek yang mengambil rekaman terindeks tertentu.

Untuk informasi terkait, lihat topik "FindFirst, FindLast, FindNext, FindPrevious Methods" di Bantuan DAO.

CDaoRecordset::FindLast

Panggil fungsi anggota ini untuk menemukan rekaman terakhir yang cocok dengan kondisi tertentu.

BOOL FindLast(LPCTSTR lpszFilter);

Parameter

lpszFilter
Ekspresi string (seperti klausa WHERE dalam pernyataan SQL tanpa kata WHERE) yang digunakan untuk menemukan rekaman.

Tampilkan Nilai

Bukan nol jika rekaman yang cocok ditemukan, jika tidak, 0.

Keterangan

Fungsi FindLast anggota memulai pencariannya di akhir kumpulan rekaman dan mencari mundur menuju awal kumpulan rekaman.

Jika Anda ingin menyertakan semua rekaman dalam pencarian Anda (bukan hanya rekaman yang memenuhi kondisi tertentu) gunakan salah satu operasi Pindahkan untuk berpindah dari rekaman ke rekaman. Untuk menemukan rekaman dalam kumpulan rekaman jenis tabel, panggil Seek fungsi anggota.

Jika rekaman yang cocok dengan kriteria tidak ditemukan, penunjuk rekaman saat ini tidak ditentukan, dan FindLast mengembalikan nol. Jika kumpulan rekaman berisi lebih dari satu rekaman yang memenuhi kriteria, FindFirst menemukan kemunculan pertama, FindNext menemukan kemunculan berikutnya setelah kejadian pertama, dan sebagainya.

Perhatian

Jika Anda mengedit rekaman saat ini, pastikan Anda menyimpan perubahan dengan memanggil Update fungsi anggota sebelum Anda pindah ke rekaman lain. Jika Anda berpindah ke rekaman lain tanpa memperbarui, perubahan Anda akan hilang tanpa peringatan.

Menggunakan salah satu operasi Temukan tidak sama dengan panggilan MoveFirst atau MoveNext, namun, yang hanya membuat rekaman pertama atau berikutnya saat ini tanpa menentukan kondisi. Anda dapat mengikuti operasi Temukan dengan operasi Pindahkan.

Ingatlah hal berikut saat menggunakan operasi Temukan:

  • Jika Find mengembalikan bukan nol, rekaman saat ini tidak ditentukan. Dalam hal ini, Anda harus memposisikan penunjuk rekaman saat ini kembali ke rekaman yang valid.

  • Anda tidak dapat menggunakan operasi Temukan dengan kumpulan rekaman jenis rekam jepret pengguliran khusus ke depan.

  • Anda harus menggunakan format tanggal AS (bulan-hari-tahun) ketika Anda mencari bidang yang berisi tanggal, bahkan jika Anda tidak menggunakan versi A.S. dari mesin database Microsoft Jet; jika tidak, rekaman yang cocok mungkin tidak ditemukan.

  • Saat bekerja dengan database ODBC dan dinaset besar, Anda mungkin menemukan bahwa menggunakan operasi Temukan lambat, terutama saat bekerja dengan kumpulan rekaman besar. Anda dapat meningkatkan performa dengan menggunakan kueri SQL dengan klausa ORDERBY atau WHERE yang disesuaikan, kueri parameter, atau CDaoQuerydef objek yang mengambil rekaman terindeks tertentu.

Untuk informasi terkait, lihat topik "FindFirst, FindLast, FindNext, FindPrevious Methods" di Bantuan DAO.

CDaoRecordset::FindNext

Panggil fungsi anggota ini untuk menemukan rekaman berikutnya yang cocok dengan kondisi tertentu.

BOOL FindNext(LPCTSTR lpszFilter);

Parameter

lpszFilter
Ekspresi string (seperti klausa WHERE dalam pernyataan SQL tanpa kata WHERE) yang digunakan untuk menemukan rekaman.

Tampilkan Nilai

Bukan nol jika rekaman yang cocok ditemukan, jika tidak, 0.

Keterangan

Fungsi FindNext anggota memulai pencariannya di rekaman saat ini dan mencari di akhir kumpulan rekaman.

Jika Anda ingin menyertakan semua rekaman dalam pencarian Anda (bukan hanya rekaman yang memenuhi kondisi tertentu) gunakan salah satu operasi Pindahkan untuk berpindah dari rekaman ke rekaman. Untuk menemukan rekaman dalam kumpulan rekaman jenis tabel, panggil Seek fungsi anggota.

Jika rekaman yang cocok dengan kriteria tidak ditemukan, penunjuk rekaman saat ini tidak ditentukan, dan FindNext mengembalikan nol. Jika kumpulan rekaman berisi lebih dari satu rekaman yang memenuhi kriteria, FindFirst menemukan kemunculan pertama, FindNext menemukan kemunculan berikutnya, dan sebagainya.

Perhatian

Jika Anda mengedit rekaman saat ini, pastikan Anda menyimpan perubahan dengan memanggil Update fungsi anggota sebelum Anda pindah ke rekaman lain. Jika Anda berpindah ke rekaman lain tanpa memperbarui, perubahan Anda akan hilang tanpa peringatan.

Menggunakan salah satu operasi Temukan tidak sama dengan panggilan MoveFirst atau MoveNext, namun, yang hanya membuat rekaman pertama atau berikutnya saat ini tanpa menentukan kondisi. Anda dapat mengikuti operasi Temukan dengan operasi Pindahkan.

Ingatlah hal berikut saat menggunakan operasi Temukan:

  • Jika Find mengembalikan bukan nol, rekaman saat ini tidak ditentukan. Dalam hal ini, Anda harus memposisikan penunjuk rekaman saat ini kembali ke rekaman yang valid.

  • Anda tidak dapat menggunakan operasi Temukan dengan kumpulan rekaman jenis rekam jepret pengguliran khusus ke depan.

  • Anda harus menggunakan format tanggal AS (bulan-hari-tahun) ketika Anda mencari bidang yang berisi tanggal, bahkan jika Anda tidak menggunakan versi A.S. dari mesin database Microsoft Jet; jika tidak, rekaman yang cocok mungkin tidak ditemukan.

  • Saat bekerja dengan database ODBC dan dinaset besar, Anda mungkin menemukan bahwa menggunakan operasi Temukan lambat, terutama saat bekerja dengan kumpulan rekaman besar. Anda dapat meningkatkan performa dengan menggunakan kueri SQL dengan klausa ORDERBY atau WHERE yang disesuaikan, kueri parameter, atau CDaoQuerydef objek yang mengambil rekaman terindeks tertentu.

Untuk informasi terkait, lihat topik "FindFirst, FindLast, FindNext, FindPrevious Methods" di Bantuan DAO.

CDaoRecordset::FindPrev

Panggil fungsi anggota ini untuk menemukan rekaman sebelumnya yang cocok dengan kondisi tertentu.

BOOL FindPrev(LPCTSTR lpszFilter);

Parameter

lpszFilter
Ekspresi string (seperti klausa WHERE dalam pernyataan SQL tanpa kata WHERE) yang digunakan untuk menemukan rekaman.

Tampilkan Nilai

Bukan nol jika rekaman yang cocok ditemukan, jika tidak, 0.

Keterangan

Fungsi FindPrev anggota memulai pencariannya di rekaman saat ini dan mencari mundur ke awal kumpulan rekaman.

Jika Anda ingin menyertakan semua rekaman dalam pencarian Anda (bukan hanya rekaman yang memenuhi kondisi tertentu) gunakan salah satu operasi Pindahkan untuk berpindah dari rekaman ke rekaman. Untuk menemukan rekaman dalam kumpulan rekaman jenis tabel, panggil Seek fungsi anggota.

Jika rekaman yang cocok dengan kriteria tidak ditemukan, penunjuk rekaman saat ini tidak ditentukan, dan FindPrev mengembalikan nol. Jika kumpulan rekaman berisi lebih dari satu rekaman yang memenuhi kriteria, FindFirst menemukan kemunculan pertama, FindNext menemukan kemunculan berikutnya, dan sebagainya.

Perhatian

Jika Anda mengedit rekaman saat ini, pastikan Anda menyimpan perubahan dengan memanggil Update fungsi anggota sebelum Anda pindah ke rekaman lain. Jika Anda berpindah ke rekaman lain tanpa memperbarui, perubahan Anda akan hilang tanpa peringatan.

Menggunakan salah satu operasi Temukan tidak sama dengan panggilan MoveFirst atau MoveNext, namun, yang hanya membuat rekaman pertama atau berikutnya saat ini tanpa menentukan kondisi. Anda dapat mengikuti operasi Temukan dengan operasi Pindahkan.

Ingatlah hal berikut saat menggunakan operasi Temukan:

  • Jika Find mengembalikan bukan nol, rekaman saat ini tidak ditentukan. Dalam hal ini, Anda harus memposisikan penunjuk rekaman saat ini kembali ke rekaman yang valid.

  • Anda tidak dapat menggunakan operasi Temukan dengan kumpulan rekaman jenis rekam jepret pengguliran khusus ke depan.

  • Anda harus menggunakan format tanggal AS (bulan-hari-tahun) ketika Anda mencari bidang yang berisi tanggal, bahkan jika Anda tidak menggunakan versi A.S. dari mesin database Microsoft Jet; jika tidak, rekaman yang cocok mungkin tidak ditemukan.

  • Saat bekerja dengan database ODBC dan dinaset besar, Anda mungkin menemukan bahwa menggunakan operasi Temukan lambat, terutama saat bekerja dengan kumpulan rekaman besar. Anda dapat meningkatkan performa dengan menggunakan kueri SQL dengan klausa ORDERBY atau WHERE yang disesuaikan, kueri parameter, atau CDaoQuerydef objek yang mengambil rekaman terindeks tertentu.

Untuk informasi terkait, lihat topik "FindFirst, FindLast, FindNext, FindPrevious Methods" di Bantuan DAO.

CDaoRecordset::GetAbsolutePosition

Mengembalikan jumlah rekaman rekaman rekaman objek saat ini.

long GetAbsolutePosition();

Tampilkan Nilai

Bilangan bulat dari 0 ke jumlah rekaman dalam kumpulan rekaman. Sesuai dengan posisi ordinal rekaman saat ini dalam kumpulan rekaman.

Keterangan

Nilai properti AbsolutePosition dari objek DAO yang mendasar berbasis nol; pengaturan 0 mengacu pada rekaman pertama dalam recordset. Anda dapat menentukan jumlah rekaman yang diisi dalam kumpulan rekaman dengan memanggil GetRecordCount. Panggilan GetRecordCount mungkin memakan waktu karena harus mengakses semua rekaman untuk menentukan jumlahnya.

Jika tidak ada rekaman saat ini, seperti ketika tidak ada rekaman dalam kumpulan rekaman, - 1 dikembalikan. Jika rekaman saat ini dihapus, nilai properti AbsolutePosition tidak ditentukan, dan MFC melemparkan pengecualian jika direferensikan. Untuk kumpulan rekaman jenis dynaset, rekaman baru ditambahkan ke akhir urutan.

Catatan

Properti ini tidak dimaksudkan untuk digunakan sebagai nomor rekaman pengganti. Marka buku masih merupakan cara yang direkomendasikan untuk mempertahankan dan kembali ke posisi tertentu dan merupakan satu-satunya cara untuk memosisikan rekaman saat ini di semua jenis objek recordset. Secara khusus, posisi rekaman tertentu berubah ketika rekaman sebelumnya dihapus. Juga tidak ada jaminan bahwa rekaman tertentu akan memiliki posisi absolut yang sama jika kumpulan rekaman dibuat kembali karena urutan rekaman individual dalam kumpulan rekaman tidak dijamin kecuali dibuat dengan pernyataan SQL menggunakan klausa ORDERBY .

Catatan

Fungsi anggota ini hanya berlaku untuk kumpulan rekaman jenis dynaset dan jenis rekam jepret.

Untuk informasi terkait, lihat topik "Properti AbsolutePosition" di Bantuan DAO.

CDaoRecordset::GetBookmark

Panggil fungsi anggota ini untuk mendapatkan nilai bookmark dalam rekaman tertentu.

COleVariant GetBookmark();

Tampilkan Nilai

Mengembalikan nilai yang mewakili marka buku pada rekaman saat ini.

Keterangan

Saat objek recordset dibuat atau dibuka, setiap rekamannya sudah memiliki marka buku unik jika mendukungnya. Panggil CanBookmark untuk menentukan apakah kumpulan rekaman mendukung marka buku.

Anda dapat menyimpan marka buku untuk rekaman saat ini dengan menetapkan nilai marka buku ke COleVariant objek. Untuk kembali dengan cepat ke rekaman tersebut kapan saja setelah berpindah ke rekaman lain, panggil SetBookmark dengan parameter yang sesuai dengan nilai COleVariant objek tersebut.

Catatan

Memanggil Kueri Ulang mengubah marka buku DAO.

Untuk informasi terkait, lihat topik "Properti Bookmark" di Bantuan DAO.

CDaoRecordset::GetCacheSize

Panggil fungsi anggota ini untuk mendapatkan jumlah rekaman yang di-cache.

long GetCacheSize();

Tampilkan Nilai

Nilai yang menentukan jumlah rekaman dalam kumpulan rekaman jenis dynaset yang berisi data yang akan di-cache secara lokal dari sumber data ODBC.

Keterangan

Penembolokan data meningkatkan performa aplikasi yang mengambil data dari server jarak jauh melalui objek recordset jenis dynaset. Cache adalah ruang dalam memori lokal yang menyimpan data yang terakhir diambil dari server jika data akan diminta lagi saat aplikasi sedang berjalan. Ketika data diminta, mesin database Microsoft Jet memeriksa cache untuk data yang diminta terlebih dahulu daripada mengambilnya dari server, yang membutuhkan lebih banyak waktu. Data yang tidak berasal dari sumber data ODBC tidak disimpan dalam cache.

Sumber data ODBC apa pun, seperti tabel terlampir, dapat memiliki cache lokal.

Untuk informasi terkait, lihat topik "CacheSize, CacheStart Properties" di Bantuan DAO.

CDaoRecordset::GetCacheStart

Panggil fungsi anggota ini untuk mendapatkan nilai bookmark dari rekaman pertama dalam kumpulan rekaman yang akan di-cache.

COleVariant GetCacheStart();

Tampilkan Nilai

COleVariant yang menentukan bookmark rekaman pertama dalam kumpulan rekaman yang akan di-cache.

Keterangan

Mesin database Microsoft Jet meminta rekaman dalam rentang cache dari cache, dan meminta rekaman di luar rentang cache dari server.

Catatan

Rekaman yang diambil dari cache tidak mencerminkan perubahan yang dibuat secara bersamaan ke data sumber oleh pengguna lain.

Untuk informasi terkait, lihat topik "CacheSize, CacheStart Properties" di Bantuan DAO.

CDaoRecordset::GetCurrentIndex

Panggil fungsi anggota ini untuk menentukan indeks yang saat ini digunakan dalam objek tipe CDaoRecordset tabel terindeks.

CString GetCurrentIndex();

Tampilkan Nilai

Yang CString berisi nama indeks yang saat ini digunakan dengan kumpulan rekaman jenis tabel. Mengembalikan string kosong jika tidak ada indeks yang ditetapkan.

Keterangan

Indeks ini adalah dasar untuk mengurutkan rekaman dalam kumpulan rekaman jenis tabel, dan digunakan oleh fungsi Cari anggota untuk menemukan rekaman.

Objek CDaoRecordset dapat memiliki lebih dari satu indeks tetapi hanya dapat menggunakan satu indeks pada satu waktu (meskipun objek CDaoTableDef mungkin memiliki beberapa indeks yang ditentukan di dalamnya).

Untuk informasi terkait, lihat topik "Objek Indeks" dan definisi "indeks saat ini" di Bantuan DAO.

CDaoRecordset::GetDateCreated

Panggil fungsi anggota ini untuk mengambil tanggal dan waktu tabel dasar dibuat.

COleDateTime GetDateCreated();

Tampilkan Nilai

Objek COleDateTime yang berisi tanggal dan waktu tabel dasar dibuat.

Keterangan

Pengaturan tanggal dan waktu berasal dari komputer tempat tabel dasar dibuat.

Untuk informasi terkait, lihat topik "DateCreated, LastUpdated Properties" di Bantuan DAO.

CDaoRecordset::GetDateLastUpdated

Panggil fungsi anggota ini untuk mengambil tanggal dan waktu skema terakhir diperbarui.

COleDateTime GetDateLastUpdated();

Tampilkan Nilai

Objek COleDateTime yang berisi tanggal dan waktu struktur tabel dasar (skema) terakhir diperbarui.

Keterangan

Pengaturan tanggal dan waktu berasal dari komputer tempat struktur tabel dasar (skema) terakhir diperbarui.

Untuk informasi terkait, lihat topik "DateCreated, LastUpdated Properties" di Bantuan DAO.

CDaoRecordset::GetDefaultDBName

Panggil fungsi anggota ini untuk menentukan nama database untuk kumpulan rekaman ini.

virtual CString GetDefaultDBName();

Tampilkan Nilai

CString yang berisi jalur dan nama database tempat kumpulan rekaman ini berasal.

Keterangan

Jika kumpulan rekaman dibuat tanpa penunjuk ke CDaoDatabase, maka jalur ini digunakan oleh kumpulan rekaman untuk membuka database default. Secara default, fungsi ini mengembalikan string kosong. Ketika ClassWizard memperoleh himpunan rekaman baru dari CDaoRecordset, itu akan membuat fungsi ini untuk Anda.

Contoh berikut mengilustrasikan penggunaan garis miring terbalik ganda (\\) dalam string, seperti yang diperlukan agar string ditafsirkan dengan benar.

CString CCustSet::GetDefaultDBName()
{
   return _T("c:\\mydir\\datasrc.mdb");
}

CDaoRecordset::GetDefaultSQL

Kerangka kerja memanggil fungsi anggota ini untuk mendapatkan pernyataan SQL default tempat kumpulan rekaman didasarkan.

virtual CString GetDefaultSQL();

Tampilkan Nilai

CString yang berisi pernyataan SQL default.

Keterangan

Ini mungkin nama tabel atau pernyataan SQL SELECT .

Anda secara tidak langsung menentukan pernyataan SQL default dengan mendeklarasikan kelas recordset Anda dengan ClassWizard, dan ClassWizard melakukan tugas ini untuk Anda.

Jika Anda meneruskan string SQL null ke Buka, maka fungsi ini dipanggil untuk menentukan nama tabel atau SQL untuk kumpulan rekaman Anda.

CDaoRecordset::GetEditMode

Panggil fungsi anggota ini untuk menentukan status pengeditan, yang merupakan salah satu nilai berikut:

short GetEditMode();

Tampilkan Nilai

Mengembalikan nilai yang menunjukkan status pengeditan untuk rekaman saat ini.

Keterangan

Nilai Deskripsi
dbEditNone Tidak ada operasi pengeditan yang sedang berlangsung.
dbEditInProgress Edit telah dipanggil.
dbEditAdd AddNew telah dipanggil.

Untuk informasi terkait, lihat topik "Edit Properti EditMode" di Bantuan DAO.

CDaoRecordset::GetFieldCount

Panggil fungsi anggota ini untuk mengambil jumlah bidang (kolom) yang ditentukan dalam kumpulan rekaman.

short GetFieldCount();

Tampilkan Nilai

Jumlah bidang dalam kumpulan rekaman.

Keterangan

Untuk informasi terkait, lihat topik "Hitung Properti" di Bantuan DAO.

CDaoRecordset::GetFieldInfo

Panggil fungsi anggota ini untuk mendapatkan informasi tentang bidang dalam kumpulan rekaman.

void GetFieldInfo(
    int nIndex,
    CDaoFieldInfo& fieldinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetFieldInfo(
    LPCTSTR lpszName,
    CDaoFieldInfo& fieldinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Parameter

nIndex
Indeks berbasis nol dari bidang yang telah ditentukan sebelumnya di kumpulan Bidang himpunan rekaman, untuk pencarian menurut indeks.

fieldinfo
Referensi ke struktur CDaoFieldInfo .

dwInfoOptions
Opsi yang menentukan informasi mana tentang kumpulan rekaman yang akan diambil. Opsi yang tersedia tercantum di sini bersama dengan apa yang menyebabkan fungsi kembali. Untuk performa terbaik, ambil hanya tingkat informasi yang Anda butuhkan:

  • AFX_DAO_PRIMARY_INFO (Default) Nama, Jenis, Ukuran, Atribut

  • AFX_DAO_SECONDARY_INFO Informasi utama, plus: Posisi Ordinal, Diperlukan, Izinkan Panjang Nol, Susunan Susunan, Nama Asing, Bidang Sumber, Tabel Sumber

  • AFX_DAO_ALL_INFO Informasi primer dan sekunder, plus: Nilai Default, Aturan Validasi, Teks Validasi

lpszName
Nama bidang.

Keterangan

Satu versi fungsi memungkinkan Anda mencari bidang menurut indeks. Versi lainnya memungkinkan Anda mencari bidang berdasarkan nama.

Untuk deskripsi informasi yang dikembalikan, lihat struktur CDaoFieldInfo . Struktur ini memiliki anggota yang sesuai dengan item informasi yang tercantum di atas dalam deskripsi dwInfoOptions. Saat Anda meminta informasi di satu tingkat, Anda juga mendapatkan informasi untuk tingkat sebelumnya.

Untuk informasi terkait, lihat topik "Properti Atribut" di Bantuan DAO.

CDaoRecordset::GetFieldValue

Panggil fungsi anggota ini untuk mengambil data dalam kumpulan rekaman.

virtual void GetFieldValue(
    LPCTSTR lpszName,
    COleVariant& varValue);

virtual void GetFieldValue(
    int nIndex,
    COleVariant& varValue);

virtual COleVariant GetFieldValue(LPCTSTR lpszName);
virtual COleVariant GetFieldValue(int nIndex);

Parameter

lpszName
Penunjuk ke string yang berisi nama bidang.

varValue
Referensi ke COleVariant objek yang akan menyimpan nilai bidang.

nIndex
Indeks berbasis nol bidang dalam kumpulan Bidang himpunan rekaman, untuk pencarian menurut indeks.

Tampilkan Nilai

Dua versi GetFieldValue yang mengembalikan nilai mengembalikan objek COleVariant yang berisi nilai bidang.

Keterangan

Anda dapat mencari bidang berdasarkan nama atau berdasarkan posisi ordinal.

Catatan

Lebih efisien untuk memanggil salah satu versi fungsi anggota ini yang mengambil COleVariant referensi objek sebagai parameter, daripada memanggil versi yang mengembalikan COleVariant objek. Versi terakhir dari fungsi ini disimpan untuk kompatibilitas mundur.

Gunakan GetFieldValue dan SetFieldValue untuk mengikat bidang secara dinamis pada waktu proses daripada mengikat kolom secara statis menggunakan mekanisme DoFieldExchange .

GetFieldValueDoFieldExchange dan mekanisme dapat dikombinasikan untuk meningkatkan performa. Misalnya, gunakan GetFieldValue untuk mengambil nilai yang hanya Anda butuhkan sesuai permintaan, dan tetapkan panggilan tersebut ke tombol "Informasi Lebih Lanjut" di antarmuka.

Untuk informasi terkait, lihat topik "Objek Bidang" dan "Properti Nilai" di Bantuan DAO.

CDaoRecordset::GetIndexCount

Panggil fungsi anggota ini untuk menentukan jumlah indeks yang tersedia pada kumpulan rekaman jenis tabel.

short GetIndexCount();

Tampilkan Nilai

Jumlah indeks dalam kumpulan rekaman jenis tabel.

Keterangan

GetIndexCount berguna untuk mengulangi semua indeks dalam kumpulan rekaman. Untuk tujuan itu, gunakan GetIndexCount bersama dengan GetIndexInfo. Jika Anda memanggil fungsi anggota ini pada kumpulan rekaman jenis dynaset atau jenis rekam jepret, MFC akan memberikan pengecualian.

Untuk informasi terkait, lihat topik "Properti Atribut" di Bantuan DAO.

CDaoRecordset::GetIndexInfo

Panggil fungsi anggota ini untuk mendapatkan berbagai jenis informasi tentang indeks yang ditentukan dalam tabel dasar yang mendasar kumpulan rekaman.

void GetIndexInfo(
    int nIndex,
    CDaoIndexInfo& indexinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetIndexInfo(
    LPCTSTR lpszName,
    CDaoIndexInfo& indexinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Parameter

nIndex
Indeks berbasis nol dalam kumpulan Indeks tabel, untuk pencarian berdasarkan posisi numerik.

indexinfo
Referensi ke struktur CDaoIndexInfo .

dwInfoOptions
Opsi yang menentukan informasi mana tentang indeks yang akan diambil. Opsi yang tersedia tercantum di sini bersama dengan apa yang menyebabkan fungsi kembali. Untuk performa terbaik, ambil hanya tingkat informasi yang Anda butuhkan:

  • AFX_DAO_PRIMARY_INFO (Default) Nama, Info Bidang, Bidang

  • AFX_DAO_SECONDARY_INFO Informasi utama, plus: Primer, Unik, Berkluster, IgnoreNulls, Diperlukan, Asing

  • AFX_DAO_ALL_INFO Informasi primer dan sekunder, plus: Jumlah Yang Berbeda

lpszName
Penunjuk ke nama objek indeks, untuk pencarian berdasarkan nama.

Keterangan

Satu versi fungsi memungkinkan Anda mencari indeks berdasarkan posisinya dalam koleksi. Versi lainnya memungkinkan Anda mencari indeks berdasarkan nama.

Untuk deskripsi informasi yang dikembalikan, lihat struktur CDaoIndexInfo . Struktur ini memiliki anggota yang sesuai dengan item informasi yang tercantum di atas dalam deskripsi dwInfoOptions. Saat Anda meminta informasi di satu tingkat, Anda juga mendapatkan informasi untuk tingkat sebelumnya.

Untuk informasi terkait, lihat topik "Properti Atribut" di Bantuan DAO.

CDaoRecordset::GetLastModifiedBookmark

Panggil fungsi anggota ini untuk mengambil marka buku rekaman yang terakhir ditambahkan atau diperbarui.

COleVariant GetLastModifiedBookmark();

Tampilkan Nilai

COleVariant yang berisi marka buku yang menunjukkan rekaman yang terakhir ditambahkan atau diubah.

Keterangan

Saat objek recordset dibuat atau dibuka, setiap rekamannya sudah memiliki marka buku unik jika mendukungnya. Panggil GetBookmark untuk menentukan apakah recordset mendukung marka buku. Jika kumpulan rekaman tidak mendukung marka buku, maka CDaoException akan dilemparkan.

Saat Anda menambahkan rekaman, rekaman akan muncul di akhir kumpulan rekaman, dan bukan rekaman saat ini. Untuk membuat rekaman baru saat ini, panggil GetLastModifiedBookmark lalu panggil SetBookmark untuk kembali ke rekaman yang baru ditambahkan.

Untuk informasi terkait, lihat topik "Properti LastModified" di Bantuan DAO.

CDaoRecordset::GetLockingMode

Panggil fungsi anggota ini untuk menentukan jenis penguncian yang berlaku untuk kumpulan rekaman.

BOOL GetLockingMode();

Tampilkan Nilai

Bukan nol jika jenis penguncian pesimis, jika tidak, 0 untuk penguncian rekaman optimis.

Keterangan

Saat penguncian pesimis berlaku, halaman data yang berisi rekaman yang Anda edit dikunci segera setelah Anda memanggil fungsi Edit anggota. Halaman tidak terkunci saat Anda memanggil fungsi Perbarui atau Tutup anggota atau operasi Pindahkan atau Temukan.

Saat penguncian optimis berlaku, halaman data yang berisi rekaman hanya dikunci saat rekaman sedang diperbarui dengan Update fungsi anggota.

Saat bekerja dengan sumber data ODBC, mode penguncian selalu optimis.

Untuk informasi terkait, lihat topik "Properti LockEdits" dan "Perilaku Penguncian di Aplikasi Multipengguna" di Bantuan DAO.

CDaoRecordset::GetName

Panggil fungsi anggota ini untuk mengambil nama kumpulan rekaman.

CString GetName();

Tampilkan Nilai

yang CString berisi nama kumpulan rekaman.

Keterangan

Nama kumpulan rekaman harus dimulai dengan huruf dan dapat berisi maksimal 40 karakter. Ini dapat mencakup angka dan karakter garis bawah tetapi tidak dapat menyertakan tanda baca atau spasi.

Untuk informasi terkait, lihat topik "Properti Nama" di Bantuan DAO.

CDaoRecordset::GetParamValue

Panggil fungsi anggota ini untuk mengambil nilai saat ini dari parameter yang ditentukan yang disimpan dalam objek DAOParameter yang mendasar.

virtual COleVariant GetParamValue(int nIndex);
virtual COleVariant GetParamValue(LPCTSTR lpszName);

Parameter

nIndex
Posisi numerik parameter dalam objek DAOParameter yang mendasar.

lpszName
Nama parameter yang nilainya Anda inginkan.

Tampilkan Nilai

Objek kelas COleVariant yang berisi nilai parameter.

Keterangan

Anda dapat mengakses parameter baik berdasarkan nama atau dengan posisi numeriknya dalam koleksi.

Untuk informasi terkait, lihat topik "Objek Parameter" di Bantuan DAO.

CDaoRecordset::GetPercentPosition

Saat bekerja dengan kumpulan rekaman jenis dynaset atau jenis rekam jepret, jika Anda memanggil GetPercentPosition sebelum mengisi set rekaman sepenuhnya, jumlah pergerakan relatif terhadap jumlah rekaman yang diakses seperti yang ditunjukkan dengan memanggil GetRecordCount.

float GetPercentPosition();

Tampilkan Nilai

Angka antara 0 dan 100 yang menunjukkan perkiraan lokasi rekaman saat ini di objek kumpulan rekaman berdasarkan persentase rekaman dalam kumpulan rekaman.

Keterangan

Anda dapat berpindah ke rekaman terakhir dengan memanggil MoveLast untuk menyelesaikan populasi semua kumpulan rekaman, tetapi ini mungkin memakan waktu yang signifikan.

Anda dapat memanggil GetPercentPosition ketiga jenis objek recordset, termasuk tabel tanpa indeks. Namun, Anda tidak dapat memanggil GetPercentPosition rekam jepret gulir khusus penerusan, atau pada kumpulan rekaman yang dibuka dari kueri pass-through terhadap database eksternal. Jika tidak ada rekaman saat ini, atau rekaman saat ini telah dihapus, akan CDaoException dilemparkan.

Untuk informasi terkait, lihat topik "Properti PersenPosisi" di Bantuan DAO.

CDaoRecordset::GetRecordCount

Panggil fungsi anggota ini untuk mengetahui berapa banyak rekaman dalam kumpulan rekaman yang telah diakses.

long GetRecordCount();

Tampilkan Nilai

Mengembalikan jumlah rekaman yang diakses dalam objek recordset.

Keterangan

GetRecordCount tidak menunjukkan berapa banyak rekaman yang terkandung dalam kumpulan rekaman jenis dynaset atau jenis rekam jepret hingga semua rekaman diakses. Panggilan fungsi anggota ini mungkin membutuhkan waktu yang cukup lama untuk diselesaikan.

Setelah rekaman terakhir diakses, nilai pengembalian menunjukkan jumlah total rekaman yang tidak dihapus dalam kumpulan rekaman. Untuk memaksa rekaman terakhir diakses, panggil MoveLast fungsi atau FindLast anggota untuk kumpulan rekaman. Anda juga bisa menggunakan Jumlah SQL untuk menentukan perkiraan jumlah rekaman yang akan dikembalikan kueri Anda.

Saat aplikasi Anda menghapus rekaman dalam kumpulan rekaman jenis dynaset, nilai GetRecordCount pengembalian berkurang. Namun, rekaman yang dihapus oleh pengguna lain tidak tercermin oleh GetRecordCount sampai rekaman saat ini diposisikan ke rekaman yang dihapus. Jika Anda menjalankan transaksi yang memengaruhi jumlah rekaman dan kemudian mengembalikan transaksi, GetRecordCount tidak akan mencerminkan jumlah rekaman yang tersisa.

Nilai GetRecordCount dari kumpulan rekaman jenis rekam jepret tidak dipengaruhi oleh perubahan dalam tabel yang mendasar.

Nilai GetRecordCount dari kumpulan rekaman jenis tabel mencerminkan perkiraan jumlah rekaman dalam tabel dan langsung terpengaruh saat rekaman tabel ditambahkan dan dihapus.

Kumpulan rekaman tanpa rekaman mengembalikan nilai 0. Saat bekerja dengan tabel terlampir atau database ODBC, GetRecordCount selalu mengembalikan - 1. Memanggil Requery fungsi anggota pada kumpulan rekaman mengatur ulang nilai GetRecordCount sama seperti jika kueri dijalankan kembali.

Untuk informasi terkait, lihat topik "Properti RecordCount" di Bantuan DAO.

CDaoRecordset::GetSQL

Panggil fungsi anggota ini untuk mendapatkan pernyataan SQL yang digunakan untuk memilih rekaman recordset saat dibuka.

CString GetSQL() const;

Tampilkan Nilai

Yang CString berisi pernyataan SQL.

Keterangan

Ini umumnya akan menjadi pernyataan SQL SELECT .

String yang dikembalikan biasanya GetSQL berbeda dari string apa pun yang mungkin telah Anda teruskan ke recordset dalam parameter lpszSQL ke fungsi Anggota terbuka . Ini karena kumpulan rekaman membuat pernyataan SQL lengkap berdasarkan apa yang Anda teruskan ke Open, apa yang Anda tentukan dengan ClassWizard, dan apa yang mungkin telah Anda tentukan dalam anggota data m_strFilter dan m_strSort .

Catatan

Panggil fungsi anggota ini hanya setelah memanggil Open.

Untuk informasi terkait, lihat topik "Properti SQL" di Bantuan DAO.

CDaoRecordset::GetType

Panggil fungsi anggota ini setelah membuka kumpulan rekaman untuk menentukan jenis objek recordset.

short GetType();

Tampilkan Nilai

Salah satu nilai berikut yang menunjukkan jenis kumpulan rekaman:

  • dbOpenTable Kumpulan rekaman jenis tabel

  • dbOpenDynaset Kumpulan rekaman jenis Dynaset

  • dbOpenSnapshot Kumpulan rekaman jenis rekam jepret

Keterangan

Untuk informasi terkait, lihat topik "Ketik Properti" di Bantuan DAO.

CDaoRecordset::GetValidationRule

Panggil fungsi anggota ini untuk menentukan aturan yang digunakan untuk memvalidasi data.

CString GetValidationRule();

Tampilkan Nilai

Objek CString yang berisi nilai yang memvalidasi data dalam rekaman saat diubah atau ditambahkan ke tabel.

Keterangan

Aturan ini berbasis teks, dan diterapkan setiap kali tabel yang mendasarinya diubah. Jika data tidak legal, MFC melemparkan pengecualian. Pesan kesalahan yang dikembalikan adalah teks properti ValidationText dari objek bidang yang mendasar, jika ditentukan, atau teks ekspresi yang ditentukan oleh properti ValidationRule dari objek bidang yang mendasar. Anda dapat memanggil GetValidationText untuk mendapatkan teks pesan kesalahan.

Misalnya, bidang dalam rekaman yang memerlukan hari dalam sebulan mungkin memiliki aturan validasi seperti "HARI ANTARA 1 DAN 31."

Untuk informasi terkait, lihat topik "ValidationRule Property" di Bantuan DAO.

CDaoRecordset::GetValidationText

Panggil fungsi anggota ini untuk mengambil teks properti ValidationText dari objek bidang yang mendasar.

CString GetValidationText();

Tampilkan Nilai

Objek CString yang berisi teks pesan yang ditampilkan jika nilai bidang tidak memenuhi aturan validasi objek bidang yang mendasarinya.

Keterangan

Untuk informasi terkait, lihat topik "ValidationText Property" di Bantuan DAO.

CDaoRecordset::IsBOF

Panggil fungsi anggota ini sebelum Anda menggulir dari rekaman untuk merekam untuk mempelajari apakah Anda telah pergi sebelum rekaman pertama dari kumpulan rekaman.

BOOL IsBOF() const;

Tampilkan Nilai

Bukan nol jika kumpulan rekaman tidak berisi rekaman atau jika Anda telah menggulir mundur sebelum rekaman pertama; jika tidak, 0.

Keterangan

Anda juga dapat memanggil IsBOF bersama untuk IsEOF menentukan apakah kumpulan rekaman berisi rekaman apa pun atau kosong. Segera setelah Anda memanggil Open, jika kumpulan rekaman tidak berisi rekaman, IsBOF mengembalikan nonzero. Saat Anda membuka kumpulan rekaman yang memiliki setidaknya satu rekaman, rekaman pertama adalah rekaman saat ini dan IsBOF mengembalikan 0.

Jika rekaman pertama adalah rekaman saat ini dan Anda memanggil MovePrev, IsBOF kemudian akan mengembalikan nonzero. Jika IsBOF mengembalikan nonzero dan Anda memanggil MovePrev, pengecualian akan dilemparkan. Jika IsBOF mengembalikan nonzero, rekaman saat ini tidak ditentukan, dan tindakan apa pun yang memerlukan rekaman saat ini akan menghasilkan pengecualian.

Efek metode tertentu pada IsBOF dan IsEOF pengaturan:

  • Memanggil Open* secara internal membuat rekaman pertama dalam recordset rekaman saat ini dengan memanggil MoveFirst. Oleh karena itu, memanggil Open sekumpulan catatan kosong menyebabkan IsBOF dan IsEOF mengembalikan nonzero. (Lihat tabel berikut untuk perilaku gagal MoveFirst atau MoveLast panggilan.)

  • Semua operasi Pemindahan yang berhasil menemukan rekaman menyebabkan dan IsBOFIsEOF mengembalikan 0.

  • Panggilan AddNew diikuti dengan Update panggilan yang berhasil menyisipkan rekaman baru akan menyebabkan IsBOF pengembalian 0, tetapi hanya jika IsEOF sudah bukan nol. IsEOF Status akan selalu tetap tidak berubah. Seperti yang didefinisikan oleh mesin database Microsoft Jet, penunjuk rekaman saat ini dari kumpulan rekaman kosong berada di akhir file, sehingga rekaman baru apa pun disisipkan setelah rekaman saat ini.

  • Setiap Delete panggilan, bahkan jika menghapus satu-satunya rekaman yang tersisa dari kumpulan rekaman, tidak akan mengubah nilai IsBOF atau IsEOF.

Tabel ini menunjukkan operasi Pemindahan mana yang diizinkan dengan kombinasi yang berbeda dari IsBOF/ IsEOF.

Provinsi MoveFirst, MoveLast MovePrev,

Pindahkan < 0
Pindahkan 0 MoveNext,

Pindahkan > 0
IsBOF=bukan nol,

IsEOF=0
Diizinkan Pengecualian Pengecualian Diizinkan
IsBOF=0,

IsEOF=bukan nol
Diizinkan Diizinkan Pengecualian Pengecualian
Keduanya bukan nol Pengecualian Pengecualian Pengecualian Pengecualian
Keduanya 0 Diizinkan Diizinkan Diizinkan Diizinkan

Mengizinkan operasi Pindahkan tidak berarti bahwa operasi akan berhasil menemukan rekaman. Ini hanya menunjukkan bahwa upaya untuk melakukan operasi Pemindahan yang ditentukan diizinkan dan tidak akan menghasilkan pengecualian. Nilai IsBOF fungsi anggota dan IsEOF dapat berubah sebagai akibat dari upaya pemindahan.

Efek Operasi pemindahan yang tidak menemukan rekaman pada nilai IsBOF dan IsEOF pengaturan diperlihatkan dalam tabel berikut.

Operasional IsBOF IsEOF
MoveFirst, MoveLast Bukan nol Bukan nol
Move 0 Tidak Ada Perubahan Tidak Ada Perubahan
MovePrev, Move< 0 Bukan nol Tidak Ada Perubahan
MoveNext, Move> 0 Tidak Ada Perubahan Bukan nol

Untuk informasi terkait, lihat topik "BOF, Properti EOF" di Bantuan DAO.

CDaoRecordset::IsDeleted

Panggil fungsi anggota ini untuk menentukan apakah rekaman saat ini telah dihapus.

BOOL IsDeleted() const;

Tampilkan Nilai

Bukan nol jika kumpulan rekaman diposisikan pada rekaman yang dihapus; jika tidak, 0.

Keterangan

Jika Anda menggulir ke rekaman dan IsDeleted mengembalikan TRUE (bukan nol), maka Anda harus menggulir ke rekaman lain sebelum anda dapat melakukan operasi recordset lainnya.

Catatan

Anda tidak perlu memeriksa status yang dihapus untuk rekaman dalam rekam jepret atau kumpulan rekaman jenis tabel. Karena rekaman tidak dapat dihapus dari rekam jepret, tidak perlu memanggil IsDeleted. Untuk kumpulan rekaman jenis tabel, rekaman yang dihapus benar-benar dihapus dari kumpulan rekaman. Setelah rekaman dihapus, baik oleh Anda, pengguna lain, atau di kumpulan rekaman lain, Anda tidak dapat menggulir kembali ke rekaman tersebut. Oleh karena itu, tidak perlu memanggil IsDeleted.

Saat Anda menghapus rekaman dari dynaset, rekaman dihapus dari kumpulan rekaman dan Anda tidak dapat menggulir kembali ke rekaman tersebut. Namun, jika rekaman dalam dynaset dihapus baik oleh pengguna lain atau di kumpulan rekaman lain berdasarkan tabel yang sama, IsDeleted akan mengembalikan TRUE saat Anda kemudian menggulir ke rekaman tersebut.

Untuk informasi terkait, lihat topik "Hapus Metode", "Properti LastModified", dan "Properti EditMode" di Bantuan DAO.

CDaoRecordset::IsEOF

Panggil fungsi anggota ini saat Anda menggulir dari rekaman ke rekaman untuk mempelajari apakah Anda telah melampaui rekaman terakhir dari kumpulan rekaman.

BOOL IsEOF() const;

Tampilkan Nilai

Bukan nol jika kumpulan rekaman tidak berisi rekaman atau jika Anda telah menggulir di luar rekaman terakhir; jika tidak, 0.

Keterangan

Anda juga dapat memanggil IsEOF untuk menentukan apakah kumpulan rekaman berisi rekaman apa pun atau kosong. Segera setelah Anda memanggil Open, jika kumpulan rekaman tidak berisi rekaman, IsEOF mengembalikan nonzero. Saat Anda membuka kumpulan rekaman yang memiliki setidaknya satu rekaman, rekaman pertama adalah rekaman saat ini dan IsEOF mengembalikan 0.

Jika rekaman terakhir adalah rekaman saat ini saat Anda memanggil MoveNext, IsEOF kemudian akan mengembalikan nonzero. Jika IsEOF mengembalikan nonzero dan Anda memanggil MoveNext, pengecualian akan dilemparkan. Jika IsEOF mengembalikan nonzero, rekaman saat ini tidak ditentukan, dan tindakan apa pun yang memerlukan rekaman saat ini akan menghasilkan pengecualian.

Efek metode tertentu pada IsBOF dan IsEOF pengaturan:

  • Memanggil Open secara internal membuat rekaman pertama dalam recordset rekaman saat ini dengan memanggil MoveFirst. Oleh karena itu, memanggil Open sekumpulan catatan kosong menyebabkan IsBOF dan IsEOF mengembalikan nonzero. (Lihat tabel berikut untuk perilaku panggilan yang gagal MoveFirst .)

  • Semua operasi Pemindahan yang berhasil menemukan rekaman menyebabkan dan IsBOFIsEOF mengembalikan 0.

  • Panggilan AddNew diikuti dengan Update panggilan yang berhasil menyisipkan rekaman baru akan menyebabkan IsBOF pengembalian 0, tetapi hanya jika IsEOF sudah bukan nol. IsEOF Status akan selalu tetap tidak berubah. Seperti yang didefinisikan oleh mesin database Microsoft Jet, penunjuk rekaman saat ini dari kumpulan rekaman kosong berada di akhir file, sehingga rekaman baru apa pun disisipkan setelah rekaman saat ini.

  • Setiap Delete panggilan, bahkan jika menghapus satu-satunya rekaman yang tersisa dari kumpulan rekaman, tidak akan mengubah nilai IsBOF atau IsEOF.

Tabel ini menunjukkan operasi Pemindahan mana yang diizinkan dengan kombinasi yang berbeda dari IsBOF/ IsEOF.

Provinsi MoveFirst, MoveLast MovePrev,

Pindahkan < 0
Pindahkan 0 MoveNext,

Pindahkan > 0
IsBOF=bukan nol,

IsEOF=0
Diizinkan Pengecualian Pengecualian Diizinkan
IsBOF=0,

IsEOF=bukan nol
Diizinkan Diizinkan Pengecualian Pengecualian
Keduanya bukan nol Pengecualian Pengecualian Pengecualian Pengecualian
Keduanya 0 Diizinkan Diizinkan Diizinkan Diizinkan

Mengizinkan operasi Pindahkan tidak berarti bahwa operasi akan berhasil menemukan rekaman. Ini hanya menunjukkan bahwa upaya untuk melakukan operasi Pemindahan yang ditentukan diizinkan dan tidak akan menghasilkan pengecualian. Nilai IsBOF fungsi anggota dan IsEOF dapat berubah sebagai akibat dari upaya Pemindahan.

Efek Operasi pemindahan yang tidak menemukan rekaman pada nilai IsBOF dan IsEOF pengaturan diperlihatkan dalam tabel berikut.

Operasional IsBOF IsEOF
MoveFirst, MoveLast Bukan nol Bukan nol
Move 0 Tidak Ada Perubahan Tidak Ada Perubahan
MovePrev, Move< 0 Bukan nol Tidak Ada Perubahan
MoveNext, Move> 0 Tidak Ada Perubahan Bukan nol

Untuk informasi terkait, lihat topik "BOF, Properti EOF" di Bantuan DAO.

CDaoRecordset::IsFieldDirty

Panggil fungsi anggota ini untuk menentukan apakah anggota data bidang yang ditentukan dari dynaset telah ditandai sebagai "kotor" (diubah).

BOOL IsFieldDirty(void* pv);

Parameter

Pv
Penunjuk ke anggota data bidang yang statusnya ingin Anda periksa, atau NULL untuk menentukan apakah salah satu bidang kotor.

Tampilkan Nilai

Bukan nol jika anggota data bidang yang ditentukan ditandai kotor; jika tidak, 0.

Keterangan

Data di semua anggota data bidang kotor akan ditransfer ke rekaman pada sumber data ketika rekaman saat ini diperbarui oleh panggilan ke Update fungsi CDaoRecordset anggota (mengikuti panggilan ke Edit atau AddNew). Dengan pengetahuan ini, Anda dapat mengambil langkah-langkah lebih lanjut, seperti membatalkan pengelompokan anggota data bidang untuk menandai kolom sehingga tidak akan ditulis ke sumber data.

IsFieldDirty diimplementasikan melalui DoFieldExchange.

CDaoRecordset::IsFieldNull

Panggil fungsi anggota ini untuk menentukan apakah anggota data bidang yang ditentukan dari kumpulan rekaman telah ditandai sebagai Null.

BOOL IsFieldNull(void* pv);

Parameter

Pv
Penunjuk ke anggota data bidang yang statusnya ingin Anda periksa, atau NULL untuk menentukan apakah salah satu bidang null.

Tampilkan Nilai

Bukan nol jika anggota data bidang yang ditentukan ditandai sebagai Null; jika tidak, 0.

Keterangan

(Dalam terminologi database, Null berarti "tidak memiliki nilai" dan tidak sama dengan NULL di C++.) Jika anggota data bidang ditandai sebagai Null, itu ditafsirkan sebagai kolom rekaman saat ini yang tidak ada nilainya.

Catatan

Dalam situasi tertentu, penggunaan IsFieldNull dapat tidak efisien, seperti yang diilustrasikan contoh kode berikut:

COleVariant varValue;
void *pField = &(rs.m_Age);
int nField = 2;

// this code is inefficient because data
// must be retrieved for both IsFieldNull
// and GetFieldValue
if (!rs.IsFieldNull(pField))
   rs.GetFieldValue(nField, varValue);

// this code is more efficient
rs.GetFieldValue(nField, varValue);
if (varValue.vt == VT_NULL)
   varValue.Attach(varNewVal); // do something

Catatan

Jika Anda menggunakan pengikatan rekaman dinamis, tanpa berasal dari CDaoRecordset, pastikan untuk menggunakan VT_NULL seperti yang ditunjukkan dalam contoh.

CDaoRecordset::IsFieldNullable

Panggil fungsi anggota ini untuk menentukan apakah anggota data bidang yang ditentukan "dapat diubah ke null" (dapat diatur ke nilai Null; C++ NULL tidak sama dengan Null, yang, dalam terminologi database, berarti "tidak memiliki nilai").

BOOL IsFieldNullable(void* pv);

Parameter

Pv
Penunjuk ke anggota data bidang yang statusnya ingin Anda periksa, atau NULL untuk menentukan apakah salah satu bidang null.

Tampilkan Nilai

Bukan nol jika anggota data bidang yang ditentukan dapat dibuat Null; jika tidak, 0.

Keterangan

Bidang yang tidak boleh Null harus memiliki nilai. Jika Anda mencoba mengatur bidang tersebut ke Null saat menambahkan atau memperbarui rekaman, sumber data menolak penambahan atau pembaruan, dan Update akan memunculkan pengecualian. Pengecualian terjadi ketika Anda memanggil Update, bukan saat Anda memanggil SetFieldNull.

CDaoRecordset::IsOpen

Panggil fungsi anggota ini untuk menentukan apakah kumpulan rekaman terbuka.

BOOL IsOpen() const;

Tampilkan Nilai

Bukan nol jika fungsi objek atau Requery anggota recordset Open sebelumnya telah dipanggil dan kumpulan rekaman belum ditutup; jika tidak, 0.

Keterangan

CDaoRecordset::m_bCheckCacheForDirtyFields

Berisi bendera yang menunjukkan apakah bidang yang di-cache secara otomatis ditandai sebagai kotor (diubah) dan Null.

Keterangan

Bendera default ke TRUE. Pengaturan dalam anggota data ini mengontrol seluruh mekanisme buffering ganda. Jika Anda mengatur bendera ke TRUE, Anda dapat menonaktifkan penembolokan berdasarkan bidang demi bidang menggunakan mekanisme DFX. Jika Anda mengatur bendera ke FALSE, Anda harus memanggil SetFieldDirty dan SetFieldNull sendiri.

Atur anggota data ini sebelum memanggil Open. Mekanisme ini terutama untuk kemudahan penggunaan. Performa mungkin lebih lambat karena buffering ganda bidang saat perubahan dilakukan.

CDaoRecordset::m_nFields

Berisi jumlah anggota data bidang di kelas recordset dan jumlah kolom yang dipilih oleh kumpulan rekaman dari sumber data.

Keterangan

Konstruktor untuk kelas recordset harus diinisialisasi m_nFields dengan jumlah bidang yang terikat secara statis yang benar. ClassWizard menulis inisialisasi ini untuk Anda saat Anda menggunakannya untuk mendeklarasikan kelas recordset Anda. Anda juga dapat menulisnya secara manual.

Kerangka kerja menggunakan angka ini untuk mengelola interaksi antara anggota data bidang dan kolom terkait dari rekaman saat ini pada sumber data.

Catatan

Nomor ini harus sesuai dengan jumlah kolom output yang terdaftar setelah DoFieldExchange panggilan ke SetFieldType dengan parameter CDaoFieldExchange::outputColumn.

Anda dapat mengikat kolom secara dinamis dengan cara CDaoRecordset::GetFieldValue dan CDaoRecordset::SetFieldValue. Jika Anda melakukannya, Anda tidak perlu meningkatkan hitungan m_nFields untuk mencerminkan jumlah panggilan fungsi DFX dalam fungsi anggota Anda DoFieldExchange .

CDaoRecordset::m_nParams

Berisi jumlah anggota data parameter di kelas recordset — jumlah parameter yang diteruskan dengan kueri recordset.

Keterangan

Jika kelas recordset Anda memiliki anggota data parameter, konstruktor untuk kelas harus menginisialisasi m_nParams dengan angka yang benar. Nilai m_nParams default ke 0. Jika Anda menambahkan anggota data parameter — yang harus Anda lakukan secara manual — Anda juga harus menambahkan inisialisasi secara manual di konstruktor kelas untuk mencerminkan jumlah parameter (yang harus setidaknya sebesar jumlah tempat penampung '' di string m_strFilter atau m_strSort Anda).

Kerangka kerja menggunakan angka ini saat membuat parameter kueri kumpulan rekaman.

Catatan

Nomor ini harus sesuai dengan jumlah "param" yang terdaftar setelah DoFieldExchange panggilan ke SetFieldType dengan parameter CFieldExchange::param.

Untuk informasi terkait, lihat topik "Objek Parameter" di Bantuan DAO.

CDaoRecordset::m_pDAORecordset

Berisi penunjuk ke antarmuka OLE untuk objek himpunan rekaman DAO yang mendasar CDaoRecordset objek.

Keterangan

Gunakan pointer ini jika Anda perlu mengakses antarmuka DAO secara langsung.

Untuk informasi terkait, lihat topik "Objek Recordset" di Bantuan DAO.

CDaoRecordset::m_pDatabase

Berisi penunjuk ke CDaoDatabase objek tempat kumpulan rekaman tersambung ke sumber data.

Keterangan

Variabel ini diatur dalam dua cara. Biasanya, Anda meneruskan penunjuk ke objek yang sudah terbuka CDaoDatabase saat anda membuat objek recordset. Jika Anda meneruskan NULL, CDaoRecordset buat CDaoDatabase objek untuk Anda dan membukanya. Dalam kedua kasus, CDaoRecordset menyimpan pointer dalam variabel ini.

Biasanya Anda tidak akan langsung perlu menggunakan pointer yang disimpan di m_pDatabase. Namun, jika Anda menulis ekstensi Anda sendiri ke CDaoRecordset, Anda mungkin perlu menggunakan pointer. Misalnya, Anda mungkin memerlukan penunjuk jika Anda melemparkan sendiri CDaoException.

Untuk informasi terkait, lihat topik "Objek Database" di Bantuan DAO.

CDaoRecordset::m_strFilter

Berisi string yang digunakan untuk membuat klausa WHERE dari pernyataan SQL.

Keterangan

Ini tidak termasuk kata yang dipesan WHERE untuk memfilter kumpulan rekaman. Penggunaan anggota data ini tidak berlaku untuk kumpulan rekaman jenis tabel. Penggunaan m_strFilter tidak berpengaruh saat membuka kumpulan rekaman menggunakan CDaoQueryDef penunjuk.

Gunakan format tanggal A.S. (bulan-hari-tahun) saat Anda memfilter bidang yang berisi tanggal, bahkan jika Anda tidak menggunakan mesin database Microsoft Jet versi A.S. ; jika tidak, data mungkin tidak difilter seperti yang Anda harapkan.

Untuk informasi terkait, lihat topik "Filter Properti" di Bantuan DAO.

CDaoRecordset::m_strSort

Berisi string yang berisi klausa ORDERBY dari pernyataan SQL tanpa kata yang dipesan ORDERBY.

Keterangan

Anda dapat mengurutkan objek recordset jenis dinaset dan rekam jepret.

Anda tidak dapat mengurutkan objek kumpulan rekaman tipe tabel. Untuk menentukan urutan pengurutan kumpulan rekaman jenis tabel, panggil SetCurrentIndex.

Penggunaan m_strSort tidak berpengaruh saat membuka kumpulan rekaman menggunakan CDaoQueryDef penunjuk.

Untuk informasi terkait, lihat topik "Urutkan Properti" di Bantuan DAO.

CDaoRecordset::Move

Panggil fungsi anggota ini untuk memposisikan rekaman lRows recordset dari rekaman saat ini.

virtual void Move(long lRows);

Parameter

Gagak
Jumlah rekaman untuk bergerak maju atau mundur. Nilai positif bergerak maju, menuju akhir kumpulan rekaman. Nilai negatif bergerak mundur, ke awal.

Keterangan

Anda dapat bergerak maju atau mundur. Move( 1 ) setara dengan MoveNext, dan Move( -1 ) setara dengan MovePrev.

Perhatian

Memanggil salah Move satu fungsi akan melemparkan pengecualian jika kumpulan rekaman tidak memiliki rekaman. Secara umum, panggil dan IsBOFIsEOF sebelum operasi Pindahkan untuk menentukan apakah kumpulan rekaman memiliki rekaman apa pun. Setelah Anda memanggil Open atau Requery, hubungi atau IsBOFIsEOF.

Catatan

Jika Anda telah menggulir melewati awal atau akhir himpunan rekaman ( IsBOF atau IsEOF mengembalikan nonzero), panggilan untuk Move melempar CDaoException.

Catatan

Jika Anda memanggil salah Move satu fungsi saat rekaman saat ini sedang diperbarui atau ditambahkan, pembaruan akan hilang tanpa peringatan.

Saat Anda memanggil Move rekam jepret gulir khusus penerusan, parameter lRows harus berupa bilangan bulat positif dan marka buku tidak diizinkan, sehingga Anda hanya dapat maju.

Untuk membuat rekaman pertama, terakhir, berikutnya, atau sebelumnya dalam kumpulan rekaman saat ini, panggil MoveFirstfungsi anggota , , MoveLastMoveNext, atau MovePrev .

Untuk informasi terkait, lihat topik "Pindahkan Metode" dan "MoveFirst, MoveLast, MoveNext, MovePrevious Methods" di Bantuan DAO.

CDaoRecordset::MoveFirst

Panggil fungsi anggota ini untuk membuat rekaman pertama dalam recordset (jika ada) rekaman saat ini.

void MoveFirst();

Keterangan

Anda tidak perlu menelepon MoveFirst segera setelah membuka recordset. Pada saat itu, rekaman pertama (jika ada) adalah rekaman saat ini secara otomatis.

Perhatian

Memanggil salah Move satu fungsi akan melemparkan pengecualian jika kumpulan rekaman tidak memiliki rekaman. Secara umum, panggil dan IsBOFIsEOF sebelum operasi Pindahkan untuk menentukan apakah kumpulan rekaman memiliki rekaman apa pun. Setelah Anda memanggil Open atau Requery, hubungi atau IsBOFIsEOF.

Catatan

Jika Anda memanggil salah Move satu fungsi saat rekaman saat ini sedang diperbarui atau ditambahkan, pembaruan akan hilang tanpa peringatan.

Move Gunakan fungsi untuk berpindah dari rekaman ke rekaman tanpa menerapkan kondisi. Gunakan operasi Temukan untuk menemukan rekaman dalam objek kumpulan rekaman jenis dynaset atau jenis rekam jepret yang memenuhi kondisi tertentu. Untuk menemukan rekaman dalam objek kumpulan rekaman jenis tabel, panggil Seek.

Jika kumpulan rekaman mengacu pada kumpulan rekaman jenis tabel, pergerakan mengikuti indeks tabel saat ini. Anda dapat mengatur indeks saat ini dengan menggunakan properti Indeks dari objek DAO yang mendasar. Jika Anda tidak mengatur indeks saat ini, urutan rekaman yang dikembalikan tidak ditentukan.

Jika Anda memanggil MoveLast objek recordset berdasarkan kueri SQL atau querydef, kueri dipaksa untuk menyelesaikan dan objek recordset sepenuhnya diisi.

Anda tidak dapat memanggil MoveFirst fungsi atau MovePrev anggota dengan rekam jepret gulir hanya-terusan.

Untuk memindahkan posisi rekaman saat ini dalam objek recordset, nomor rekaman tertentu maju atau mundur, panggil Move.

Untuk informasi terkait, lihat topik "Pindahkan Metode" dan "MoveFirst, MoveLast, MoveNext, MovePrevious Methods" di Bantuan DAO.

CDaoRecordset::MoveLast

Panggil fungsi anggota ini untuk membuat rekaman terakhir (jika ada) dalam recordset rekaman saat ini.

void MoveLast();

Keterangan

Perhatian

Memanggil salah Move satu fungsi akan melemparkan pengecualian jika kumpulan rekaman tidak memiliki rekaman. Secara umum, panggil dan IsBOFIsEOF sebelum operasi Pindahkan untuk menentukan apakah kumpulan rekaman memiliki rekaman apa pun. Setelah Anda memanggil Open atau Requery, hubungi atau IsBOFIsEOF.

Catatan

Jika Anda memanggil salah Move satu fungsi saat rekaman saat ini sedang diperbarui atau ditambahkan, pembaruan akan hilang tanpa peringatan.

Move Gunakan fungsi untuk berpindah dari rekaman ke rekaman tanpa menerapkan kondisi. Gunakan operasi Temukan untuk menemukan rekaman dalam objek kumpulan rekaman jenis dynaset atau jenis rekam jepret yang memenuhi kondisi tertentu. Untuk menemukan rekaman dalam objek kumpulan rekaman jenis tabel, panggil Seek.

Jika kumpulan rekaman mengacu pada kumpulan rekaman jenis tabel, pergerakan mengikuti indeks tabel saat ini. Anda dapat mengatur indeks saat ini dengan menggunakan properti Indeks dari objek DAO yang mendasar. Jika Anda tidak mengatur indeks saat ini, urutan rekaman yang dikembalikan tidak ditentukan.

Jika Anda memanggil MoveLast objek recordset berdasarkan kueri SQL atau querydef, kueri dipaksa untuk menyelesaikan dan objek recordset sepenuhnya diisi.

Untuk memindahkan posisi rekaman saat ini dalam objek recordset, nomor rekaman tertentu maju atau mundur, panggil Move.

Untuk informasi terkait, lihat topik "Pindahkan Metode" dan "MoveFirst, MoveLast, MoveNext, MovePrevious Methods" di Bantuan DAO.

CDaoRecordset::MoveNext

Panggil fungsi anggota ini untuk membuat rekaman berikutnya dalam kumpulan rekaman saat ini.

void MoveNext();

Keterangan

Disarankan agar Anda memanggil IsBOF sebelum mencoba berpindah ke rekaman sebelumnya. Panggilan ke MovePrev akan melemparkan CDaoException jika IsBOF mengembalikan nonzero, menunjukkan bahwa Anda telah menggulir sebelum rekaman pertama atau bahwa tidak ada rekaman yang dipilih oleh kumpulan rekaman.

Perhatian

Memanggil salah Move satu fungsi akan melemparkan pengecualian jika kumpulan rekaman tidak memiliki rekaman. Secara umum, panggil dan IsBOFIsEOF sebelum operasi Pindahkan untuk menentukan apakah kumpulan rekaman memiliki rekaman apa pun. Setelah Anda memanggil Open atau Requery, hubungi atau IsBOFIsEOF.

Catatan

Jika Anda memanggil salah Move satu fungsi saat rekaman saat ini sedang diperbarui atau ditambahkan, pembaruan akan hilang tanpa peringatan.

Move Gunakan fungsi untuk berpindah dari rekaman ke rekaman tanpa menerapkan kondisi. Gunakan operasi Temukan untuk menemukan rekaman dalam objek kumpulan rekaman jenis dynaset atau jenis rekam jepret yang memenuhi kondisi tertentu. Untuk menemukan rekaman dalam objek kumpulan rekaman jenis tabel, panggil Seek.

Jika kumpulan rekaman mengacu pada kumpulan rekaman jenis tabel, pergerakan mengikuti indeks tabel saat ini. Anda dapat mengatur indeks saat ini dengan menggunakan properti Indeks dari objek DAO yang mendasar. Jika Anda tidak mengatur indeks saat ini, urutan rekaman yang dikembalikan tidak ditentukan.

Untuk memindahkan posisi rekaman saat ini dalam objek recordset, nomor rekaman tertentu maju atau mundur, panggil Move.

Untuk informasi terkait, lihat topik "Pindahkan Metode" dan "MoveFirst, MoveLast, MoveNext, MovePrevious Methods" di Bantuan DAO.

CDaoRecordset::MovePrev

Panggil fungsi anggota ini untuk membuat rekaman sebelumnya dalam kumpulan rekaman saat ini.

void MovePrev();

Keterangan

Disarankan agar Anda memanggil IsBOF sebelum mencoba berpindah ke rekaman sebelumnya. Panggilan ke MovePrev akan melemparkan CDaoException jika IsBOF mengembalikan nonzero, menunjukkan bahwa Anda telah menggulir sebelum rekaman pertama atau bahwa tidak ada rekaman yang dipilih oleh kumpulan rekaman.

Perhatian

Memanggil salah Move satu fungsi akan melemparkan pengecualian jika kumpulan rekaman tidak memiliki rekaman. Secara umum, panggil dan IsBOFIsEOF sebelum operasi Pindahkan untuk menentukan apakah kumpulan rekaman memiliki rekaman apa pun. Setelah Anda memanggil Open atau Requery, hubungi atau IsBOFIsEOF.

Catatan

Jika Anda memanggil salah Move satu fungsi saat rekaman saat ini sedang diperbarui atau ditambahkan, pembaruan akan hilang tanpa peringatan.

Move Gunakan fungsi untuk berpindah dari rekaman ke rekaman tanpa menerapkan kondisi. Gunakan operasi Temukan untuk menemukan rekaman dalam objek kumpulan rekaman jenis dynaset atau jenis rekam jepret yang memenuhi kondisi tertentu. Untuk menemukan rekaman dalam objek kumpulan rekaman jenis tabel, panggil Seek.

Jika kumpulan rekaman mengacu pada kumpulan rekaman jenis tabel, pergerakan mengikuti indeks tabel saat ini. Anda dapat mengatur indeks saat ini dengan menggunakan properti Indeks dari objek DAO yang mendasar. Jika Anda tidak mengatur indeks saat ini, urutan rekaman yang dikembalikan tidak ditentukan.

Anda tidak dapat memanggil MoveFirst fungsi atau MovePrev anggota dengan rekam jepret gulir hanya-terusan.

Untuk memindahkan posisi rekaman saat ini dalam objek recordset, nomor rekaman tertentu maju atau mundur, panggil Move.

Untuk informasi terkait, lihat topik "Pindahkan Metode" dan "MoveFirst, MoveLast, MoveNext, MovePrevious Methods" di Bantuan DAO.

CDaoRecordset::Open

Anda harus memanggil fungsi anggota ini untuk mengambil rekaman untuk kumpulan rekaman.

virtual void Open(
    int nOpenType = AFX_DAO_USE_DEFAULT_TYPE,
    LPCTSTR lpszSQL = NULL,
    int nOptions = 0);

virtual void Open(
    CDaoTableDef* pTableDef,
    int nOpenType = dbOpenTable,
    int nOptions = 0);

virtual void Open(
    CDaoQueryDef* pQueryDef,
    int nOpenType = dbOpenDynaset,
    int nOptions = 0);

Parameter

nOpenType
Salah satu dari nilai berikut:

  • dbOpenDynaset Kumpulan rekaman jenis dinaset dengan pengguliran dua arah. Ini adalah default.

  • dbOpenTable Kumpulan rekaman jenis tabel dengan pengguliran dua arah.

  • dbOpenSnapshot Kumpulan rekaman jenis rekam jepret dengan pengguliran dua arah.

lpszSQL
Penunjuk string yang berisi salah satu hal berikut ini:

  • Penunjuk NULL.

  • Nama satu atau beberapa tabledefs dan/atau querydefs (dipisahkan koma).

  • Pernyataan SQL SELECT (secara opsional dengan klausa SQL WHERE atau ORDERBY ).

  • Kueri pass-through.

nOptions
Satu atau beberapa opsi yang tercantum di bawah ini. Nilai default adalah 0. Kemungkinan nilainya adalah sebagai berikut:

  • dbAppendOnly Anda hanya dapat menambahkan rekaman baru (hanya set rekaman jenis dynaset). Opsi ini berarti secara harfiah bahwa rekaman hanya dapat ditambahkan. Kelas database MFC ODBC memiliki opsi tambahan saja yang memungkinkan rekaman diambil dan ditambahkan.

  • dbForwardOnly Kumpulan rekaman adalah rekam jepret gulir khusus ke depan.

  • dbSeeChanges Hasilkan pengecualian jika pengguna lain mengubah data yang Sedang Anda edit.

  • dbDenyWrite Pengguna lain tidak dapat mengubah atau menambahkan rekaman.

  • dbDenyRead Pengguna lain tidak dapat melihat rekaman (hanya kumpulan rekaman jenis tabel).

  • dbReadOnly Anda hanya bisa melihat rekaman; pengguna lain dapat mengubahnya.

  • dbInconsistent Pembaruan yang tidak konsisten diizinkan (hanya kumpulan rekaman jenis dynaset).

  • dbConsistent Hanya pembaruan yang konsisten yang diizinkan (hanya kumpulan rekaman jenis dynaset).

Catatan

Konstanta dbConsistent dan dbInconsistent saling eksklusif. Anda dapat menggunakan satu atau yang lain, tetapi tidak keduanya dalam instans tertentu dari Open.

pTableDef
Penunjuk ke objek CDaoTableDef . Versi ini hanya valid untuk kumpulan rekaman jenis tabel. Saat menggunakan opsi ini, CDaoDatabase penunjuk yang digunakan untuk membuat CDaoRecordset tidak digunakan; melainkan, database tempat tabledef berada digunakan.

pQueryDef
Penunjuk ke objek CDaoQueryDef . Versi ini hanya berlaku untuk kumpulan rekaman jenis dynaset dan jenis rekam jepret. Saat menggunakan opsi ini, CDaoDatabase penunjuk yang digunakan untuk membuat CDaoRecordset tidak digunakan; melainkan, database tempat querydef berada digunakan.

Keterangan

Sebelum memanggil Open, Anda harus membuat objek recordset. Ada beberapa cara untuk melakukan ini:

  • Saat Anda membuat objek recordset, teruskan penunjuk ke CDaoDatabase objek yang sudah terbuka.

  • Saat Anda membuat objek kumpulan rekaman, teruskan penunjuk ke CDaoDatabase objek yang tidak terbuka. Kumpulan rekaman membuka CDaoDatabase objek, tetapi tidak akan menutupnya saat objek recordset ditutup.

  • Saat Anda membuat objek recordset, teruskan penunjuk NULL. Objek recordset memanggil GetDefaultDBName untuk mendapatkan nama Microsoft Access . File MDB untuk dibuka. Himpunan CDaoDatabase rekaman kemudian membuka objek dan membuatnya tetap terbuka selama kumpulan rekaman terbuka. Saat Anda memanggil Close pada kumpulan rekaman, CDaoDatabase objek juga ditutup.

    Catatan

    Saat kumpulan rekaman membuka CDaoDatabase objek, himpunan data akan membuka sumber data dengan akses yang tidak ada.

Untuk versi Open yang menggunakan parameter lpszSQL , setelah recordset terbuka, Anda dapat mengambil rekaman dengan salah satu dari beberapa cara. Opsi pertama adalah memiliki fungsi DFX di Anda DoFieldExchange. Opsi kedua adalah menggunakan pengikatan dinamis dengan memanggil GetFieldValue fungsi anggota. Opsi ini dapat diimplementasikan secara terpisah atau dalam kombinasi. Jika digabungkan, Anda harus meneruskan pernyataan SQL sendiri pada panggilan ke Open.

Saat Anda menggunakan versi Open kedua tempat Anda meneruskan objek, kolom yang CDaoTableDef dihasilkan akan tersedia bagi Anda untuk mengikat melalui DoFieldExchange dan mekanisme DFX, dan/atau mengikat secara dinamis melalui GetFieldValue.

Catatan

Anda hanya dapat memanggil Open menggunakan CDaoTableDef objek untuk kumpulan rekaman jenis tabel.

Saat Anda menggunakan versi Open ketiga tempat Anda meneruskan CDaoQueryDef objek, kueri tersebut akan dijalankan, dan kolom yang dihasilkan akan tersedia bagi Anda untuk mengikat melalui DoFieldExchange dan mekanisme DFX, dan/atau mengikat secara dinamis melalui GetFieldValue.

Catatan

Anda hanya dapat memanggil Open menggunakan CDaoQueryDef objek untuk kumpulan rekaman jenis dynaset dan jenis rekam jepret.

Untuk versi Open pertama yang menggunakan lpszSQL parameter, rekaman dipilih berdasarkan kriteria yang diperlihatkan dalam tabel berikut.

Nilai parameter lpszSQL Rekaman yang dipilih ditentukan oleh Contoh
NULL String yang dikembalikan oleh GetDefaultSQL.
Daftar yang dipisahkan koma dari satu atau beberapa nama tabledefs dan/atau querydef. Semua kolom yang diwakili dalam DoFieldExchange. "Customer"
SELECT column-list FROM table-list Kolom yang ditentukan dari tabledef dan/atau querydef yang ditentukan. "SELECT CustId, CustName

FROM Customer"

Prosedur yang biasa adalah meneruskan NULL ke Open; dalam hal ini, Open memanggil GetDefaultSQL, fungsi anggota yang dapat diganti yang dihasilkan ClassWizard saat membuat CDaoRecordsetkelas -turunan. Nilai ini memberikan nama tabledef dan/atau querydef yang Anda tentukan di ClassWizard. Anda dapat menentukan informasi lain dalam parameter lpszSQL .

Apa pun yang Anda lewati, Open membuat string SQL akhir untuk kueri (string mungkin memiliki klausa SQL WHERE dan ORDERBY yang ditambahkan ke string lpszSQL yang Anda lewati) lalu menjalankan kueri. Anda dapat memeriksa string yang dibangun dengan memanggil GetSQL setelah memanggil Open.

Anggota data bidang kelas recordset Anda terikat ke kolom data yang dipilih. Jika ada rekaman yang dikembalikan, rekaman pertama menjadi rekaman saat ini.

Jika Anda ingin mengatur opsi untuk kumpulan rekaman, seperti filter atau pengurutan, atur m_strSort atau m_strFilter setelah Anda membuat objek recordset tetapi sebelum Anda memanggil Open. Jika Anda ingin me-refresh rekaman di kumpulan rekaman setelah kumpulan rekaman sudah terbuka, panggil Requery.

Jika Anda memanggil Open kumpulan rekaman jenis dynaset atau jenis rekam jepret, atau jika sumber data mengacu pada pernyataan SQL atau tabledef yang mewakili tabel terlampir, Anda tidak dapat menggunakan dbOpenTable untuk argumen jenis; jika Anda melakukannya, MFC melempar pengecualian. Untuk menentukan apakah objek tabledef mewakili tabel terlampir, buat objek CDaoTableDef dan panggil fungsi get Koneksi anggotanya.

dbSeeChanges Gunakan bendera jika Anda ingin menjebak perubahan yang dibuat oleh pengguna lain atau program lain pada komputer Anda saat Anda mengedit atau menghapus rekaman yang sama. Misalnya, jika dua pengguna mulai mengedit rekaman yang sama, pengguna pertama yang Update memanggil fungsi anggota berhasil. Ketika Update dipanggil oleh pengguna kedua, dilemparkan CDaoException . Demikian pula, jika pengguna kedua mencoba memanggil Delete untuk menghapus rekaman, dan telah diubah oleh pengguna pertama, CDaoException terjadi.

Biasanya, jika pengguna mendapatkan ini CDaoException saat memperbarui, kode Anda harus menyegarkan konten bidang dan mengambil nilai yang baru dimodifikasi. Jika pengecualian terjadi dalam proses penghapusan, kode Anda dapat menampilkan data rekaman baru kepada pengguna dan pesan yang menunjukkan bahwa data baru-baru ini telah berubah. Pada titik ini, kode Anda dapat meminta konfirmasi bahwa pengguna masih ingin menghapus rekaman.

Tip

Gunakan opsi gulir khusus ke depan (dbForwardOnly) untuk meningkatkan performa saat aplikasi Anda membuat satu pass melalui recordset yang dibuka dari sumber data ODBC.

Untuk informasi terkait, lihat topik "Metode OpenRecordset" di Bantuan DAO.

CDaoRecordset::Requery

Panggil fungsi anggota ini untuk membangun kembali (merefresh) kumpulan rekaman.

virtual void Requery();

Keterangan

Jika ada rekaman yang dikembalikan, rekaman pertama menjadi rekaman saat ini.

Agar kumpulan rekaman mencerminkan penambahan dan penghapusan yang Anda atau pengguna lain lakukan ke sumber data, Anda harus membangun kembali kumpulan rekaman dengan memanggil Requery. Jika kumpulan rekaman adalah dynaset, kumpulan catatan secara otomatis mencerminkan pembaruan yang Anda atau pengguna lain buat ke rekaman yang ada (tetapi bukan penambahan). Jika recordset adalah rekam jepret, Anda harus memanggil Requery untuk mencerminkan pengeditan oleh pengguna lain serta penambahan dan penghapusan.

Untuk dynaset atau rekam jepret, panggil Requery kapan saja Anda ingin membangun kembali kumpulan rekaman menggunakan nilai parameter. Atur filter baru atau urutkan menurut pengaturan m_strFilter dan m_strSort sebelum memanggil Requery. Atur parameter baru dengan menetapkan nilai baru ke anggota data parameter sebelum memanggil Requery.

Jika upaya untuk membangun kembali kumpulan rekaman gagal, kumpulan rekaman akan ditutup. Sebelum memanggil Requery, Anda dapat menentukan apakah kumpulan rekaman dapat dikueri ulang dengan memanggil fungsi anggota CanRestart . CanRestart tidak menjamin bahwa Requery akan berhasil.

Perhatian

Hubungi Requery hanya setelah Anda menelepon Open.

Catatan

Memanggil Kueri Ulang mengubah marka buku DAO.

Anda tidak dapat memanggil Requery kumpulan rekaman jenis dynaset atau jenis rekam jepret jika panggilan CanRestart mengembalikan 0, Anda juga tidak dapat menggunakannya pada kumpulan rekaman jenis tabel.

Jika keduanya IsBOF dan IsEOF mengembalikan nonzero setelah Anda memanggil Requery, kueri tidak mengembalikan rekaman apa pun dan kumpulan rekaman tidak akan berisi data.

Untuk informasi terkait, lihat topik "Metode Kueri Ulang" di Bantuan DAO.

CDaoRecordset::Seek

Panggil fungsi anggota ini untuk menemukan rekaman dalam objek kumpulan rekaman tipe tabel terindeks yang memenuhi kriteria yang ditentukan untuk indeks saat ini dan membuat rekaman tersebut menjadi rekaman saat ini.

BOOL Seek(
    LPCTSTR lpszComparison,
    COleVariant* pKey1,
    COleVariant* pKey2 = NULL,
    COleVariant* pKey3 = NULL);

BOOL Seek(
    LPCTSTR lpszComparison,
    COleVariant* pKeyArray,
    WORD nKeys);

Parameter

Perbandingan lpsz
Salah satu ekspresi string berikut: "", "<<=", "=", ">=", atau ">".

pKey1
Penunjuk ke COleVariant yang nilainya sesuai dengan bidang pertama dalam indeks. Harus diisi.

pKey2
Penunjuk ke nilai COleVariant yang sesuai dengan bidang kedua dalam indeks, jika ada. Default ke NULL.

pKey3
Penunjuk ke COleVariant nilai yang sesuai dengan bidang ketiga dalam indeks, jika ada. Default ke NULL.

pKeyArray
Penunjuk ke array varian. Ukuran array sesuai dengan jumlah bidang dalam indeks.

nKeys
Bilangan bulat yang sesuai dengan ukuran array, yang merupakan jumlah bidang dalam indeks.

Catatan

Jangan tentukan kartubebas dalam kunci. Kartubebas akan menyebabkan Seek tidak ada rekaman yang cocok.

Tampilkan Nilai

Bukan nol jika rekaman yang cocok ditemukan, jika tidak, 0.

Keterangan

Gunakan versi Seek kedua (array) untuk menangani indeks empat bidang atau lebih.

Seek memungkinkan pencarian indeks berkinerja tinggi pada kumpulan rekaman jenis tabel. Anda harus mengatur indeks saat ini dengan memanggil SetCurrentIndex sebelum memanggil Seek. Jika indeks mengidentifikasi bidang atau bidang kunci nonunique, Seek menemukan rekaman pertama yang memenuhi kriteria. Jika Anda tidak mengatur indeks, pengecualian akan dilemparkan.

Perhatikan bahwa jika Anda tidak membuat kumpulan rekaman UNICODE, COleVariant objek harus dinyatakan secara eksplisit ANSI. Ini dapat dilakukan dengan menggunakan bentuk konstruktor COleVariant::COleVariant(lpszSrc,vtSrc) dengan vtSrc diatur ke VT_BSTRT (ANSI) atau dengan menggunakan COleVariant fungsi SetString(lpszSrc,vtSrc) dengan vtSrc diatur ke .VT_BSTRT

Saat Anda memanggil Seek, Anda meneruskan satu atau beberapa nilai kunci dan operator perbandingan ("<", "<=", "=", ">=", atau ">"). Seek mencari bidang kunci yang ditentukan dan menemukan rekaman pertama yang memenuhi kriteria yang ditentukan oleh lpszComparison dan pKey1. Setelah ditemukan, Seek mengembalikan nonzero, dan membuat rekaman tersebut saat ini. Jika Seek gagal menemukan kecocokan, Seek mengembalikan nol, dan rekaman saat ini tidak terdefinisi. Saat menggunakan DAO secara langsung, Anda harus secara eksplisit memeriksa properti NoMatch.

Jika lpszComparison "=", ">=", atau ">", Seek dimulai di awal indeks. Jika lpszComparison adalah "<" atau "<=", Seek dimulai di akhir indeks dan mencari mundur kecuali ada entri indeks duplikat di akhir. Dalam hal ini, Seek dimulai pada entri arbitrer di antara entri indeks duplikat di akhir indeks.

Tidak harus ada rekaman saat ini ketika Anda menggunakan Seek.

Untuk menemukan rekaman dalam kumpulan rekaman jenis dynaset atau jenis rekam jepret yang memenuhi kondisi tertentu, gunakan operasi Temukan. Untuk menyertakan semua rekaman, bukan hanya rekaman yang memenuhi kondisi tertentu, gunakan operasi Pindahkan untuk berpindah dari rekaman ke rekaman.

Anda tidak dapat memanggil Seek pada tabel terlampir dari jenis apa pun karena tabel terlampir harus dibuka sebagai set rekaman jenis dynaset atau jenis rekam jepret. Namun, jika Anda memanggil CDaoDatabase::Open untuk langsung membuka database ISAM yang dapat diinstal, Anda dapat memanggil Seek tabel dalam database tersebut, meskipun performanya mungkin lambat.

Untuk informasi terkait, lihat topik "Metode Pencarian" di Bantuan DAO.

CDaoRecordset::SetAbsolutePosition

Mengatur nomor rekaman relatif dari rekaman objek recordset saat ini.

void SetAbsolutePosition(long lPosition);

Parameter

lPosisi
Sesuai dengan posisi ordinal rekaman saat ini dalam kumpulan rekaman.

Keterangan

Panggilan SetAbsolutePosition memungkinkan Anda untuk memposisikan penunjuk rekaman saat ini ke rekaman tertentu berdasarkan posisi ordinalnya dalam set rekaman jenis dinaset atau jenis rekam jepret. Anda juga dapat menentukan nomor rekaman saat ini dengan memanggil GetAbsolutePosition.

Catatan

Fungsi anggota ini hanya berlaku untuk kumpulan rekaman jenis dynaset dan jenis rekam jepret.

Nilai properti AbsolutePosition dari objek DAO yang mendasar berbasis nol; pengaturan 0 mengacu pada rekaman pertama dalam recordset. Mengatur nilai yang lebih besar dari jumlah rekaman yang diisi menyebabkan MFC melemparkan pengecualian. Anda dapat menentukan jumlah rekaman yang diisi dalam kumpulan rekaman dengan memanggil GetRecordCount fungsi anggota.

Jika rekaman saat ini dihapus, nilai properti AbsolutePosition tidak ditentukan, dan MFC melemparkan pengecualian jika direferensikan. Rekaman baru ditambahkan ke akhir urutan.

Catatan

Properti ini tidak dimaksudkan untuk digunakan sebagai nomor rekaman pengganti. Marka buku masih merupakan cara yang direkomendasikan untuk mempertahankan dan kembali ke posisi tertentu dan merupakan satu-satunya cara untuk memosisikan rekaman saat ini di semua jenis objek recordset yang mendukung marka buku. Secara khusus, posisi rekaman tertentu berubah ketika rekaman sebelumnya dihapus. Juga tidak ada jaminan bahwa rekaman tertentu akan memiliki posisi absolut yang sama jika kumpulan rekaman dibuat kembali karena urutan rekaman individual dalam kumpulan rekaman tidak dijamin kecuali dibuat dengan pernyataan SQL menggunakan klausa ORDERBY .

Untuk informasi terkait, lihat topik "Properti AbsolutePosition" di Bantuan DAO.

CDaoRecordset::SetBookmark

Panggil fungsi anggota ini untuk memosisikan kumpulan rekaman pada rekaman yang berisi marka buku yang ditentukan.

void SetBookmark(COleVariant varBookmark);

Parameter

varBookmark
Objek COleVariant yang berisi nilai bookmark untuk rekaman tertentu.

Keterangan

Saat objek recordset dibuat atau dibuka, setiap rekamannya sudah memiliki marka buku yang unik. Anda dapat mengambil marka buku untuk rekaman saat ini dengan memanggil GetBookmark dan menyimpan nilai ke COleVariant objek. Anda nantinya dapat kembali ke rekaman tersebut dengan memanggil SetBookmark menggunakan nilai bookmark yang disimpan.

Catatan

Memanggil Kueri Ulang mengubah marka buku DAO.

Perhatikan bahwa jika Anda tidak membuat kumpulan rekaman UNICODE, COleVariant objek harus dinyatakan secara eksplisit ANSI. Ini dapat dilakukan dengan menggunakan bentuk konstruktor COleVariant::COleVariant(lpszSrc,vtSrc) dengan vtSrc diatur ke VT_BSTRT (ANSI) atau dengan menggunakan COleVariant fungsi SetString(lpszSrc,vtSrc) dengan vtSrc diatur ke .VT_BSTRT

Untuk informasi terkait, lihat topik "Properti Bookmark" dan Properti Bookmarkable" di Bantuan DAO.

CDaoRecordset::SetCacheSize

Panggil fungsi anggota ini untuk mengatur jumlah rekaman yang akan di-cache.

void SetCacheSize(long lSize);

Parameter

lSize
Menentukan jumlah rekaman. Nilai umumnya adalah 100. Pengaturan 0 menonaktifkan penembolokan. Pengaturan harus antara 5 dan 1200 rekaman. Cache dapat menggunakan sejumlah besar memori.

Keterangan

Cache adalah ruang dalam memori lokal yang menyimpan data yang terakhir diambil dari server jika data akan diminta lagi saat aplikasi sedang berjalan. Penembolokan data meningkatkan performa aplikasi yang mengambil data dari server jarak jauh melalui objek recordset jenis dynaset. Ketika data diminta, mesin database Microsoft Jet memeriksa cache untuk data yang diminta terlebih dahulu daripada mengambilnya dari server, yang membutuhkan lebih banyak waktu. Data yang tidak berasal dari sumber data ODBC tidak disimpan dalam cache.

Sumber data ODBC apa pun, seperti tabel terlampir, dapat memiliki cache lokal. Untuk membuat cache, buka objek kumpulan rekaman dari sumber data jarak jauh, panggil SetCacheSize fungsi anggota dan SetCacheStart , lalu panggil FillCache fungsi anggota atau lewati rekaman dengan menggunakan salah satu operasi Pindahkan. Parameter lSize dari SetCacheSize fungsi anggota dapat didasarkan pada jumlah rekaman yang dapat dikerjakan aplikasi Anda pada satu waktu. Misalnya, jika Anda menggunakan kumpulan rekaman sebagai sumber data yang akan ditampilkan di layar, Anda dapat meneruskan SetCacheSizeparameter lSize sebagai 20 untuk menampilkan 20 rekaman sekaligus.

Untuk informasi terkait, lihat topik "CacheSize, CacheStart Properties" di Bantuan DAO.

CDaoRecordset::SetCacheStart

Panggil fungsi anggota ini untuk menentukan marka buku rekaman pertama dalam kumpulan rekaman yang akan di-cache.

void SetCacheStart(COleVariant varBookmark);

Parameter

varBookmark
COleVariant yang menentukan bookmark rekaman pertama dalam kumpulan rekaman yang akan di-cache.

Keterangan

Anda dapat menggunakan nilai bookmark dari rekaman apa pun untuk parameter varBookmark fungsi SetCacheStart anggota. Buat catatan yang ingin Anda mulai cache dengan rekaman saat ini, buat marka buku untuk rekaman tersebut menggunakan SetBookmark, dan teruskan nilai bookmark sebagai parameter untuk SetCacheStart fungsi anggota.

Mesin database Microsoft Jet meminta rekaman dalam rentang cache dari cache, dan meminta rekaman di luar rentang cache dari server.

Rekaman yang diambil dari cache tidak mencerminkan perubahan yang dibuat secara bersamaan ke data sumber oleh pengguna lain.

Untuk memaksa pembaruan semua data yang di-cache, teruskan parameter lSize sebagai SetCacheSize 0, panggil SetCacheSize lagi dengan ukuran cache yang awalnya Anda minta, lalu panggil FillCache fungsi anggota.

Perhatikan bahwa jika Anda tidak membuat kumpulan rekaman UNICODE, COleVariant objek harus dinyatakan secara eksplisit ANSI. Ini dapat dilakukan dengan menggunakan bentuk konstruktor COleVariant::COleVariant(lpszSrc,vtSrc) dengan vtSrc diatur ke VT_BSTRT (ANSI) atau dengan menggunakan COleVariant fungsi SetString(lpszSrc,vtSrc) dengan vtSrc diatur ke .VT_BSTRT

Untuk informasi terkait, lihat topik CacheSize, CacheStart Properties" di Bantuan DAO.

CDaoRecordset::SetCurrentIndex

Panggil fungsi anggota ini untuk mengatur indeks pada kumpulan catatan jenis tabel.

void SetCurrentIndex(LPCTSTR lpszIndex);

Parameter

lpszIndex
Pointer yang berisi nama indeks yang akan diatur.

Keterangan

Rekaman dalam tabel dasar tidak disimpan dalam urutan tertentu. Mengatur indeks mengubah urutan rekaman yang dikembalikan dari database, tetapi tidak memengaruhi urutan penyimpanan rekaman. Indeks yang ditentukan harus sudah ditentukan. Jika Anda mencoba menggunakan objek indeks yang tidak ada, atau jika indeks tidak diatur saat Anda memanggil Seek, MFC akan melemparkan pengecualian.

Anda dapat membuat indeks baru untuk tabel dengan memanggil CDaoTableDef::CreateIndex dan menambahkan indeks baru ke kumpulan Indeks dari tabledef yang mendasar dengan memanggil CDaoTableDef::Tambahkan, lalu membuka kembali kumpulan rekaman.

Rekaman yang dikembalikan dari kumpulan rekaman jenis tabel hanya dapat diurutkan oleh indeks yang ditentukan untuk tabledef yang mendasar. Untuk mengurutkan rekaman dalam beberapa urutan lain, Anda dapat membuka kumpulan rekaman jenis dynaset atau jenis rekam jepret menggunakan klausa SQL ORDERBY yang disimpan di CDaoRecordset::m_strSort.

Untuk informasi terkait, lihat topik "Objek Indeks" dan definisi "indeks saat ini" di Bantuan DAO.

CDaoRecordset::SetFieldDirty

Panggil fungsi anggota ini untuk menandai anggota data bidang dari kumpulan rekaman sebagai diubah atau tidak berubah.

void SetFieldDirty(
    void* pv,
    BOOL bDirty = TRUE);

Parameter

Pv
Berisi alamat anggota data bidang di kumpulan rekaman atau NULL. Jika NULL, semua anggota data bidang dalam kumpulan rekaman ditandai. (C++ NULL tidak sama dengan Null dalam terminologi database, yang berarti "tidak memiliki nilai.")

bDirty
TRUE jika anggota data bidang akan ditandai sebagai "kotor" (diubah). Jika tidak, FALSE jika anggota data bidang akan ditandai sebagai "bersih" (tidak berubah).

Keterangan

Menandai bidang sebagai tidak berubah memastikan bidang tidak diperbarui.

Kerangka kerja menandai anggota data bidang yang diubah untuk memastikan mereka akan ditulis ke rekaman pada sumber data oleh mekanisme pertukaran bidang rekaman DAO (DFX). Mengubah nilai bidang umumnya mengatur bidang kotor secara otomatis, jadi Anda jarang perlu memanggil SetFieldDirty diri Anda sendiri, tetapi Terkadang Anda mungkin ingin memastikan bahwa kolom akan diperbarui atau disisipkan secara eksplisit terlepas dari nilai apa yang ada di anggota data bidang. Mekanisme DFX juga menggunakan penggunaan PSEUDONULL. Untuk informasi selengkapnya, lihat CDaoFieldExchange::m_nOperation.

Jika mekanisme buffering ganda tidak digunakan, maka mengubah nilai bidang tidak secara otomatis mengatur bidang sebagai kotor. Dalam hal ini, perlu untuk secara eksplisit mengatur bidang sebagai kotor. Bendera yang terkandung dalam m_bCheckCacheForDirtyFields mengontrol pemeriksaan bidang otomatis ini.

Catatan

Panggil fungsi anggota ini hanya setelah Anda memanggil Edit atau TambahkanBaru.

Menggunakan NULL untuk argumen pertama fungsi akan menerapkan fungsi ke semua outputColumn bidang, bukan bidang param di CDaoFieldExchange. Misalnya, panggilan

SetFieldDirty(NULL);

hanya outputColumn akan mengatur bidang ke NULL; bidang param tidak akan terpengaruh.

Untuk mengerjakan param, Anda harus menyediakan alamat aktual dari masing-masing param yang ingin Anda kerjakan, seperti:

SetFieldDirty(&m_strParam);

Ini berarti Anda tidak dapat mengatur semua bidang param ke NULL, seperti yang Anda bisa dengan outputColumn bidang.

SetFieldDirty diimplementasikan melalui DoFieldExchange.

CDaoRecordset::SetFieldNull

Panggil fungsi anggota ini untuk menandai anggota data bidang dari kumpulan rekaman sebagai Null (secara khusus tidak memiliki nilai) atau sebagai non-Null.

void SetFieldNull(
    void* pv,
    BOOL bNull = TRUE);

Parameter

Pv
Berisi alamat anggota data bidang di kumpulan rekaman atau NULL. Jika NULL, semua anggota data bidang dalam kumpulan rekaman ditandai. (C++ NULL tidak sama dengan Null dalam terminologi database, yang berarti "tidak memiliki nilai.")

bNull
Bukan nol jika anggota data bidang akan ditandai sebagai tidak memiliki nilai (Null). Jika tidak, 0 jika anggota data bidang akan ditandai sebagai non-Null.

Keterangan

SetFieldNull digunakan untuk bidang yang terikat dalam DoFieldExchange mekanisme.

Saat Anda menambahkan rekaman baru ke kumpulan rekaman, semua anggota data bidang awalnya diatur ke nilai Null dan ditandai sebagai "kotor" (diubah). Saat Anda mengambil rekaman dari sumber data, kolomnya sudah memiliki nilai atau Null. Jika tidak sesuai untuk membuat bidang Null, CDaoException akan dilemparkan.

Jika Anda menggunakan mekanisme buffering ganda, misalnya, jika Anda secara khusus ingin menunjuk bidang rekaman saat ini karena tidak memiliki nilai, panggil SetFieldNull dengan bNull diatur ke TRUE untuk menandainya sebagai Null. Jika bidang sebelumnya ditandai Null dan Sekarang Anda ingin memberinya nilai, cukup tetapkan nilai barunya. Anda tidak perlu menghapus bendera Null dengan SetFieldNull. Untuk menentukan apakah bidang diizinkan menjadi Null, panggil IsFieldNullable.

Jika Anda tidak menggunakan mekanisme buffering ganda, maka mengubah nilai bidang tidak secara otomatis mengatur bidang sebagai kotor dan non-Null. Anda harus secara khusus mengatur bidang kotor dan non-Null. Bendera yang terkandung dalam m_bCheckCacheForDirtyFields mengontrol pemeriksaan bidang otomatis ini.

Mekanisme DFX menggunakan penggunaan PSEUDONULL. Untuk informasi selengkapnya, lihat CDaoFieldExchange::m_nOperation.

Catatan

Panggil fungsi anggota ini hanya setelah Anda memanggil Edit atau TambahkanBaru.

Menggunakan NULL untuk argumen pertama fungsi hanya akan menerapkan fungsi ke outputColumn bidang, bukan bidang param di CDaoFieldExchange. Misalnya, panggilan

SetFieldNull(NULL);

hanya outputColumn akan mengatur bidang ke NULL; bidang param tidak akan terpengaruh.

CDaoRecordset::SetFieldValue

Panggil fungsi anggota ini untuk mengatur nilai bidang, baik berdasarkan posisi ordinal atau dengan mengubah nilai string.

virtual void SetFieldValue(
    LPCTSTR lpszName,
    const COleVariant& varValue);

virtual void SetFieldValue(
    int nIndex,
    const COleVariant& varValue);

void SetFieldValue(
    LPCTSTR lpszName,
    LPCTSTR lpszValue);

void SetFieldValue(
    int nIndex,
    LPCTSTR lpszValue);

Parameter

lpszName
Penunjuk ke string yang berisi nama bidang.

varValue
Referensi ke objek COleVariant yang berisi nilai konten bidang.

nIndex
Bilangan bulat yang mewakili posisi ordinal bidang dalam kumpulan Bidang himpunan rekaman (berbasis nol).

lpszValue
Penunjuk ke string yang berisi nilai konten bidang.

Keterangan

Gunakan SetFieldValue dan GetFieldValue untuk mengikat bidang secara dinamis pada waktu proses daripada mengikat kolom secara statis menggunakan mekanisme DoFieldExchange .

Perhatikan bahwa jika Anda tidak membuat kumpulan rekaman UNICODE, Anda harus menggunakan bentuk SetFieldValue yang tidak berisi COleVariant parameter, atau COleVariant objek harus dinyatakan secara eksplisit ANSI. Ini dapat dilakukan dengan menggunakan bentuk konstruktor COleVariant::COleVariant(lpszSrc,vtSrc) dengan vtSrc diatur ke VT_BSTRT (ANSI) atau dengan menggunakan COleVariant fungsi SetString(lpszSrc,vtSrc) dengan vtSrc diatur ke .VT_BSTRT

Untuk informasi terkait, lihat topik "Objek Bidang" dan "Properti Nilai" di Bantuan DAO.

CDaoRecordset::SetFieldValueNull

Panggil fungsi anggota ini untuk mengatur bidang ke nilai Null.

void SetFieldValueNull(int nIndex);
void SetFieldValueNull(LPCTSTR lpszName);

Parameter

nIndex
Indeks bidang dalam kumpulan rekaman, untuk pencarian berdasarkan indeks berbasis nol.

lpszName
Nama bidang dalam kumpulan rekaman, untuk pencarian berdasarkan nama.

Keterangan

C++ NULL tidak sama dengan Null, yang, dalam terminologi database, berarti "tidak memiliki nilai."

Untuk informasi terkait, lihat topik "Objek Bidang" dan "Properti Nilai" di Bantuan DAO.

CDaoRecordset::SetLockingMode

Panggil fungsi anggota ini untuk mengatur jenis penguncian untuk kumpulan rekaman.

void SetLockingMode(BOOL bPessimistic);

Parameter

bPessimistic
Bendera yang menunjukkan jenis penguncian.

Keterangan

Ketika penguncian pesimis berlaku, halaman 2K yang berisi rekaman yang Anda edit dikunci segera setelah Anda memanggil Edit fungsi anggota. Halaman tidak terkunci saat Anda memanggil Update fungsi anggota atau Close salah satu operasi Pindahkan atau Temukan.

Saat penguncian optimis berlaku, halaman 2K yang berisi rekaman hanya dikunci saat rekaman sedang diperbarui dengan Update fungsi anggota.

Jika halaman dikunci, tidak ada pengguna lain yang dapat mengedit rekaman di halaman yang sama. Jika Anda memanggil SetLockingMode dan meneruskan nilai bukan nol dan pengguna lain sudah mengunci halaman, pengecualian akan dilemparkan saat Anda memanggil Edit. Pengguna lain dapat membaca data dari halaman terkunci.

Jika Anda memanggil SetLockingMode dengan nilai nol dan panggilan Update selanjutnya saat halaman dikunci oleh pengguna lain, pengecualian terjadi. Untuk melihat perubahan yang dilakukan pada rekaman Anda oleh pengguna lain (dan kehilangan perubahan Anda), panggil SetBookmark fungsi anggota dengan nilai bookmark rekaman saat ini.

Saat bekerja dengan sumber data ODBC, mode penguncian selalu optimis.

CDaoRecordset::SetParamValue

Panggil fungsi anggota ini untuk mengatur nilai parameter dalam kumpulan rekaman pada waktu proses.

virtual void SetParamValue(
    int nIndex,
    const COleVariant& varValue);

virtual void SetParamValue(
    LPCTSTR lpszName,
    const COleVariant& varValue);

Parameter

nIndex
Posisi numerik parameter dalam koleksi Parameter querydef.

var
Nilai yang akan ditetapkan; lihat Komentar.

lpszName
Nama parameter yang nilainya ingin Anda atur.

Keterangan

Parameter harus sudah ditetapkan sebagai bagian dari string SQL recordset. Anda dapat mengakses parameter baik berdasarkan nama atau dengan posisi indeksnya dalam koleksi.

Tentukan nilai yang akan ditetapkan sebagai COleVariant objek. Untuk informasi tentang mengatur nilai yang diinginkan dan mengetikkan objek Anda COleVariant , lihat kelas COleVariant. Perhatikan bahwa jika Anda tidak membuat kumpulan rekaman UNICODE, COleVariant objek harus dinyatakan secara eksplisit ANSI. Ini dapat dilakukan dengan menggunakan bentuk konstruktor COleVariant::COleVariant(lpszSrc,vtSrc) dengan vtSrc diatur ke VT_BSTRT (ANSI) atau dengan menggunakan COleVariant fungsi SetString(lpszSrc,vtSrc) dengan vtSrc diatur ke .VT_BSTRT

CDaoRecordset::SetParamValueNull

Panggil fungsi anggota ini untuk mengatur parameter ke nilai Null.

void SetParamValueNull(int nIndex);
void SetParamValueNull(LPCTSTR lpszName);

Parameter

nIndex
Indeks bidang dalam kumpulan rekaman, untuk pencarian berdasarkan indeks berbasis nol.

lpszName
Nama bidang dalam kumpulan rekaman, untuk pencarian berdasarkan nama.

Keterangan

C++ NULL tidak sama dengan Null, yang, dalam terminologi database, berarti "tidak memiliki nilai."

CDaoRecordset::SetPercentPosition

Panggil fungsi anggota ini untuk mengatur nilai yang mengubah perkiraan lokasi rekaman saat ini di objek recordset berdasarkan persentase rekaman dalam kumpulan rekaman.

void SetPercentPosition(float fPosition);

Parameter

fPosisi
Angka antara 0 dan 100.

Keterangan

Saat bekerja dengan kumpulan rekaman jenis dinaset atau jenis rekam jepret, pertama-tama isi kumpulan rekaman dengan pindah ke rekaman terakhir sebelum Anda memanggil SetPercentPosition. Jika Anda memanggil SetPercentPosition sebelum mengisi set rekaman sepenuhnya, jumlah pergerakan relatif terhadap jumlah rekaman yang diakses seperti yang ditunjukkan oleh nilai GetRecordCount. Anda dapat berpindah ke rekaman terakhir dengan memanggil MoveLast.

Setelah Anda memanggil SetPercentPosition, rekaman pada perkiraan posisi yang sesuai dengan nilai tersebut menjadi saat ini.

Catatan

Memanggil SetPercentPosition untuk memindahkan rekaman saat ini ke rekaman tertentu dalam kumpulan rekaman tidak disarankan. Panggil fungsi anggota SetBookmark sebagai gantinya.

Untuk informasi terkait, lihat topik "Properti PersenPosisi" di Bantuan DAO.

CDaoRecordset::Update

Panggil fungsi anggota ini setelah panggilan ke AddNew fungsi atau Edit anggota.

virtual void Update();

Keterangan

Panggilan ini diperlukan untuk menyelesaikan AddNew operasi atau Edit .

Baik AddNew dan Edit siapkan buffer edit tempat data yang ditambahkan atau diedit ditempatkan untuk disimpan ke sumber data. Update menyimpan data. Hanya bidang yang ditandai atau terdeteksi sebagai diubah yang diperbarui.

Jika sumber data mendukung transaksi, Anda dapat melakukan Update panggilan (dan bagian yang sesuai AddNew atau Edit panggilan) dari transaksi.

Perhatian

Jika Anda menelepon Update tanpa terlebih dahulu memanggil atau AddNewEdit, Update akan melempar CDaoException. Jika Anda memanggil AddNew atau Edit, Anda harus memanggil Update sebelum memanggil MoveNext atau menutup kumpulan rekaman atau koneksi sumber data. Jika tidak, perubahan Anda akan hilang tanpa pemberitahuan.

Ketika objek recordset dikunci secara pesimis di lingkungan multipengguna, rekaman tetap terkunci sejak waktu Edit digunakan hingga pembaruan selesai. Jika kumpulan rekaman dikunci secara optimis, rekaman dikunci dan dibandingkan dengan rekaman yang telah diedit sebelumnya tepat sebelum diperbarui dalam database. Jika rekaman telah berubah sejak Anda memanggil Edit, Update operasi gagal dan MFC melemparkan pengecualian. Anda dapat mengubah mode penguncian dengan SetLockingMode.

Catatan

Penguncian optimis selalu digunakan pada format database eksternal, seperti ODBC dan ISAM yang dapat diinstal.

Untuk informasi terkait, lihat topik "AddNew Method", "CancelUpdate Method", "Delete Method", "LastModified Property", "Update Method", dan "EditMode Property" di Bantuan DAO.

Baca juga

Kelas CObject
Bagan Hierarki
Kelas CDaoTableDef
Kelas CDaoWorkspace
Kelas CDaoDatabase
Kelas CDaoQueryDef