Kelas CFieldExchange
Mendukung rutinitas pertukaran bidang rekaman (RFX) dan pertukaran bidang rekaman massal (RFX Massal) yang digunakan oleh kelas database.
Sintaks
class CFieldExchange
Anggota
Metode Publik
Nama | Deskripsi |
---|---|
CFieldExchange::IsFieldType | Mengembalikan nonzero jika operasi saat ini sesuai untuk jenis bidang yang sedang diperbarui. |
CFieldExchange::SetFieldType | Menentukan jenis anggota data recordset — kolom atau parameter — yang diwakili oleh semua panggilan berikut ke fungsi RFX hingga panggilan berikutnya ke SetFieldType . |
Keterangan
CFieldExchange
tidak memiliki kelas dasar.
Gunakan kelas ini jika Anda menulis rutinitas pertukaran data untuk jenis data kustom atau saat Anda menerapkan pengambilan baris massal; jika tidak, Anda tidak akan langsung menggunakan kelas ini. RFX dan RFX Massal bertukar data antara anggota data bidang objek himpunan rekaman Anda dan bidang terkait dari rekaman saat ini pada sumber data.
Catatan
Jika Anda bekerja dengan kelas Objek Akses Data (DAO) daripada kelas Open Database Connectivity (ODBC), gunakan kelas CDaoFieldExchange sebagai gantinya. Untuk informasi selengkapnya, lihat artikel Gambaran Umum:Pemrograman Database.
Objek CFieldExchange
menyediakan informasi konteks yang diperlukan untuk pertukaran bidang rekaman atau pertukaran bidang rekaman massal untuk terjadi. CFieldExchange
objek mendukung sejumlah operasi, termasuk parameter pengikatan dan anggota data bidang dan mengatur berbagai bendera pada bidang rekaman saat ini. Operasi RFX dan RFX Massal dilakukan pada anggota data kelas recordset dari jenis yang ditentukan oleh enum
FieldType di CFieldExchange
. Nilai FieldType yang mungkin adalah:
CFieldExchange::outputColumn
untuk anggota data bidang.CFieldExchange::inputParam
atauCFieldExchange::param
untuk anggota data parameter input.CFieldExchange::outputParam
untuk anggota data parameter output.CFieldExchange::inoutParam
untuk anggota data parameter input/output.
Sebagian besar fungsi anggota kelas dan anggota data disediakan untuk menulis rutinitas RFX kustom Anda sendiri. Anda akan sering menggunakan SetFieldType
. Untuk informasi selengkapnya, lihat artikel Record Field Exchange (RFX) dan Recordset (ODBC). Untuk informasi tentang pengambilan baris massal, lihat artikel Kumpulan Catatan: Mengambil Rekaman secara Massal (ODBC). Untuk detail tentang fungsi global RFX dan RFX Massal, lihat Fungsi Pertukaran Bidang Rekaman di bagian Makro MFC dan Global dari referensi ini.
Hierarki Warisan
CFieldExchange
Persyaratan
Header: afxdb.h
CFieldExchange::IsFieldType
Jika Anda menulis fungsi RFX Anda sendiri, panggil IsFieldType
di awal fungsi Anda untuk menentukan apakah operasi saat ini dapat dilakukan pada jenis anggota data bidang atau parameter tertentu (CFieldExchange::outputColumn
, , CFieldExchange::inputParam
CFieldExchange::param
, CFieldExchange::outputParam
, atau CFieldExchange::inoutParam
).
BOOL IsFieldType(UINT* pnField);
Parameter
pnField
Jumlah berurutan dari anggota data bidang atau parameter dikembalikan dalam parameter ini. Nomor ini sesuai dengan urutan anggota data dalam fungsi CRecordset::D oFieldExchange atau CRecordset::D oBulkFieldExchange .
Tampilkan Nilai
Bukan nol jika operasi saat ini dapat dilakukan pada bidang atau jenis parameter saat ini.
Keterangan
Ikuti model fungsi RFX yang ada.
CFieldExchange::SetFieldType
Anda memerlukan panggilan ke SetFieldType
di kelas recordset Anda DoFieldExchange atau DoBulkFieldExchange mengambil alih.
void SetFieldType(UINT nFieldType);
Parameter
nFieldType
Nilai enum FieldType
, dideklarasikan dalam CFieldExchange
, yang bisa menjadi salah satu dari berikut ini:
CFieldExchange::outputColumn
CFieldExchange::inputParam
CFieldExchange::param
CFieldExchange::outputParam
CFieldExchange::inoutParam
Keterangan
Untuk anggota data bidang, Anda harus memanggil SetFieldType
dengan parameter CFieldExchange::outputColumn
, diikuti dengan panggilan ke fungsi RFX atau RFX Massal. Jika Anda belum menerapkan pengambilan baris massal, maka ClassWizard menempatkan panggilan ini SetFieldType
untuk Anda di bagian peta bidang dari DoFieldExchange
.
Jika Anda membuat parameter kelas recordset, Anda harus memanggil SetFieldType
lagi, di luar bagian peta bidang apa pun, diikuti oleh panggilan RFX untuk semua anggota data parameter. Setiap jenis anggota data parameter harus memiliki panggilannya sendiri SetFieldType
. Tabel berikut membedakan nilai berbeda yang dapat Anda teruskan SetFieldType
untuk mewakili anggota data parameter kelas Anda:
Nilai parameter SetFieldType | Jenis anggota data parameter |
---|---|
CFieldExchange::inputParam |
Parameter input. Nilai yang diteruskan ke kueri kumpulan rekaman atau prosedur tersimpan. |
CFieldExchange::param |
sama seperti CFieldExchange::inputParam . |
CFieldExchange::outputParam |
Parameter output. Nilai yang dikembalikan dari prosedur tersimpan himpunan catatan. |
CFieldExchange::inoutParam |
Parameter input/output. Nilai yang diteruskan ke dan dikembalikan dari prosedur tersimpan himpunan catatan. |
Secara umum, setiap grup panggilan fungsi RFX yang terkait dengan anggota data bidang atau anggota data parameter harus didahului oleh panggilan ke SetFieldType
. Parameter nFieldType dari setiap SetFieldType
panggilan mengidentifikasi jenis anggota data yang diwakili oleh panggilan fungsi RFX yang mengikuti SetFieldType
panggilan.
Untuk informasi selengkapnya tentang menangani parameter output dan input/output, lihat CRecordset
fungsi anggota FlushResultSet. Untuk informasi selengkapnya tentang fungsi RFX dan RFX Massal, lihat topik Fungsi Pertukaran Bidang Rekaman. Untuk informasi terkait tentang pengambilan baris massal, lihat artikel Kumpulan Rekaman: Mengambil Rekaman secara Massal (ODBC).
Contoh
Contoh ini menunjukkan beberapa panggilan ke fungsi RFX dengan panggilan yang menyertainya ke SetFieldType
. Perhatikan bahwa SetFieldType
dipanggil melalui pFX
penunjuk ke CFieldExchange
objek.
void CSections::DoFieldExchange(CFieldExchange *pFX)
{
pFX->SetFieldType(CFieldExchange::outputColumn);
RFX_Text(pFX, _T("[CourseID]"), m_CourseID);
RFX_Text(pFX, _T("[InstructorID]"), m_InstructorID);
RFX_Text(pFX, _T("[RoomNo]"), m_RoomNo);
RFX_Text(pFX, _T("[Schedule]"), m_Schedule);
// output parameter
pFX->SetFieldType(CFieldExchange::outputParam);
RFX_Long(pFX, _T("Instructor_Count"), m_nCountParam);
// input parameter
pFX->SetFieldType(CFieldExchange::inputParam);
RFX_Text(pFX, _T("Department_Name"), m_strNameParam);
}