كيفية استخدام أحرف البدل في استعلام نموذج InfoPath عند ربط مصدر بيانات ADO

ملخص

Microsoft Office InfoPath يجعل الربط إلى Microsoft SQL Server أو Microsoft Access بسيطة. أن InfoPath تلقائياً بإنشاء استعلامات تكوين الجدول بسيطة ومباشرة إلى قاعدة بيانات SQL أو إلى قاعدة بيانات Access باستخدام كائنات بيانات Microsoft ActiveX (ADO). وبعد ذلك، يقوم InfoPath بتمكين نتائج الاستعلام ليتم عرضها وتحريرها في النموذج.

من أجل استعلامات أكثر تقدما، InfoPath توفر عدة أساليب البرمجة للمستخدمين المتقدمين أو المطور. تمكين هذه الأساليب البرمجة للمستخدمين المتقدمين أو المطور لبناء النماذج التي يمكنك تنفيذ استعلام مخصص يستخدم بناء جملة SQL أكثر تعقيداً. مثال لاستعلام مخصص عام يستخدم حرف بدل للبحث عن السجلات التي تطابق المعايير المحددة جزئيا.

تظهر الخطوات التالية كيفية استخدام التعليمات البرمجية المدارة في InfoPath لإجراء بحث حرف بدل في جدول SQL أو في جدول Access باستخدام كائن أدوادابتير .

مزيد من المعلومات

يتيح InfoPath يمكنك تحويل اتصال بيانات خاص باستعلام ككائن أدوقويريكونيكتيون . يمنحك هذا أساليب استرداد وتعيين معلومات حول العناصر التالية:
  • سلسلة الاتصال
  • نص الأمر SQL
  • قيمة المهلة
باستخدام الكائن أدوقويريكونيكتيون ، يمكنك تغيير عبارة SQL لتنفيذ عمليات أكثر تعقيداً، مثل استعلام يستخدم أحرف البدل.

تنطبق المعلومات الواردة في هذه المقالة لقواعد بيانات SQL وقاعدة بيانات Access. تستخدم الأمثلة التالية قاعدة بيانات Northwind المضمنة مع Microsoft Office Access 2007 ومع Microsoft Office Access 2010.

إنشاء قاعدة بيانات

إذا لم تستخدمها بعد قاعدة بيانات نموذج Northwind من إصدار InfoPath، إنشاء قاعدة البيانات محلياً. للقيام بذلك، اتبع الخطوات التالية:

  1. بدء تشغيل Microsoft Office Access.
  2. في المقطع قوالب متوفرة ، حدد نماذج القوالب.
  3. حدد قاعدة بيانات Northwind ، ومن ثم انقر فوق إنشاء.

تصميم نموذج يقوم باستعلام قاعدة البيانات

يصف هذا القسم كيفية تصميم نموذج استعلام في InfoPath. يستخدم هذا المثال جدول "الموردون" من قاعدة بيانات Northwind. لإنشاء نموذج يقوم بالاستعلام هذا الجدول، اتبع الخطوات التي تم توفيرها للإصدار الخاص بك من InfoPath.

InfoPath 2010

إنشاء قالب النموذج، ثم قم بتعيين لغة التعليمات البرمجية لقالب النموذج إلى C#. للقيام بذلك، اتبع الخطوات التالية:
  1. بدء تشغيل InfoPath مصمم 2010.
  2. في المقطع قوالب نماذج متقدمة ، قاعدة البيانات، ثم حدد وانقر "تصميم نموذج".
  3. في "معالج اتصال البيانات"، انقر فوق تحديد قاعدة البيانات.
  4. حدد موقع المجلد الذي قمت بحفظ قاعدة بيانات Northwind وحدد ملف Northwind.accdb ثم انقر فوق فتح.
  5. في إطار تحديد جدول ، قم بالتمرير إلى أسفل القائمة وحدد جدول " الموردون " ثم انقر فوق موافق.
  6. تأكد من أنه تم تحديد الحقول التالية في جدول " الموردون ":
    • معرف
    • الشركة
    • Last_Name
    • First_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 Access فقط) ، ومن ثم انقر فوق
    التالي.
  7. انقر فوق تحديد قاعدة البيانات.
  8. حدد موقع المجلد الذي قمت بحفظ قاعدة بيانات Northwind وحدد المجلد ثم انقر فوق فتح.
  9. في مربع الحوار تحديد جدول ، قم بالتمرير إلى أسفل القائمة وحدد جدول " الموردون " وثم انقر فوق موافق.
  10. في القائمة مصدر البيانات بنية ، تأكد من أنه تم تحديد رؤوس الأعمدة التالية:
    • معرف
    • الشركة
    • First_Name
    • 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. قم إجراء التغييرات التالية:
    • تغيير الزر الإجراء إلى القواعد والتعليمات البرمجية المخصصة
    • تغيير تسمية تشغيل الاستعلام
    • تغيير معرف إلى بتنكويري
  3. انقر فوق الزر تحرير التعليمات البرمجية للنموذج لتطبيق التغييرات، وقم بتشغيل "أدوات" محرر تطبيقات Visual Studio. فإنه سيتم فتح معالج الحدث بتنكويري "Clicked".
  4. قم باستبدال التعليق "//كتابة التعليمات البرمجية الخاصة بك هنا" مع التعليمات البرمجية التالية:
    //Create an XPathNavigator object for the main data sourceXPathNavigator 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: ضمن علامة التبويب الصفحة الرئيسية على "الشريط"، انقر فوق معاينة.
    ل InfoPath 2007: على شريط الأدوات، انقر فوق معاينةومن ثم انقر فوق نموذج.
  2. في حقل الاستعلام المسمى الوظيفي ، اكتب % المبيعات.
  3. انقر فوق تشغيل استعلام.

السجلات التي يتم إرجاعها من قبل الاستعلام المخصص هي كافة جهات الاتصال في وضع مبيعات.

خصائص

رقم الموضوع: 826992 - آخر مراجعة: 15‏/01‏/2017 - المراجعة: 1

تعليقات