CRecordset::Open
เสมือน BOOL เปิด ( UINT nOpenType = AFX_DB_USE_DEFAULT_TYPE, LPCTSTR lpszSQL = NULL, DWORD dwOptions = ศ ); โยน ( CDBException , CMemoryException );
ส่งกลับค่า
ไม่ใช่ศูนย์ถ้าสำเร็จ เปิดวัตถุCRecordset 0 อื่นถ้าCDatabase::Open (ถ้าเรียกว่า) ส่งกลับค่า 0?
พารามิเตอร์
nOpenType
ยอมรับค่าเริ่มต้นAFX_DB_USE_DEFAULT_TYPE หรือใช้วิธีการใดวิธีการหนึ่งในค่าต่อไปนี้จากenum OpenType :
CRecordset::dynaset nbsp ชุดระเบียน ด้วยการเลื่อนแบบสองทิศทาง เป็นสมาชิกและการจัดลำดับของระเบียนจะถูกกำหนดเมื่อมีเปิดชุดระเบียน แต่การเปลี่ยนแปลงที่ทำ โดยผู้ใช้อื่นค่าข้อมูลจะปรากฏให้เห็นต่อการดำเนินการนำมาใช้ Dynasets ถูกเรียกว่าชุดระเบียนชุดคีย์-ขับเคลื่อน(&N)?
CRecordset::snapshot nbsp ชุดระเบียนที่คงที่ มีสองทิศทางเลื่อน เป็นสมาชิกและการจัดลำดับของระเบียนจะถูกกำหนดเมื่อมีเปิดชุดระเบียน มีกำหนดค่าข้อมูลเมื่อระเบียนถูกนำมาใช้ การเปลี่ยนแปลงที่ทำ โดยผู้ใช้คนอื่นจะมองไม่เห็นจนกว่าชุดระเบียนถูกปิด และเปิดใหม่แล้ว(&N)?
CRecordset::dynamic nbsp ชุดระเบียน ด้วยการเลื่อนแบบสองทิศทาง การเปลี่ยนแปลงที่ทำ โดยผู้ใช้อื่นค่าสมาชิก การสั่งซื้อ และข้อมูลจะปรากฏให้เห็นต่อการดำเนินการนำมาใช้ หมายเหตุว่า โปรแกรมควบคุม ODBC ไม่สนับสนุนชนิดของชุดระเบียนนี้(&N)?
CRecordset::forwardOnly nbsp ชุดระเบียนแบบอ่านอย่างเดียวกับการเลื่อนไปข้างหน้าเท่านั้น(&N)?
สำหรับCRecordset ค่าเริ่มต้นคือCRecordset::snapshot Visual c ++ตัวช่วยสร้างการโต้ตอบกับ ODBC CRecordset ทั้ง DAO CDaoRecordset ซึ่งมีค่าเริ่มต้นที่แตกต่างกันที่ช่วยให้กลไกในค่าเริ่มต้น?
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับชนิดของชุดระเบียนเหล่านี้ ให้ดูบทความ ชุดระเบียน (ODBC) ในคำแนะนำของ Visual c ++ Programmer ของ สำหรับข้อมูลที่เกี่ยวข้อง ดูที่บทความ "การใช้บล็อกและเลื่อนเคอร์เซอร์" ในการอ้างอิงของ ODBC SDK Programmer ?
ข้อควรระวัง nbsp ถ้าชนิดที่ร้องขอไม่สนับสนุน กรอบข้อผิดพลาดข้อยกเว้น(&N)?
lpszSQL
ตัวชี้ของสายอักขระที่ประกอบด้วยอย่างใดอย่างหนึ่งต่อไปนี้:
ชี้เป็นNULL ?
ชื่อของตาราง?
คำสั่ง SQL ที่เลือก (หรือไม่ก็กับประโยค SQLที่ใด หรือใบสั่งโดย )?
เรียก งบการระบุชื่อของแบบสอบถามล่วงหน้า (กระบวนงานที่เก็บไว้) ใช้ความระมัดระวังว่า คุณไม่สามารถแทรกช่องว่างระหว่างวงเล็บและคำสำคัญที่เรียก ?
ดูข้อมูลเพิ่มเติมเกี่ยวกับข้อความนี้ ตารางและการอภิปรายของ ClassWizard ของบทบาทภายใต้ข้อสังเกต?
หมายเหตุ nbsp ลำดับของคอลัมน์ในชุดผลลัพธ์ของคุณต้องตรงกับลำดับของการ RFX หรือยกเลิกการเรียกฟังก์ชัน RFX จำนวนมากในฟังก์ชันของDoFieldExchange หรือDoBulkFieldExchange (&N)?
dwOptions
Bitmask ซึ่งสามารถระบุชุดของค่าระบุไว้ด้านล่าง บางส่วนจะแยกออกจากกัน ค่าเริ่มต้นคือไม่มี ?
CRecordset::none nbsp การตั้งค่าตัวเลือกไม่ ค่าพารามิเตอร์นี้เป็นเอกลักษณ์ที่ มีค่าอื่น ๆ ทั้งหมด โดยค่าเริ่มต้น ชุดระเบียนจะถูกปรับปรุงแก้ไข หรือลบ และช่วยให้การผนวกระเบียนใหม่ด้วยAddNew Updatability ขึ้นอยู่กับแหล่งที่มาของข้อมูลรวมทั้งตัวเลือกnOpenType ที่คุณระบุ ปรับให้เหมาะสมสำหรับเพิ่มจำนวนมากไม่พร้อมใช้งาน กำลังนำแถวจำนวนมากจะไม่สามารถนำมาจัด ระเบียนที่ถูกลบจะถูกข้ามในระหว่างชุดระเบียนนำทางไม่ ที่คั่นหน้าเว็บจะไม่พร้อมใช้งาน ดำเนินการตรวจสอบเขตข้อมูลโดยอัตโนมัติที่สกปรก(&N)?
CRecordset::appendOnly nbsp ไม่อนุญาตให้แก้ไข หรือลบ บนชุดระเบียน อนุญาตให้AddNew เท่านั้น ตัวเลือกนี้มีเอกลักษณ์ด้วยCRecordset::readOnly (&N)?
CRecordset::readOnly nbsp เปิดชุดระเบียนเป็นแบบอ่านอย่างเดียว ตัวเลือกนี้มีเอกลักษณ์ด้วยCRecordset::appendOnly (&N)?
CRecordset::optimizeBulkAdd nbsp ใช้คำสั่ง SQL ที่เตรียมพร้อมเพื่อปรับเพิ่มระเบียนจำนวนมากในครั้งเดียว ใช้ได้เฉพาะเมื่อคุณไม่ได้ใช้ฟังก์ชัน ODBC API SQLSetPos เพื่อปรับปรุงชุดระเบียน การปรับปรุงที่แรกกำหนดเขตข้อมูลที่ถูกทำเครื่องหมายสกปรก ตัวเลือกนี้มีเอกลักษณ์ด้วยCRecordset::useMultiRowFetch (&N)?
CRecordset::useMultiRowFetch nbsp ใช้เป็นกลุ่มแถวกำลังนำมาเพื่ออนุญาตให้มีหลายแถวถูกเรียกในการดำเนินการนำมาใช้ที่เดียว เป็นคุณลักษณะขั้นสูงออกแบบมาเพื่อปรับปรุงประสิทธิภาพ อย่างไรก็ตาม แลกเปลี่ยนเขตข้อมูลระเบียนจำนวนมากไม่สนับสนุน โดย ClassWizard ตัวเลือกนี้ไม่มีเอกลักษณ์ด้วยCRecordset::optimizeBulkAdd หมายเหตุว่า ถ้าคุณระบุCRecordset::useMultiRowFetch แล้วCRecordset::noDirtyFieldCheck ตัวเลือกจะถูกเปิดโดยอัตโนมัติ (การกำหนดบัฟเฟอร์คู่จะไม่พร้อมใช้งาน); ในชุดระเบียนไปข้างหน้าเดียวCRecordset::useExtendedFetch ตัวเลือกจะถูกเปิดโดยอัตโนมัติ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับขนาดใหญ่กำลังนำมาแถว ให้ดูบทความ ชุดระเบียน: กำลังนำระเบียนในกลุ่ม (ODBC) ในVisual c ++ Programmer ของคำแนะนำ (&N)?
CRecordset::skipDeletedRecords nbsp ข้ามระเบียนที่ถูกลบทั้งหมดเมื่อผ่านชุดระเบียน นี้จะลดประสิทธิภาพการทำงานในบาง fetches สัมพัทธ์ ตัวเลือกนี้ไม่ถูกต้องบนชุดระเบียนไปข้างหน้าเท่านั้น หมายเหตุว่าCRecordset::skipDeletedRecords จะคล้ายกับโปรแกรมควบคุมที่บรรจุ ซึ่งหมายความ ว่า แถวที่ถูกลบจะถูกเอาออกจากชุดระเบียน อย่างไรก็ตาม ถ้าโปรแกรมควบคุมของคุณ packs ระเบียน แล้วมันจะข้ามเฉพาะระเบียนที่คุณลบ นอกจากนี้มันไม่จะข้ามระเบียนที่ถูกลบ โดยผู้ใช้อื่นขณะเปิดชุดระเบียน CRecordset::skipDeletedRecords จะข้ามแถวที่ถูกลบ โดยผู้ใช้อื่น(&N)?
CRecordset::useBookmarks nbsp อาจใช้ที่คั่นหน้าเว็บบนชุดระเบียน ถ้าได้รับการสนับสนุน ที่คั่นหน้าเว็บเรียกข้อมูลช้า แต่เพิ่มประสิทธิภาพสำหรับการนำทางข้อมูล ไม่ถูกต้องบนชุดระเบียนไปข้างหน้าเท่านั้น สำหรับข้อมูลเพิ่มเติม ให้ดูบทความ ชุดระเบียน: คั่นหน้าและตำแหน่งสัมบูรณ์ (ODBC) ในVisual c ++ Programmer ของคำแนะนำ (&N)?
CRecordset::noDirtyFieldCheck nbsp ปิดเขตข้อมูลสกปรกโดยอัตโนมัติ (การกำหนดบัฟเฟอร์คู่) การตรวจสอบ วิธีนี้จะเพิ่มประสิทธิภาพการทำงาน อย่างไรก็ตาม คุณด้วยตนเองต้องกำหนดเขตข้อมูลเป็นสกปรก โดยโทรSetFieldDirty และสมาชิกSetFieldNull ฟังก์ชันหมายเหตุที่กำหนดบัฟเฟอร์คู่ในคลาCRecordset คล้ายคลึงกับการกำหนดบัฟเฟอร์คู่ในคลาสCDaoRecordset อย่างไรก็ตาม ในCRecordset คุณไม่สามารถใช้กำหนดบัฟเฟอร์คู่บนแต่ละเขตข้อมูล คุณเปิดการใช้งานสำหรับเขตข้อมูลทั้งหมด หรือปิดการใช้งานสำหรับเขตข้อมูลทั้งหมด สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดบัฟเฟอร์คู่ ดูบทความการ DAO แลกเปลี่ยนเขตข้อมูลของระเบียน DAO: ระเบียนการกำหนดบัฟเฟอร์คู่ ในVisual c ++ Programmer's Guide หมายเหตุว่า ถ้าคุณได้ระบุตัวเลือกCRecordset::useMultiRowFetch แล้วCRecordset::noDirtyFieldCheck จะถูกเปิดโดยอัตโนมัติ อย่างไรก็ตามSetFieldDirty และSetFieldNull ไม่สามารถใช้ชุดระเบียนที่ใช้กำลังนำแถวจำนวนมาก(&N)?
CRecordset::executeDirect nbsp ใช้คำสั่ง SQL ที่เตรียมพร้อม สำหรับการปรับปรุงประสิทธิภาพ ระบุตัวเลือกนี้ถ้ามีการสอบถามใหม่อีก ฟังก์ชันสมาชิกจะไม่เรียก(&N)?
CRecordset::useExtendedFetch nbsp ใช้SQLExtendedFetch แทนของSQLFetch นี้ถูกออกแบบมาสำหรับการใช้งานเป็นกลุ่มแถวกำลังนำมาในชุดระเบียนไปข้างหน้าเท่านั้น ถ้าคุณได้ระบุตัวเลือกCRecordset::useMultiRowFetch ในชุดระเบียนไปข้างหน้าเท่านั้น แล้วCRecordset::useExtendedFetch จะถูกเปิดโดยอัตโนมัติ(&N)?
CRecordset::userAllocMultiRowBuffers nbsp ผู้ใช้จะปันส่วนที่เก็บบัฟเฟอร์สำหรับข้อมูล ใช้ตัวเลือกนี้ร่วมกับCRecordset::useMultiRowFetch ถ้าคุณต้องการปันส่วนการเก็บข้อมูลของคุณเอง มิฉะนั้น กรอบจะโดยอัตโนมัติจัดสรรเก็บข้อมูลที่จำเป็น สำหรับข้อมูลเพิ่มเติม ให้ดูบทความ ชุดระเบียน: กำลังนำระเบียนในกลุ่ม (ODBC) ในVisual c ++ Programmer's Guide หมายเหตุว่า ระบุCRecordset::userAllocMultiRowBuffers โดยไม่ได้ระบุCRecordset::useMultiRowFetch จะส่งผลในการตรวจสอบเงื่อนไขล้มเหลว(&N)?
หมายเหตุ
คุณต้องเรียกใช้ฟังก์ชันนี้สมาชิกเพื่อเรียกใช้แบบสอบถามที่กำหนด โดยชุดระเบียน ก่อนการเรียกเปิด คุณต้องสร้างวัตถุ recordset?
ชุดระเบียนนี้เชื่อมต่อกับแหล่งข้อมูลขึ้นกับวิธีสร้างชุดระเบียนก่อนที่จะเรียกเปิด ถ้าคุณส่งวัตถุCDatabase เพื่อที่กำหนดชุดระเบียนที่ไม่ได้ถูกเชื่อมต่อไปยังแหล่งข้อมูล ฟังก์ชันนี้สมาชิกใช้GetDefaultConnect ในการพยายามจะเปิดวัตถุฐานข้อมูล ถ้าคุณส่งผ่านค่า NULL เพื่อกำหนดชุดระเบียนที่ การกำหนดโครงสร้างวัตถุแบบCDatabase สำหรับคุณ และเปิด ความพยายามที่จะเชื่อมต่อกับวัตถุฐานข้อมูล สำหรับรายละเอียดเกี่ยวกับการปิดชุดระเบียนและการเชื่อมต่อภายใต้สถานการณ์ที่แตกต่างเหล่านี้ ดูปิด ?
หมายเหตุ nbsp การเข้าถึงแหล่งข้อมูลผ่านวัตถุCRecordset เสมอให้ใช้ร่วมกัน แตกต่างจากคลาCDaoRecordset คุณไม่สามารถใช้วัตถุCRecordset ในการเปิดแหล่งข้อมูล ด้วยการเข้าถึงแบบเอกสิทธิ์เฉพาะบุคคล(&N)?
เมื่อคุณเรียกใช้เปิด แบบสอบถาม โดยปกติแล้วคำสั่ง SQLเลือก เลือกระเบียนโดยยึดตามเงื่อนไขที่แสดงในตารางต่อไปนี้?
ค่าของพารามิเตอร์ lpszSQL
ระเบียนที่เลือกถูกกำหนดโดย
ตัวอย่าง
ค่า NULL
สตริงที่ส่งกลับโดยGetDefaultSQL ?
ชื่อตาราง SQL
คอลัมน์ทั้งหมดของตารางรายการในDoFieldExchange หรือDoBulkFieldExchange ?
"ลูกค้า"
ชื่อแบบสอบถามที่กำหนดไว้ล่วงหน้า (กระบวนงานที่เก็บไว้)
คอลัมน์มีกำหนดแบบสอบถามส่งกลับ?
"{โทร OverDueAccts }"
เลือก รายการคอลัมน์จาก ตารางรายการ
ระบุคอลัมน์จากตารางที่ระบุ?
"เลือก CustId, CustName จากลูกค้า"
! คำเตือน nbsp ระวังว่า คุณไม่สามารถแทรกช่องว่างเพิ่มเติมในสตริง SQL ของคุณ ตัวอย่างเช่น ถ้าคุณแทรกช่องว่างระหว่างวงเล็บและคำสำคัญที่เรียก MFC จะ misinterpret สตริง SQL เป็นชื่อตาราง และรวมไว้ในคำสั่ง select ซึ่งจะส่งผลให้ข้อยกเว้นที่ถูกส่งออกไป ในทำนองเดียวกัน ถ้าแบบสอบถามของคุณกำหนดไว้ล่วงหน้าใช้พารามิเตอร์ขาออกมี ไม่แทรกช่องว่างระหว่างวงเล็บและ ' ?' สัญลักษณ์ สุดท้าย คุณต้องไม่แทรกช่องว่างก่อนวงเล็บ ในคำสั่งเรียก หรือ ก่อนการเลือก คำสำคัญใน statmentเลือก (&N)?
กระบวนการปกติคือการ ส่งผ่านค่า NULL จะเปิด ในกรณีนี้เปิด เรียกGetDefaultSQL ถ้าคุณกำลังใช้คลาสที่ได้รับCRecordset , GetDefualtSQL ทำให้ชื่อของตารางคุณระบุไว้ใน ClassWizard คุณสามารถระบุข้อมูลอื่น ๆ แทนในพารามิเตอร์lpszSQL ?
สิ่งที่คุณส่งผ่าน โครงสร้างขั้นสุดท้ายสตริ SQL สำหรับแบบสอบถาม (สตริอาจมีอนุ SQLที่ใด และใบสั่งโดย ได้ถูกผนวกเข้ากับสตริlpszSQL คุณผ่าน) และดำเนินการแบบสอบถามแล้วเปิด คุณสามารถตรวจสอบสายที่ประดิษฐ์ โดยเรียกGetSQL หลังจากเรียกเปิด บทความการดูรายละเอียดเพิ่มเติมเกี่ยวกับโครงสร้างคำสั่ง SQL และวิธีเลือกระเบียน ของชุดระเบียน ชุดระเบียน: วิธีชุดระเบียนเลือกระเบียน (ODBC) ในVisual c ++ Programmer ของคำแนะนำ ?
เขตข้อมูลข้อมูลสมาชิกของคลาสชุดระเบียนของคุณผูกไว้กับคอลัมน์ข้อมูลที่เลือก ถ้าระเบียนใด ๆ มีการส่งกลับระเบียนแรกกลายเป็น ระเบียนปัจจุบัน?
ถ้าคุณต้องการตั้งค่าตัวเลือกสำหรับชุดระเบียน เช่นตัวกรองหรือเรียงลำดับ ระบุเหล่านี้หลัง จากที่คุณสร้างวัตถุ recordset แต่ ก่อนที่คุณเรียกเปิด ถ้าคุณต้องการฟื้นฟูระเบียนในชุดระเบียนหลังจากชุดระเบียนถูกเปิดอยู่แล้ว โทรติดต่อสอบถามใหม่อีก ?
สำหรับข้อมูลเพิ่มเติม การรวมตัวอย่างเพิ่มเติม ให้ดูบทความ ชุดระเบียน (ODBC) , ชุดระเบียน: วิธีชุดระเบียนเลือกระเบียน (ODBC) และ ชุดระเบียน: การสร้าง และการปิดชุดระเบียน (ODBC) ในVisual c ++ Programmer ของคำแนะนำ ?
ตัวอย่าง
แบบฟอร์มต่าง ๆ ของการโทรที่เปิด แสดงในตัวอย่างรหัสต่อไปนี้?
/ / อาร์เอสเป็น CRecordset หรือ
/ / มา CRecordset วัตถุ
/ / อาร์เอสเปิดโดยใช้คำสั่ง SQL ที่เป็นค่าเริ่มต้น
/ / ใช้คั่นหน้า และปิดการใช้งาน
/ / การตรวจสอบเขตข้อมูลโดยอัตโนมัติที่สกปรก
อาร์เอสเปิด (CRecordset::snapshot, NULL
nbsp CRecordset::useBookmarks |
CRecordset::noDirtyFieldCheck);
/ / ผ่านคำสั่ง select คำสั่งเสร็จสมบูรณ์
/ / และเปิดเป็น dynaset
อาร์เอสเปิด (CRecordset::dynaset
_T ("เลือก L_Name จากลูกค้า"));
/ / ยอมรับค่าเริ่มต้นทั้งหมด
อาร์เอส(เปิด)(&N)
ภาพรวม CRecordset |nbsp สมาชิกของคลาส | แผนภูมิของลำดับชั้น (&N)
ดูเพิ่มเติม nbspCRecordset::CRecordset , CRecordset::Close , CRecordset::GetDefaultSQL , CRecordset::GetSQL , CRecordset::m_strFilter , CRecordset::m_strSort , CRecordset::Requery (&N)