วิธีการใช้อักขระสัญลักษณ์ตัวแทนในแบบสอบถามฟอร์ม InfoPath ผูกกับแหล่งข้อมูลของ ADO

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 826992 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

Microsoft Office InfoPath จะผูก Microsoft SQL Server หรือ Microsoft Access อย่างง่าย InfoPath สามารถสร้างแบบสอบถามตารางอย่างง่าย โดยตรง ไปยังฐานข้อมูล SQL หรือฐานข้อมูล Access โดยใช้ Microsoft ActiveX Data Objects (ADO) โดยอัตโนมัติ แล้ว InfoPath ทำให้ผลลัพธ์ของแบบสอบถามเพื่อแสดง และแก้ไขได้ในแบบฟอร์ม

สำหรับการสอบถามขั้นสูง InfoPath ให้วิธีการเขียนโปรแกรมต่าง ๆ ดังกล่าวไป ยังผู้ใช้ขั้นสูง หรือ การพัฒนา วิธีการเขียนโปรแกรมเหล่านี้ช่วยให้ผู้ใช้ขั้นสูงหรือนักพัฒนาเพื่อสร้างฟอร์มที่สามารถดำเนินการแบบสอบถามแบบกำหนดเองที่ใช้ไวยากรณ์ SQL ที่ซับซ้อนยิ่งขึ้น ตัวอย่างหนึ่งของแบบสอบถามแบบกำหนดเองที่พบโดยทั่วไปใช้อักขระตัวแทนเพื่อค้นหาระเบียนที่บางส่วนตรงกับเงื่อนไขที่ระบุ

ขั้นตอนต่อไปนี้แสดงวิธีการใช้รหัสที่ได้รับการจัดการใน InfoPath เพื่อทำการค้นหาอักขระสัญลักษณ์ตัวแทน ในตาราง SQL หรือ ในตารางที่มีการเข้าถึง โดยใช้การADOAdapterวัตถุ

ข้อมูลเพิ่มเติม

InfoPath ช่วยให้คุณสามารถแปลงการเชื่อมต่อข้อมูลแบบสอบถามเป็นการAdoQueryConnectionวัตถุ ซึ่งทำให้คุณวิธี การดึงข้อมูล และ การตั้งค่าข้อมูลเกี่ยวกับรายการต่อไปนี้:
  • สายอักขระการเชื่อมต่อ
  • ข้อความคำสั่ง SQL
  • ค่าการหมดเวลา
โดยใช้การAdoQueryConnectionออปเจ็กต์ คุณสามารถเปลี่ยนแปลงคำสั่ง SQL เพื่อทำการดำเนินการซับซ้อน เช่นแบบสอบถามที่ใช้อักขระตัวแทน

ข้อมูลในบทความนี้นำไปใช้ กับฐานข้อมูล SQL และไป ยังฐานข้อมูล Access ตัวอย่างต่อไปนี้ใช้ฐานข้อมูล Northwind ที่ให้มา กับ Microsoft Office Access 2007 และ กับ 2010 การเข้าถึงของ Microsoft Office

สร้างฐานข้อมูล

ถ้าคุณยังไม่ได้ใช้ฐานข้อมูลตัวอย่าง Northwind จาก InfoPath รุ่นของคุณ สร้างฐานข้อมูลไว้ในเครื่อง เมื่อต้องการทำเช่นนี้ ให้ทำตามขั้นตอนเหล่านี้:

  1. เริ่มการทำงานของ Microsoft Office Access
  2. ในการแม่แบบที่พร้อมใช้งานส่วน การเลือกแม่แบบตัวอย่าง.
  3. เลือกNorthwindและฐานข้อมูลแล้วคลิกสร้าง.

การออกแบบฟอร์มแบบสอบถามฐานข้อมูล

ส่วนนี้อธิบายวิธีการออกแบบฟอร์มแบบสอบถามใน InfoPath ตัวอย่างนี้ใช้ตาราง Suppliers จากฐานข้อมูล Northwind เมื่อต้องสร้างฟอร์มแบบสอบถามตารางนี้ ทำตามขั้นตอนที่ให้ไว้สำหรับ InfoPath รุ่นของคุณ

InfoPath 2010

