ADO veri kaynağına bağlanırken bir InfoPath formu sorgusunda joker karakterler kullanma

Özet

Microsoft Office InfoPath için Microsoft Access veya Microsoft SQL Server için bağlama kolaylaştırır. InfoPath otomatik olarak Microsoft ActiveX veri nesneleri (ADO) kullanarak bir SQL veritabanına veya Access veritabanına tablo basit, doğrudan sorgular oluşturabilirsiniz. Daha sonra InfoPath görüntülenir ve düzenlenebilir formda sorgu sonuçlarını etkinleştirir.

Daha gelişmiş sorguları için InfoPath programlama için birkaç yöntem deneyimli kullanıcılar veya geliştirici için kullanılabilmesini sağlar. Bu programlama yöntemleri gelişmiş kullanıcı veya daha karmaşık bir SQL sözdizimi kullanan özel bir sorgu gerçekleştirebilir formlar oluşturmak için geliştirici etkinleştirin. Bir ortak, özel bir sorgu örneği kısmen belirtilen ölçütle eşleşen kayıtları bulmak için joker karakter kullanır.

Aşağıdaki adımlar, yönetilen kod InfoPath'te ADOAdapter nesnesini kullanarak bir SQL tablosuna veya bir Access tablosunda bir joker karakter arama gerçekleştirmek için nasıl kullanılacağını gösterir.

Daha fazla bilgi

InfoPath, tonunu AdoQueryConnection nesne olarak bir sorgu veri bağlantısı sağlar. Bu aşağıdaki öğelerle ilgili bilgileri ayarlamak için ve almak için yöntemleri sağlar:
  • Bağlantı dizesi
  • SQL komut metni
  • Zaman aşımı değeri
AdoQueryConnection nesnesini kullanarak, bir SQL deyimi, joker karakter kullanan bir sorgu gibi daha karmaşık işlemleri gerçekleştirmek için değiştirebilirsiniz.

Bu makaledeki bilgiler, SQL veritabanları ve Access veritabanları için geçerlidir. Aşağıdaki örnekler, Microsoft Office Access 2007 ve Microsoft Office Access 2010 bulunan Northwind veritabanını kullanın.

Veritabanı oluşturma

Northwind örnek veritabanındaki InfoPath sürümünden henüz kullanmadıysanız, yerel veritabanı oluşturun. Bunu yapmak için şu adımları izleyin:

  1. Microsoft Office Access'i başlatın.
  2. Kullanılabilir şablonlar bölümünde örnek şablonlarıseçin.
  3. Northwind veritabanını seçin ve ardından Oluştur' u tıklatın.

Veritabanını sorgulayan bir form tasarlama

Bu bölümde, bir sorgu formu InfoPath'de tasarım açıklar. Bu örnek, Northwind veritabanındaki Suppliers tablosunu kullanır. Bu tablo sorgular bir form oluşturmak için InfoPath sürümünüz için sağlanan adımları izleyin.

InfoPath 2010

Form şablonu oluşturabilir ve sonra form şablonu kod dili C# ' a ayarlayın. Bunu yapmak için şu adımları izleyin:
  1. InfoPath Designer 2010'u başlatın.
  2. Gelişmiş Form şablonları bölümünde, veritabanınıseçin ve sonra Form Tasarla.
  3. Veri Bağlantı Sihirbazı'nda Veritabanı Seç'itıklatın.
  4. Northwind veritabanını kaydettiğiniz klasörü bulun, Northwind.accdb dosyasını seçin ve ' ı tıklatın.
  5. Tablo Seç penceresinde, listenin en altına gidin, Suppliers tablosunu seçin ve sonra tıklatın Tamam.
  6. Yalnızca aşağıdaki alanları Tedarikçiler tablosunda seçili olduğundan emin olun:
    • KİMLİĞİ
    • Şirket
    • Last_Name
    • First_Name
    • Job_Title
    • Business_Phone
  7. İleri' ye tıklayın.
  8. Veri Bağlantı Sihirbazı'nı tamamlamak için Son ' u tıklatın.
  9. Alanlar bölmesinde dataFields düğümünü genişletin ve sonra Ekle d:Suppliers düğümü altında sorgu Çalıştır kutusuna sürükleyin.
  10. İstendiğinde, Yinelenen tabloyuseçmek için tıklatın.
  11. Alanlar bölmesinde, queryFields düğümünü genişletin ve sonra Yeni kayıt düğmesinin altındaki kutuya Ekle Q: Tedarikçiler düğümünü sürükleyin. (Bu otomatik olarak denetime sahip bir bölüm ekler.)
  12. Geliştirici sekmesinde, Dil' i tıklatın.
  13. Form şablonu kod dili, programlama dili bölümünde C#' ı seçin ve Tamam' ı tıklatın.

InfoPath 2007

