Kelas CDaoRecordset
Mewakili sekumpulan rekaman yang dipilih dari sumber data.
Catatan
Objek Akses Data (DAO) didukung melalui Office 2013. DAO 3.6 adalah versi akhir, dan usang.
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 CDaoRecordset tabel 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 Connectivity (ODBC) dan driver ODBC untuk DBMS tersebut.
Catatan
Kelas database DAO berbeda dari kelas database MFC berdasarkan Open Database Connectivity (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 set rekaman jenis rekam jepret, dan apakah itu dapat diperbarui atau baca-saja — ini tergantung pada kemampuan database atau sumber data Konektivitas Database Terbuka (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
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 disisipkan 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. Anda harus memanggil CDaoWorkspace::BeginTrans sebelum memanggil AddNew
.
Ini ilegal untuk memanggil AddNew
recordset yang fungsi anggotanya Open
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 diperbarui atau disisipkan 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
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 memanggil Update
, 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 berguna yang tidak mengharuskan Anda membuat dan menyambungkan 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 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 belum 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 diperbarui atau disisipkan 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 dinaset, 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. Anda harus memanggil CDaoWorkspace::BeginTrans
sebelum memanggil Edit
dan setelah recordset dibuka. CDaoWorkspace::CommitTrans
Panggilan 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 di 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 FindFirst
anggota , 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 rekaman 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 nonzero, 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 A.S. (bulan-hari-tahun) saat 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 nonzero, 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 A.S. (bulan-hari-tahun) saat 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 nonzero, 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 A.S. (bulan-hari-tahun) saat 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 nonzero, 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 A.S. (bulan-hari-tahun) saat 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 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 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 di 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, AtributAFX_DAO_SECONDARY_INFO
Informasi utama, plus: Posisi Ordinal, Diperlukan, Izinkan Panjang Nol, Susunan Susunan, Nama Asing, Bidang Sumber, Tabel SumberAFX_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 .
GetFieldValue
DoFieldExchange
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
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, BidangAFX_DAO_SECONDARY_INFO
Informasi utama, plus: Primer, Unik, Berkluster, IgnoreNulls, Diperlukan, AsingAFX_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 terusan saja, 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 sampai GetRecordCount
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 tabeldbOpenDynaset
Kumpulan rekaman jenis DynasetdbOpenSnapshot
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 akan memberikan 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 memanggilMoveFirst
. Oleh karena itu, memanggilOpen
sekumpulan catatan kosong menyebabkanIsBOF
danIsEOF
mengembalikan nonzero. (Lihat tabel berikut untuk perilaku gagalMoveFirst
atauMoveLast
panggilan.)Semua operasi Pemindahan yang berhasil menemukan rekaman menyebabkan dan
IsBOF
IsEOF
mengembalikan 0.Panggilan
AddNew
diikuti denganUpdate
panggilan yang berhasil menyisipkan rekaman baru akan menyebabkanIsBOF
pengembalian 0, tetapi hanya jikaIsEOF
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, meskipun menghapus satu-satunya rekaman yang tersisa dari kumpulan rekaman, tidak akan mengubah nilaiIsBOF
atauIsEOF
.
Tabel ini menunjukkan operasi Pemindahan mana yang diizinkan dengan kombinasi yang berbeda dari IsBOF
/ IsEOF
.
Status | 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
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 memanggilMoveFirst
. Oleh karena itu, memanggilOpen
sekumpulan catatan kosong menyebabkanIsBOF
danIsEOF
mengembalikan nonzero. (Lihat tabel berikut untuk perilaku panggilan yang gagalMoveFirst
.)Semua operasi Pemindahan yang berhasil menemukan rekaman menyebabkan dan
IsBOF
IsEOF
mengembalikan 0.Panggilan
AddNew
diikuti denganUpdate
panggilan yang berhasil menyisipkan rekaman baru akan menyebabkanIsBOF
pengembalian 0, tetapi hanya jikaIsEOF
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, meskipun menghapus satu-satunya rekaman yang tersisa dari kumpulan rekaman, tidak akan mengubah nilaiIsBOF
atauIsEOF
.
Tabel ini menunjukkan operasi Pemindahan mana yang diizinkan dengan kombinasi yang berbeda dari IsBOF
/ IsEOF
.
Status | 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 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 Open
atau Requery
anggota recordset 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 perlu langsung 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 jenis 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 IsBOF
IsEOF
sebelum operasi Pindahkan untuk menentukan apakah kumpulan rekaman memiliki rekaman apa pun. Setelah Anda memanggil Open
atau Requery
, hubungi atau IsBOF
IsEOF
.
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 hanya-maju, 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 MoveFirst
fungsi anggota , , MoveLast
MoveNext
, 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 IsBOF
IsEOF
sebelum operasi Pindahkan untuk menentukan apakah kumpulan rekaman memiliki rekaman apa pun. Setelah Anda memanggil Open
atau Requery
, hubungi atau IsBOF
IsEOF
.
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 IsBOF
IsEOF
sebelum operasi Pindahkan untuk menentukan apakah kumpulan rekaman memiliki rekaman apa pun. Setelah Anda memanggil Open
atau Requery
, hubungi atau IsBOF
IsEOF
.
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 untuk MovePrev
melempar 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 IsBOF
IsEOF
sebelum operasi Pindahkan untuk menentukan apakah kumpulan rekaman memiliki rekaman apa pun. Setelah Anda memanggil Open
atau Requery
, hubungi atau IsBOF
IsEOF
.
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 untuk MovePrev
melempar 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 IsBOF
IsEOF
sebelum operasi Pindahkan untuk menentukan apakah kumpulan rekaman memiliki rekaman apa pun. Setelah Anda memanggil Open
atau Requery
, hubungi atau IsBOF
IsEOF
.
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
Buat 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
pointer 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 recordset, teruskan penunjuk ke
CDaoDatabase
objek yang tidak terbuka. Kumpulan rekaman membukaCDaoDatabase
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. HimpunanCDaoDatabase
rekaman kemudian membuka objek dan membuatnya tetap terbuka selama kumpulan rekaman terbuka. Saat Anda memanggilClose
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 CDaoTableDef
objek, kolom yang dihasilkan tersedia untuk Anda ikat 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 dijalankan, dan kolom yang dihasilkan tersedia untuk Anda ikat 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 CDaoRecordset
kelas -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 akan melempar pengecualian. Untuk menentukan apakah objek tabledef mewakili tabel terlampir, buat objek CDaoTableDef dan panggil fungsi anggota GetConnect-nya.
dbSeeChanges
Gunakan bendera jika Anda ingin menjebak perubahan yang dibuat oleh pengguna lain atau program lain di 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
saat 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 CanRestart
fungsi anggota. CanRestart
tidak menjamin bahwa Requery
akan berhasil.
Perhatian
Hubungi Requery
hanya setelah Anda menelepon Open
.
Catatan
Panggilan mengubah Requery
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
pada tidak menentukan 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.
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 saat 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
tabel terlampir dengan jenis apa pun karena tabel terlampir harus dibuka sebagai jenis dynaset atau set rekaman 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.
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 1.200 rekaman. Cache dapat menggunakan sejumlah besar memori.
Keterangan
Cache adalah ruang dalam memori lokal yang menyimpan data yang terakhir diambil dari server jika data 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 di 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 SetCacheSize
parameter 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.
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 Cari, 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 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 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, 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 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 .
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
Saat 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. 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 catatan 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 AddNew
Edit
, 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.
Lihat juga
Kelas CObject
Bagan Hierarki
Kelas CDaoTableDef
Kelas CDaoWorkspace
Kelas CDaoDatabase
Kelas CDaoQueryDef