CDaoRecordset::Open

เสมือนโมฆะเปิด (int nOpenType AFX_DAO_USE_DEFAULT_TYPE, LPCTSTR = lpszSQL = NULL, int nOptions= 0 );
โยน (CDaoException, CMemoryException);

เสมือนโมฆะเปิด (CDaoTableDef *pTableDef,int nOpenType = dbOpenTable, int nOptions= 0 );
โยน (CDaoException, CMemoryException);

เสมือนโมฆะเปิด (CDaoQueryDef *pQueryDef,int nOpenType = dbOpenDynaset, int nOptions= 0 );
โยน (CDaoException, CMemoryException);

พารามิเตอร์

nOpenType

หนึ่งในค่าต่อไปนี้:

lpszSQL

ตัวชี้ของสายอักขระที่ประกอบด้วยอย่างใดอย่างหนึ่งต่อไปนี้:

nOptions

อย่างน้อยหนึ่งตัวเลือกแสดงอยู่ด้านล่าง ค่าเริ่มต้นคือ 0 ค่าที่เป็นไปได้จะเป็นดังนี้:

pTableDef

nbspตัวชี้ไปยังวัตถุCDaoTableDef รุ่นนี้ใช้ได้เฉพาะกับตารางชนิดชุดระเบียน เมื่อใช้ตัวเลือกนี้ จะไม่มีใช้ตัวชี้การCDaoDatabaseที่ใช้ในการก่อสร้างCDaoRecordset ใช้ฐานข้อมูล tabledef อยู่ค่อนข้าง(&N)?

pQueryDef

ตัวชี้ไปยังวัตถุCDaoQueryDef รุ่นนี้ใช้ได้เฉพาะกับชนิด dynaset และชนิด snapshot ของชุดระเบียน เมื่อใช้ตัวเลือกนี้ จะไม่มีใช้ตัวชี้การCDaoDatabaseที่ใช้ในการก่อสร้างCDaoRecordset ใช้ฐานข้อมูลอยู่ของ querydef ค่อนข้าง?

หมายเหตุ

คุณต้องเรียกใช้ฟังก์ชันนี้สมาชิกเรียกระเบียนสำหรับชุดระเบียน ก่อนการเรียกเปิดคุณต้องสร้างวัตถุ recordset มีหลายวิธีการทำเช่นนี้:

สำหรับรุ่นเปิดที่ใช้พารามิเตอร์lpszSQLเมื่อเปิดชุดระเบียนคุณสามารถเรียกระเบียนหนึ่งในหลายวิธี ตัวแรกจะมีฟังก์ชัน dfx ไม่ถูกต้องในDoFieldExchangeของคุณ ตัวเลือกที่สองคือการ ใช้การรวมแบบไดนามิก โดยการเรียกฟังก์ชันGetFieldValueสมาชิก ตัวเลือกเหล่านี้สามารถดำเนินการแยก หรือรวมกัน ถ้าพวกเขาจะรวมกัน คุณจะต้องผ่านในคำสั่ง SQL ด้วยตัวคุณเองในการเรียกเพื่อเปิด สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการรวมแบบไดนามิก ให้ดูบทความ DAO Recordset: รวมระเบียนแบบไดนามิกในVisual c ++ Programmer ของคู่มือ.nbsp(&N);

เมื่อคุณใช้รุ่นที่สองของเปิดที่คุณส่งผ่านในวัตถุCDaoTableDefคอลัมน์ผลลัพธ์จะพร้อมใช้งานสำหรับคุณและ/ผูกผ่านทางDoFieldExchangeและกลไก dfx ไม่ถูกต้อง หรือผูกแบบไดนามิกผ่านGetFieldValue?

หมายเหตุnbsp  คุณสามารถเพียงเรียกเปิดใช้วัตถุCDaoTableDefสำหรับตารางชนิดชุดระเบียน(&N)?

เมื่อคุณใช้รุ่นที่สามของเปิดที่คุณส่งผ่านในวัตถุCDaoQueryDefที่จะดำเนินการแบบสอบถาม และและ/คอลัมน์ผลลัพธ์จะพร้อมใช้งานสำหรับคุณเพื่อผูกผ่านทางDoFieldExchangeและกลไก dfx ไม่ถูกต้อง หรือผูกแบบไดนามิกผ่านGetFieldValue?

หมายเหตุnbsp  คุณสามารถเพียงเรียกเปิดใช้วัตถุCDaoQueryDefสำหรับชนิด dynaset และชนิด snapshot ของชุดระเบียน(&N)?

สำหรับรุ่นแรกของการเปิดที่ใช้พารามิเตอร์lpszSQLระเบียนถูกเลือกตามเกณฑ์ที่แสดงในตารางต่อไปนี้?

ค่าของพารามิเตอร์lpszSQL ระเบียนที่เลือกถูกกำหนดโดย ตัวอย่าง
ค่า NULL สตริงที่ส่งกลับโดยGetDefaultSQL?
รายการที่คั่นด้วยเครื่องหมายจุลภาคของ tabledefs อย่าง น้อยหนึ่งและ/หรือชื่อของ querydef? คอลัมน์ทั้งหมดที่แสดงอยู่ในDoFieldExchange?
"ลูกค้า"
เลือกรายการคอลัมน์จากตารางรายการ คอลัมน์ที่ระบุจากการ tabledef(s) ระบุและ/หรือ querydef(s)?
"เลือก CustId, CustName
จากลูกค้า"

