เมื่อคุณใช้CDynamicAccessorวิธีการเปิดคำสั่งสร้างตัวเข้าถึงสำหรับคุณโดยอัตโนมัติ ตามข้อมูลที่คอลัมน์ของ rowset ที่เปิดอยู่ คุณสามารถแทนที่การเข้าถึงแบบไดนามิกเพื่อควบคุมเหมือนว่าคอลัมน์ถูกผูกไว้?
เมื่อต้องการแทนที่การเข้าถึงแบบไดนามิก ผ่านเท็จเป็นพารามิเตอร์ล่าสุดวิธีCCommand::Open การป้องกันไม่ให้เปิดจากการสร้างการเข้าถึงโดยอัตโนมัติ คุณสามารถโทรGetColumnInfoและเรียกAddBindEntryสำหรับแต่ละคอลัมน์ที่คุณต้องการผูก รหัสต่อไปนี้แสดงวิธีการดังกล่าว
USES_CONVERSION
คู่ dblProductID
CCommandltCDynamicAccessor > ผลิตภัณฑ์
/ / เปิดตาราง ผ่านเท็จเพื่อป้องกันไม่ให้อัตโนมัติรวมผลิตภัณฑ์เปิด (เซสชัน _T (" Select * จากผลิตภัณฑ์"), NULL, NULL, DBGUID_DEFAULT, false);
ULONG nColumns
DBCOLUMNINFO * pColumnInfo
/ / รับข้อมูลคอลัมน์จาก rowset ที่เปิด
ผลิตภัณฑ์GetColumnInfo (& nColumns และ pColumnInfo);
/ / ผูกหมายเลขผลิตภัณฑ์เป็น double
.wType pColumnInfo [0] = DBTYPE_R8
.ulColumnSize pColumnInfo [0] = 8
ผลิตภัณฑ์AddBindEntry(pColumnInfo[0])
/ / ผูกชื่อผลิตภัณฑ์ซึ่งเป็น
ผลิตภัณฑ์AddBindEntry(pColumnInfo[1])
/ / ผูกระดับการสั่งซื้ออีกครั้งเป็นสตริง
.wType pColumnInfo [8] = DBTYPE_STR
.ulColumnSize pColumnInfo [8] = 10
ผลิตภัณฑ์AddBindEntry(pColumnInfo[8])
/ / เราเสร็จแล้วผูกที่ระบุ ไปข้างหน้า และผูก
ผลิตภัณฑ์Bind()
/ / ฟรีสำหรับคอลัมน์ข้อมูลที่เราดึงข้อมูลในหน่วยความจำ / / ก่อนหน้าเรียกไปยัง GetColumnInfo
CoTaskMemFree(pColumnInfo)
char * pszProductName
char * pszReorderLevel
bool bRC
/ / ทำการวนรอบผ่านระเบียนการสืบค้นกลับออกจากข้อมูลที่
ในขณะที่ (ผลิตภัณฑ์MoveNext() == S_OK)
{
bRC =ผลิตภัณฑ์GetValue (1 และ dblProductID);
pszProductName = (char *) ผลิตภัณฑ์GetValue(2)
pszReorderLevel = (char *) ผลิตภัณฑ์GetValue(9)
ATLTRACE (_T ("แทน% lf \"%s\ = " \"%s\"\n"), dblProductID
A2T(pszProductName), A2T(pszReorderLevel))
}