สร้างแม่แบบฟอร์ม แล้ว กำหนดภาษารหัสของแม่แบบฟอร์มเป็น C# เมื่อต้องการทำเช่นนี้ ให้ทำตามขั้นตอนเหล่านี้:
  1. เริ่ม 2010 การออกแบบของ InfoPath
  2. ในการแม่แบบฟอร์มขั้นสูงส่วน การเลือกฐานข้อมูลแล้ว คลิกออกแบบฟอร์ม
  3. ใน'ตัวช่วยสร้างการเชื่อมต่อข้อมูล คลิกเลือกฐานข้อมูล.
  4. ค้นหาโฟลเดอร์ที่คุณบันทึกฐานข้อมูล Northwind เลือกแฟ้ม Northwind.accdb และคลิ กเปิด.
  5. ในการเลือกตารางเลือกหน้าต่าง เลื่อนไปด้านล่างของรายการ การซัพพลายเออร์ตาราง จากนั้นคลิกตกลง
  6. ตรวจสอบให้แน่ใจว่า มีเลือกเฉพาะเขตข้อมูลต่อไปนี้ในการซัพพลายเออร์ตาราง:
    • ID
    • บริษัท
    • Last_Name
    • ชื่อ
    • Job_Title
    • Business_Phone
  7. คลิกถัดไป.
  8. คลิกเสร็จสิ้นเมื่อต้องการดำเนินการตัวช่วยสร้างการเชื่อมต่อข้อมูล
  9. ในการเขตข้อมูลบานหน้าต่าง ขยายตัวdataFieldsโหนด แล้วลากการเพิ่มd:Suppliersโหนกล่องภายใต้การเรียกใช้แบบสอบถามปุ่ม
  10. เมื่อคุณได้รับการพร้อมท์ คลิกเพื่อเลือกตารางที่ซ้ำกันได้.
  11. ในการเขตข้อมูลบานหน้าต่าง ขยายตัวqueryFieldsโหนด แล้วลากการเพิ่มq: ซัพพลายเออร์โหนกล่องภายใต้การระเบียนใหม่ปุ่ม (ซึ่งจะเพิ่มส่วนที่มีตัวควบคุม)
  12. ภายใต้การนักพัฒนาแท็บ คลิกภาษา.
  13. ในการภาษาการเขียนโปรแกรมส่วน ภายใต้แบบฟอร์มรหัสภาษาที่ใช้เลือกC#แล้ว คลิกตกลง.

InfoPath 2007

สร้างแม่แบบฟอร์ม เมื่อต้องการทำเช่นนี้ ให้ทำตามขั้นตอนเหล่านี้:
  1. เริ่มการทำงานของฟอร์ม InfoPath 2007
  2. ในบานหน้าต่างนำทางของการกรอกฟอร์มกล่องโต้ตอบ คลิกการออกแบบแม่แบบฟอร์ม.
  3. ในการการออกแบบแม่แบบฟอร์มหน้าต่าง คลิกว่างเปล่าแล้ว คลิกตกลง.
  4. บนเครื่องเครื่องมือเมนู คลิกข้อมูล การเชื่อมต่อแล้ว คลิกเพิ่ม. ที่ข้อมูล การเชื่อมต่อหน้าต่างที่เปิด
  5. ในการการเชื่อมต่อข้อมูลหน้าต่าง คลิกเพื่อ เลือกสร้างการเชื่อมต่อใหม่ไปยังกล่องกาเครื่องหมาย คลิกเพื่อ เลือกได้รับข้อมูลกล่องกาเครื่องหมาย จากนั้น คลิกถัดไป.
  6. คลิกเลือกฐานข้อมูล (Microsoft SQL Server หรือเข้าถึง Microsoft Office เท่านั้น)กล่องกาเครื่องหมาย จากนั้น คลิกถัดไป.
  7. คลิกเลือกฐานข้อมูล.
  8. ค้นหาโฟลเดอร์ที่คุณบันทึกฐานข้อมูล Northwind เลือกโฟลเดอร์ และคลิ กเปิด.
  9. ในการเลือกตารางเลือกกล่องโต้ตอบ เลื่อนไปด้านล่างของรายการ การซัพพลายเออร์ตาราง จากนั้นคลิกตกลง.
  10. ในการโครงสร้างของแหล่งข้อมูลรายการ การตรวจสอบให้แน่ใจว่า มีเลือกเท่านั้นที่ต่อไปนี้หัวคอลัมน์:
    • ID
    • บริษัท
    • ชื่อ
    • Last_Name
    • Job_Title
    • Business_Phone
  11. คลิกถัดไป.
  12. คลิกการออกแบบมุมมองข้อมูลก่อนจากนั้น คลิกเสร็จสิ้นเมื่อต้อง การจบการทำงานของตัวช่วยสร้างการตั้งค่าแหล่งข้อมูล และสร้าง แบบฟอร์มค่าเริ่มต้น
  13. ในการแหล่งข้อมูลบานหน้าต่างงาน การคลิกสองครั้งdataFields.
  14. ย้ายเครื่องd:Suppliersโหนดเพื่อข้อมูลมุมมอง ของแบบฟอร์ม
  15. เมื่อคุณได้รับการพร้อมท์ เพิ่มd:Suppliersเป็น แบบตารางที่ซ้ำกันได้.
  16. บนเครื่องมุมมองเมนู คลิกการจัดการ มุมมอง.
  17. ในการมุมมองบานหน้าต่างงาน คลิกแบบสอบถามมุมมอง
  18. บนเครื่องเครื่องมือเมนู คลิกตัวเลือกฟอร์ม.
  19. ในการประเภทแสดงรายการ คลิกการเขียนโปรแกรม.
  20. ในการแบบฟอร์มรหัสภาษาที่ใช้กล่อง คลิกC#แล้ว คลิกตกลง.

