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

Makale çevirileri Makale çevirileri
Makale numarası: 826992 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Microsoft Office InfoPath için Microsoft Access veya Microsoft sql Server'a bağlama basit yapar. InfoPath, Microsoft ActiveX Veri Nesneleri (ado) kullanarak basit ve doğrudan tablo sorguları sql veritabanına veya Access veritabanına otomatik olarak 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 ileri düzey kullanıcı ya da geliştirici kullanılabilmesini sağlar. Bu programlama yöntemleri, Gelişmiş kullanıcı ya da daha karmaşık sql sözdizimi kullanan özel bir sorgu gerçekleştirmek formlar oluşturmak için geliştirici etkinleştirin. Genel özel 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'de kullanarak bir sql tablosunda veya bir Access tablosunda bir joker karakter arama gerçekleştirmek için nasıl kullanılacağını gösterADOAdapternesne.

Daha fazla bilgi

InfoPath, bir sorgu veri bağlantısı olarak artığını sağlar birAdoQueryConnectionnesne. Bu yöntemleri almak ve aşağıdaki öğeleri hakkında bilgi sağlar:
  • Bağlantı dizesi
  • sql komut metni
  • Zaman aşımı değeri
KullanarakAdoQueryConnectionNesne, joker karakter kullanan bir sorgu gibi daha karmaşık işlemleri gerçekleştirmek için bir sql deyimi 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

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

  1. Microsoft Office Access'i başlatın.
  2. İçindeKullanılabilir şablonlarBölüm seçmeÖrnek şablonlar.
  3. SeçinNorthwindveritabanını tıklatın ve sonraOluşturma.

Veritabanı sorguları form tasarlama

Bu bölümde, bir sorgu formu InfoPath'de tasarım anlatılmıştır. 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 verilen adımları izleyin.

InfoPath 2010

Form şablonu oluşturabilir ve sonra form şablonu kod dili C# için ayarlayın. Bunu yapmak için şu adımları izleyin:
  1. InfoPath Tasarımcısı 2010'u başlatın.
  2. İçindeGelişmiş Form şablonlarıBölüm seçmeVeritabanıve iTasarım formunu açın.
  3. Veri Bağlantı Sihirbazı'ndaVeritabanı Seç.
  4. Northwind veritabanını kaydettiğiniz klasörü bulun, Northwind.accdb dosyayı seçin ve sonra tıklatınAçık.
  5. İçindeTablo SeçPencere, listenin altındaki kaydırma seçinTedarikçilertabloyu tıklatın ve sonraTAMAM.
  6. Yalnızca aşağıdaki alanları içindeki seçili olduğundan emin olunTedarikçilerTablo:
    • KİMLİĞİ
    • Şirket
    • Son_ad
    • İlk_ad
    • Job_Title
    • Business_Phone
  7. ' I tıklatınSonraki.
  8. ' I tıklatınSonVeri Bağlantı Sihirbazı'nı tamamlamak üzere.
  9. İçindeAlanlarıbölmesini GenişletdataFieldsDüğüm ve sonra Sürükle Ekled:Suppliersdüğümü kutuyaSorguyu çalıştırmakdüğme.
  10. İstendiğinde, seçmek için tıklatınYinelenen Tablo.
  11. İçindeAlanlarıbölmesini GenişletqueryFieldsDüğüm ve sonra Sürükle Ekleq: Tedarikçilerdüğümü kutuyaYeni kayıtdüğme. (Bu otomatik olarak denetimleri olan bir bölüm ekler.)
  12. AltındaGeliştiricisekmesinde,'ı tıklatınDil.
  13. İçindeProgramlama dilibölüm, altındaForm şablonu kod dili, seçinC#ve iTAMAM.

InfoPath 2007