Form şablonu oluşturun. Bunu yapmak için şu adımları izleyin:
  1. InfoPath 2007'yi başlatın.
  2. Form Doldur iletişim kutusunda Gezinti bölmesinde Form şablonu tasarım' ı tıklatın.
  3. Bir Form şablonunu tasarım penceresinde, boş, tıklatın ve sonra Tamam' ı tıklatın.
  4. Araçlar menüsünde Veri bağlantıları' nı tıklatın ve sonra Ekle' yi tıklatın. Veri bağlantısı penceresi açılır.
  5. Veri bağlantısı penceresinde, Yeni bağlantı oluştur onay kutusunu seçin, Veri alma onay kutusunu tıklatıp seçin ve sonra'ı tıklatın
    Sonraki.
  6. Veritabanı (Microsoft SQL Server veya Microsoft Office Access yalnızca) onay kutusunu tıklatıp seçin ve sonra tıklatın
    Sonraki.
  7. Veritabanı Seç' i tıklatın.
  8. Northwind veritabanını kaydettiğiniz klasörü bulun, klasörü seçin ve sonra ' ı tıklatın.
  9. Tablo Seç iletişim kutusunda, listenin en altına gidin, Suppliers tablosunu seçin ve sonra Tamam' ı tıklatın.
  10. Veri kaynağı yapısı listesinde, aşağıdaki sütun başlıklarını seçili olduğundan emin olun:
    • KİMLİĞİ
    • Şirket
    • First_Name
    • Last_Name
    • Job_Title
    • Business_Phone
  11. İleri' yi tıklatın.
  12. Önce veri görünümünü tasarla' yı tıklatın ve ardından Son veri kaynağı Kur Sihirbazı'ndan çıkmak için ve varsayılan form oluşturmak için tıklatın.
  13. Veri kaynağı görev bölmesinde çift tıklatın
    dataFields.
  14. D:Suppliers düğüm formun veri görünümüne gider.
  15. İstendiğinde, d:Suppliers bir Yinelenen tabloekleyin.
  16. Görünüm menüsünde Görünümleri Yönet'itıklatın.
  17. Görünümler görev bölmesinde tıklatın
    Sorgu görünümü.
  18. Araçlar menüsünde Form Seçenekleri' ni tıklatın.
  19. Kategori listesinde programlama' yı tıklatın.
  20. Form şablonu kod dili kutusunda, C#' ı tıklatın ve sonra Tamam' ı tıklatın.

Özel bir sorgu çalıştırmak için formu değiştirme

Bu bölümde, arama dizenizi benzer, ancak dize tam olarak eşleşmeyen değerleri olan kayıtları aramak nasıl açıklar. Benzer değerlere sahip kayıtları aramak için joker karakter dizesi ve gibi ifadesi bir SQL sorgusu içinde kullanabilirsiniz. Joker karakter dizesi ve gibi deyimi birlikte kullanıldığında, bunlar joker karakter arama ölçütlerine dayanarak kayıtları bulabilirsiniz. Bu kayıtlar daha sonra InfoPath'e döndürülür.

Form InfoPath 2010 veya InfoPath 2007 Unvan alanının özel bir sorgu çalıştırmak için değiştirmek için şu adımları izleyin:

  1. Tasarım modunda, Sorgu Çalıştır düğmesini sağ tıklatın ve sonra Düğme Özellikleri' ni tıklatın.
  2. Aşağıdaki değişiklikleri yapın:
    • Kurallar ve özel kod için düğme eylemini değiştirin
    • Sorguyu çalıştırmak için Etiket değiştirme
    • BtnQuery için kodu değiştirin
  3. Değişiklikleri uygulamak için Form kodu Düzenle düğmesini tıklatın ve ardından Visual Studio Tools for Applications düzenleyicisini başlatın. BtnQuery "Clicked" olay işleyicisi açmak.
  4. Açıklamayı değiştirin "/ / kodunuzu buraya yazın" ile aşağıdaki kodu:
    //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. Proje Oluştur menü öğesini tıklatıp ardından Yapı Proje adıoluşturun.
  6. Değişiklikleri kaydetmek ve InfoPath'e dönün.

Kodu sınamak

Önceki yordamda sağlanan örnek kod Tedarikçiler tablosundaki Unvan alanında bir joker karakter arama yapmanızı sağlar. Döndürülen tüm kayıtları, Satış %gibi bir arama sorgusu sağlayarak satış konumunda kişiler olacaktır. Kendi kayıt Satış %arama ölçütlerine uyan sürece bu kişiler bir temsilcisi, bir yönetici veya bir aracı olabilir. "Satış" Unvan alanında olmayan kişiler filtrelenir.


Döndürülen tüm kayıtları bir satış pozisyonda kişiler olduğunu doğrulamak için şu adımları izleyin:
  1. İçin InfoPath 2010: Ana sayfa sekmesinde Şerit'te, Önizleme' yi tıklatın.
    InfoPath 2007 için: Araç çubuğunda Önizleme' yi tıklatın ve ardından Form'utıklatın.
  2. İş Unvanı sorgu alanına Satış %yazın.
  3. ' I sorgusu.

Özel, sorgu tarafından döndürülen tüm kişileri bir satış pozisyonda kayıtlarıdır.

Özellikler

Makale No: 826992 - Son İnceleme: 24 Şub 2017 - Düzeltme: 1

Microsoft Office InfoPath 2007, Microsoft Office InfoPath 2003

Geri bildirim