เปลี่ยนแบบฟอร์มการเรียกใช้แบบสอบถามแบบกำหนดเอง

ส่วนนี้อธิบายวิธีการค้นหาระเบียนที่มีค่าที่มีลักษณะสตริงการค้นหาของคุณ แต่ไม่ตรงกับสายอักขระแน่นอน เมื่อต้องการค้นหาระเบียนที่มีค่าที่คล้ายคลึงกัน คุณสามารถใช้สายอักขระสัญลักษณ์ตัวแทน และการเช่นเดียวกับคำสั่งที่ใช้ในแบบสอบถาม SQL เมื่อตัวแทนที่อักขระสายอักขระ และการเช่นเดียวกับใช้คำสั่งเข้าด้วยกัน พวกเขาสามารถค้นหาระเบียนโดยยึดตามเงื่อนไขการค้นหาอักขระสัญลักษณ์ตัวแทน แล้วมีการส่งกลับระเบียนเหล่านี้ไปยัง InfoPath

เมื่อต้องการเปลี่ยนแบบฟอร์มการเรียกใช้แบบสอบถามแบบกำหนดเองของเครื่องตำแหน่งงานฟิลด์ ใน InfoPath 2010 หรือ ใน InfoPath 2007 ให้ทำตามขั้นตอนเหล่านี้:

  1. ในโหมดการออกแบบ คลิกขวาเรียกใช้แบบสอบถามปุ่ม จากนั้นคลิกคุณสมบัติของปุ่ม.
  2. ทำการเปลี่ยนแปลงต่อไปนี้:
    • การเปลี่ยนแปลงการดำเนินการของปุ่มเพื่อกฎและโค้ดแบบกำหนดเอง
    • การเปลี่ยนแปลงป้ายชื่อเมื่อต้องการเรียกใช้แบบสอบถาม
    • การเปลี่ยนแปลงIDเมื่อต้องการbtnQuery
  3. คลิกแก้ไขโค้ดของแบบฟอร์มปุ่มเพื่อใช้การเปลี่ยนแปลง แล้ว เริ่มการทำงานของเครื่องมือ Studio แสดงผลสำหรับตัวแก้ไขของโปรแกรมประยุกต์ มันจะเปิดตัวจัดการเหตุการณ์ "Clicked" btnQuery
  4. แทนข้อคิดเห็น " / / เขียนโค้ดของคุณที่นี่" ด้วยรหัสต่อไปนี้:
    //Create an XPathNavigator object for the main data source
    XPathNavigator xnMain = this.MainDataSource.CreateNavigator();
     
    //Create an AdoQueryConnection from the main data source by "casting" the default
    //data connection to an "AdoQueryConnection"
    AdoQueryConnection cn = (AdoQueryConnection)this.DataConnections["Main connection"];
     
    //Obtain the default SQL command for the form.
    string strOrigSQLCommand = cn.Command.ToString();
     
     
     
    // Obtain the query node that you want to change.
    XPathNavigator xnSuppliersQuery = xnMain.SelectSingleNode("/dfs:myFields/dfs:queryFields/q:Suppliers", this.NamespaceManager);
     
    //Obtain the text that was entered for the wildcard character search, and then clear the current query parameter so that InfoPath will leave the current query parameter blank.
    string strJobTitle = xnSuppliersQuery.SelectSingleNode("@Job_Title", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@Job_Title", this.NamespaceManager).SetValue(string.Empty);
     
    //Have InfoPath construct an SQL command that is based on all other field values.
    string strMySQLCommand = cn.BuildSqlFromXmlNodes(xnSuppliersQuery);
     
    //Save the other query items, and then clear the other query items before the next query.
    string strSupplierID = xnSuppliersQuery.SelectSingleNode("@ID", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@ID", this.NamespaceManager).SetValue(string.Empty);
    string strCompany = xnSuppliersQuery.SelectSingleNode("@Company", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@Company", this.NamespaceManager).SetValue(string.Empty);
    string strLastName = xnSuppliersQuery.SelectSingleNode("@Last_Name", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@Last_Name", this.NamespaceManager).SetValue(string.Empty);
    string strFirstName = xnSuppliersQuery.SelectSingleNode("@First_Name", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@First_Name", this.NamespaceManager).SetValue(string.Empty);
    string strBusPhone = xnSuppliersQuery.SelectSingleNode("@Business_Phone", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@Business_Phone", this.NamespaceManager).SetValue(string.Empty);
     
    //Add Job_Title to the query so that Job_Title can support wildcard characters.
    if (strJobTitle != string.Empty)
    {
           if (strMySQLCommand != string.Empty)
                  strMySQLCommand += " AND ";
     
           //Check whether the user entered the wildcard character (%) as part of the title.
    if(strJobTitle.Contains("%"))
                 strMySQLCommand += "[Job Title] LIKE '" + strJobTitle + "'";
           else
                 strMySQLCommand += "[Job Title] LIKE '" + strJobTitle + "%'";               
    }
     
    //Construct the full query string.
    string strSQLQuery = strOrigSQLCommand;
    if (strMySQLCommand != string.Empty)
    strSQLQuery += " WHERE " + strMySQLCommand;
     
    //Set the command and run the query.
    cn.Command = strSQLQuery;
    cn.Execute();
     
    //Restore all the user entries to the Query fields so that the user entries will 
    //be available if you want to change and to rerun the query.
    xnSuppliersQuery.SelectSingleNode("@ID", this.NamespaceManager).SetValue(strSupplierID);
    xnSuppliersQuery.SelectSingleNode("@Company", this.NamespaceManager).SetValue(strCompany);
    xnSuppliersQuery.SelectSingleNode("@Last_Name", this.NamespaceManager).SetValue(strLastName);
    xnSuppliersQuery.SelectSingleNode("@First_Name", this.NamespaceManager).SetValue(strFirstName);
    xnSuppliersQuery.SelectSingleNode("@Job_Title", this.NamespaceManager).SetValue(strJobTitle);
    xnSuppliersQuery.SelectSingleNode("@Business_Phone", this.NamespaceManager).SetValue(strBusPhone);
     
    //Restore the default table command (for the next time).
    cn.Command = strOrigSQLCommand;
     
    //Clean up
    xnMain = null;
    cn = null;
    xnSuppliersQuery = null;
  5. สร้างโครงการ ด้วยการคลิกการสร้างรายการเมนูจากนั้น คลิกการสร้างชื่อโครงการ.
  6. บันทึกการเปลี่ยนแปลง และนำกลับไปยัง InfoPath

ทดสอบรหัส

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


เมื่อต้องการตรวจสอบว่า ระเบียนทั้งหมดที่ถูกส่งกลับมีผู้ติดต่อในตำแหน่งการขาย ให้ทำตามขั้นตอนเหล่านี้:
  1. สำหรับ InfoPath 2010:บนเครื่องบ้านแท็บบน Ribbon คลิกแสดงตัวอย่าง.
    สำหรับ InfoPath 2007:บนแถบเครื่องมือ คลิกแสดงตัวอย่างแล้ว คลิกแบบฟอร์ม.
  2. ในการตำแหน่งงานเขตข้อมูลแบบสอบถาม ชนิด%การขาย.
  3. คลิกเรียกใช้แบบสอบถาม

ระเบียนที่ส่งกลับ โดยแบบสอบถามของคุณเองเป็นผู้ติดต่อทั้งหมดในตำแหน่งการขาย

คุณสมบัติ

หมายเลขบทความ (Article ID): 826992 - รีวิวครั้งสุดท้าย: 7 กุมภาพันธ์ 2554 - Revision: 4.0
ใช้กับ
  • Microsoft Office InfoPath 2007
  • Microsoft Office InfoPath 2003
Keywords: 
kbhowto kbmt KB826992 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:826992

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com