Form şablonu oluşturun. Bunu yapmak için şu adımları izleyin:
  1. InfoPath 2007'yi başlatın.
  2. Gezinti bölmesindeForm doldurmailetişim kutusunda'ı tıklatınBir Form şablonu tasarlama.
  3. İçindeBir Form şablonu tasarlamaPencere, ' ı tıklatınBoş,ve iTAMAM.
  4. ÜzerindeAraçlarmenüsünü tıklatınVeri Bağlantılarıve iEkleme. ,Veri Bağlantıpenceresi açılır.
  5. İçindeVeri bağlantısıPencere, için tıklatın seçinYeni bir bağlantı oluşturunonay kutusunu tıklatın seçinVeri almaonay kutusunu işaretleyin ve sonra tıklatınSonraki.
  6. Seçmek için tıklatın(Microsoft sql Server veritabanı veya yalnızca Microsoft Office Access)onay kutusunu işaretleyin ve sonra tıklatınSonraki.
  7. ' I tıklatınVeritabanı Seç.
  8. Northwind veritabanını kaydettiğiniz klasörü bulun, klasörü seçin ve sonra tıklatınAçık.
  9. İçindeTablo Seçiletişim kutusunda, listenin altındaki kaydırma seçinTedarikçilertabloyu tıklatın ve sonraTAMAM.
  10. İçindeVeri kaynağı yapısıliste, yalnızca aşağıdaki sütun başlıklarını seçili olduğundan emin olun:
    • KİMLİĞİ
    • Şirket
    • İlk_ad
    • Son_ad
    • Job_Title
    • Business_Phone
  11. ' I tıklatınSonraki.
  12. ' I tıklatınÖnce veri görünümünü tasarlave sonra da ' ı tıklatınSonVeri Kaynağı Kur Sihirbazı'ndan çıkmak ve oluşturmak için Varsayılan form.
  13. İçindeVeri kaynağıGörev bölmesi, çift tıklatındataFields.
  14. Taşımad:SuppliersdüğümVeriGörünüm biçimi.
  15. İstendiğinde, eklemed:Suppliersolarak birYinelenen Tablo.
  16. ÜzerindeGörünümmenüsünü tıklatınYönetme Görünümler.
  17. İçindeGörünümlerGörev bölmesi,'ı tıklatınSorgugörüntüleyin.
  18. ÜzerindeAraçlarmenüsünü tıklatınForm Seçenekleri.
  19. İçindeKategoritıklatınProgramlama.
  20. İçindeForm şablonu kod dilikutusunda,'ı tıklatınC#ve iTAMAM.

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

Bu bölümde, arama dizesi benzer, ancak dize tam olarak eşleşen değerlere sahip kayıtları aramak nasıl açıklar. Benzer değerlere sahip kayıtları aramak için joker karakter dizesi kullanabilirsiniz veGİBİsql sorgu deyimi. Ne zaman joker karakter dizesini veGİBİdeyimi birlikte kullanılır, joker karakter arama ölçütüne göre kayıtları bulabilirsiniz. Bu kayıtlar, daha sonra InfoPath'e döndürülür.

Form için özel bir sorgu çalıştırmak için değiştirmek içinİş unvanıInfoPath 2010 veya InfoPath 2007 alanında, aşağıdaki adımları izleyin:

  1. Tasarım modunda, sağSorguyu çalıştırmakdüğmesini tıklatın ve sonraDüğme Özellikleri.
  2. Aşağıdaki değişiklikleri yapın:
    • DeğiştirEylemdüğmeyiKurallar ve özel kod
    • DeğiştirEtiketiçinSorguyu çalıştırmak
    • DeğiştirKİMLİĞİiçinbtnQuery
  3. ' I tıklatınForm Kodu Düzenledeğişiklikleri uygulamak ve Visual Studio Tools for Applications düzenleyicisini başlatmak için düğmeyi seçin. BtnQuery "Clicked" olay işleyicisi açılacaktır.
  4. Açıklamayı değiştirin "/ / kodunuzu buraya yazın" aşağıdaki kodu:
    //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. Tıklatarak projeyi derleyinYapımenü öğesini tıklatıp, sonraYapıProje adı.
  6. Değişiklikleri kaydetmek ve sonra InfoPath'e geri dönün.

Kodu test

Önceki yordamda sağlanan örnek kod bir joker karakter arama yapmanıza olanak sağlarİş unvanıalanında bulunanTedarikçilerTablo. Bir arama sorgusu gibi sağlayarakSatış %, kişilerin bir satış pozisyonda olacak döndürülen tüm kayıtları vardır. Kendi kayıt arama ölçütlerine uyan sürece bu kişiler bir temsilcisi, bir yönetici veya aracı olabilirSatış %. "Satış" yoktur, kişilerİş unvanıalan dışlandı.


Döndürülen tüm kayıtları bir satış pozisyonda kişiler olduğunu doğrulamak için şu adımları izleyin:
  1. InfoPath 2010 için:ÜzerindeGirişŞerit'te sekmesinde,'ı tıklatınÖnizleme.
    InfoPath 2007 için:Araç çubuğunda tıklatınÖnizlemeve iFormu.
  2. İçindeİş unvanıSorgu alanı türüSatış %.
  3. ' I tıklatınSorguyu çalıştırın.

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

Özellikler

Makale numarası: 826992 - Last Review: 7 Şubat 2011 Pazartesi - Gözden geçirme: 1.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Office InfoPath 2007
  • Microsoft Office InfoPath 2003
Anahtar Kelimeler: 
kbhowto kbmt KB826992 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:826992

Geri Bildirim Ver

 

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