กระบวนการปกติคือการ ส่งผ่านค่า NULLจะเปิด ในกรณีนี้เปิดเรียกGetDefaultSQLฟังก์ชันการสมาชิก overridable ที่ ClassWizard สร้างเมื่อสร้างแบบCDaoRecordset-มาคลา ค่านี้ช่วยให้ชื่อ tabledef(s) และ/หรือ querydef ที่คุณระบุไว้ใน ClassWizard คุณสามารถระบุข้อมูลอื่น ๆ แทนในพารามิเตอร์lpszSQL?

สิ่งที่คุณส่งผ่าน โครงสร้างขั้นสุดท้ายสตริ SQL สำหรับแบบสอบถาม (สตริอาจมี SQLที่ใดและใบสั่งโดยอนุถูกผนวกเข้ากับสตริlpszSQLคุณผ่าน) และดำเนินการแบบสอบถามแล้วเปิด คุณสามารถตรวจสอบสายที่ประดิษฐ์ โดยเรียกGetSQLหลังจากเรียกเปิด ?

เขตข้อมูลข้อมูลสมาชิกของคลาสชุดระเบียนของคุณผูกไว้กับคอลัมน์ข้อมูลที่เลือก ถ้าระเบียนใด ๆ มีการส่งกลับระเบียนแรกกลายเป็น ระเบียนปัจจุบัน?

ถ้าคุณต้องการตั้งค่าตัวเลือกสำหรับชุดระเบียน เช่นตัวกรองหรือเรียงลำดับ การตั้งค่าm_strSortหรือm_strFilterหลังจากที่คุณสร้างวัตถุ recordset แต่ก่อนเรียกเปิด ถ้าคุณต้องการฟื้นฟูระเบียนในชุดระเบียนหลังจากชุดระเบียนถูกเปิดอยู่แล้ว โทรติดต่อสอบถามใหม่อีก?

หากคุณเรียกเปิดบนชนิด dynaset หรือชุดระเบียนสแนปช็อท หรือแหล่งข้อมูลอ้างอิงไปยังคำสั่ง SQL หรือ tabledef ที่แสดงในตารางที่แนบ คุณไม่สามารถใช้dbOpenTableสำหรับอาร์กิวเมนต์ชนิด ถ้าคุณทำการ MFC ผิดข้อยกเว้น เมื่อต้องการกำหนดว่า วัตถุ tabledef แทนในตารางแนบ สร้างวัตถุCDaoTableDefและเรียกใช้ฟังก์ชันGetConnectสมาชิก?

ใช้ค่าสถานะdbSeeChangesถ้าคุณต้องการเปลี่ยนแปลงที่ทำ โดยผู้ใช้อื่นหรือโปรแกรมอื่นบนเครื่องคอมพิวเตอร์ของคุณเมื่อคุณแก้ไข หรือลบระเบียนเดียวกันในการตรวจจับ ตัวอย่างเช่น ถ้าผู้ใช้สองคนเริ่มแก้ไขระเบียนเดียวกัน แรกผู้ใช้เรียกใช้ฟังก์ชันการปรับปรุงสมาชิกสำเร็จ เมื่อเรียกโปรแกรมปรับปรุงโดยผู้ใช้ที่สองCDaoExceptionที่ถูกส่งออกไป ในทำนองเดียวกัน ถ้าผู้ใช้คนที่สองได้พยายามเรียกลบเพื่อลบเรกคอร์ด และมันได้ถูกเปลี่ยนแปลง โดยผู้ใช้แรกCDaoExceptionเกิด?

โดยทั่วไป ถ้าผู้ใช้ที่ได้รับนี้CDaoExceptionขณะปรับปรุง โค้ดของคุณควรฟื้นฟูเนื้อหาของเขตข้อมูล และเรียกค่าปรับเปลี่ยนใหม่ ถ้าข้อยกเว้นเกิดขึ้นในกระบวนการการลบ โค้ดของคุณสามารถแสดงระเบียนข้อมูลใหม่และผู้ใช้ระบุว่า ข้อความที่ข้อมูลที่มีการเปลี่ยนแปลงล่าสุด ณจุดนี้ โค้ดของคุณสามารถร้องขอการยืนยันว่า ผู้ใช้ยังคงต้องการลบระเบียน?

เคล็ดลับ ใช้ไปข้างหน้าเดียวเลื่อนตัวเลือก (dbForwardOnly) เพื่อปรับปรุงประสิทธิภาพการทำงานเมื่อโปรแกรมประยุกต์ของคุณทำให้รหัสผ่านเดียวกับชุดระเบียนถูกเปิดจากแหล่งข้อมูล ODBC?

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเปิดชุดระเบียน ดูบทความ DAO Recordset: สร้างชุดระเบียนและ DAO: สร้าง เปิด และปิดวัตถุ DAOในVisual c ++ Programmer's Guide สำหรับข้อมูลที่เกี่ยวข้อง ดูหัวข้อ "เมธอด OpenRecordset" ในวิธีใช้ DAO?

ภาพรวม CDaoRecordset |nbsp สมาชิกของคลาส| แผนภูมิของลำดับชั้น(&N)

ดูเพิ่มเติมnbspCDaoRecordset::Close, CDaoRecordset::CDaoRecordset(&N)

Index