Jak używać symboli wieloznacznych w kwerendzie formularza programu InfoPath podczas wiązania ze źródłem danych obiektów ADO

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 826992 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

Streszczenie

Program Microsoft Office InfoPath upraszcza powiązania Microsoft SQL Server lub Microsoft Access. Program InfoPath mogą automatycznie generować kwerend proste, bezpośrednie tabeli bazy danych SQL lub bazy danych programu Access przy użyciu programu Microsoft ActiveX Data Objects (ADO). Następnie program InfoPath umożliwia wyniki kwerendy, aby wyświetlić i edytować w formularzu.

Dla bardziej zaawansowanych kwerend program InfoPath udostępnia kilka metod programowania dla zaawansowanych użytkowników lub przez dewelopera. Te metody programowania umożliwiają zaawansowany użytkownik lub Projektant formularzy, które mogą wykonywać kwerendę niestandardową, korzystającej ze składni SQL bardziej złożone. Przykładem typowych niestandardową kwerendę używa znaków wieloznacznych do znajdowania rekordów, które częściowo spełniających określone kryteria.

Poniższe kroki pokazują jak używać kodu zarządzanego w programie InfoPath przeprowadzić wyszukiwanie znaków wieloznacznych w tabeli SQL lub w tabeli programu Access przy użyciu ADOAdapter obiekt.

Więcej informacji

Program InfoPath umożliwia rzutowanie połączenia danych kwerendy jakoAdoQueryConnection obiekt. Daje metod pobierania i ustawiania informacji o następujących elementach:
  • Ciąg połączenia
  • Tekst polecenia SQL
  • Wartość limitu czasu
Za pomocą AdoQueryConnectionobiekt, można zmienić instrukcję SQL, aby wykonać bardziej złożonych operacji, takich jak kwerendy używane symbole wieloznaczne.

Informacje w tym artykule dotyczy baz danych SQL i baz danych programu Access. W następujących przykładach użyto bazy danych Northwind, który jest składnikiem pakietu Microsoft Office Access 2007 i Microsoft Office Access 2010.

Tworzenie bazy danych

Jeśli przykładowa baza danych Northwind nie jest jeszcze używany z wersji programu InfoPath, należy utworzyć lokalnie bazy danych. Aby to zrobić, wykonaj następujące kroki:

  1. Uruchom program Microsoft Office Access.
  2. WDostępne szablonysekcja selectPrzykładowe szablony.
  3. Wybierz Northwind bazy danych, a następnie kliknijTworzenie.

Projektowanie formularza, który wykonuje kwerendę bazy danych

W tej sekcji opisano sposób projektowania formularza kwerendy w programie InfoPath. W tym przykładzie użyto tabeli dostawcy z bazy danych Northwind. Aby utworzyć formularz, który wykonuje kwerendę w tej tabeli, wykonaj kroki, dostępnych dla danej wersji programu InfoPath.

Program InfoPath 2010

Tworzenie szablonu formularza, a następnie ustaw język kodu szablonu formularza do języka C#. Aby to zrobić, wykonaj następujące kroki:
  1. Uruchom 2010 projektanta programu InfoPath.
  2. WZaawansowane szablonów formularzysekcja selectBazy danych, a następnie kliknij przycisk Projektuj formularz.
  3. W Kreatorze połączenia danych kliknij przycisk Wybierz bazę danych.
  4. Zlokalizuj folder, w którym zapisano bazę danych Northwind, wybierz plik Northwind.accdb, a następnie kliknij przycisk Otwórz.
  5. W Zaznacz tabelę Wybierz okno, przewiń w dół listy, Dostawców Tabela, a następnie kliknij OK.
  6. Upewnij się, że następujące pola są zaznaczone w Dostawców Tabela:
    • IDENTYFIKATOR
    • Firma
    • Nazwisko
    • Imię
    • Job_Title
    • Business_Phone
  7. Kliknij przycisk Dalej.
  8. Kliknij przycisk ZakończAby zakończyć Kreatora połączenia danych.
  9. W Polaokienko, rozwiń węzełdataFieldswęzeł, a następnie przeciągnij Dodajd: dostawcywęzeł, aby pole w obszarzeUruchamianie kwerendyprzycisk.
  10. Po wyświetleniu monitu kliknij przycisk Wybierz Tabeli powtarzanej.
  11. WPolaokienko, rozwiń węzełqueryFieldswęzeł, a następnie przeciągnij Dodajq: dostawcy węzeł, aby pole w obszarzeNowy rekordprzycisk. (To automatycznie dodaje sekcję zawierającą formanty.)
  12. W obszarzeDeweloperKliknij pozycjęJęzyk.
  13. WJęzyk programowaniaw sekcjiJęzyk kodu szablonu formularza, wybierz C#, a następnie kliknij przyciskOK.

Program InfoPath 2007

Tworzenie szablonu formularza. Aby to zrobić, wykonaj następujące kroki:
  1. Uruchom program InfoPath 2007.
  2. W okienku nawigacjiWypełnianie formularza okno dialogowe, kliknij przycisk Projektowanie szablonu formularza.
  3. W Projektowanie szablonu formularza okno Kliknij przycisk Pole jest puste, a następnie kliknij przycisk OK.
  4. Na Narzędzia menu, kliknij przycisk Dane Połączenia, a następnie kliknij przycisk Dodawanie. W Dane Połączenia zostanie otwarte okno.
  5. W Połączenia danych Kliknij Wybierz Utwórz nowe połączenie Kliknij, aby pole wyboru Wybierz Otrzymywanie danych Zaznacz pole wyboru, a następnie kliknij przyciskDalej.
  6. Kliknij, aby zaznaczyć Bazy danych (Microsoft SQL Server lub programu Microsoft Office Access) Zaznacz pole wyboru, a następnie kliknij przyciskDalej.
  7. Kliknij przycisk Wybierz bazę danych.
  8. Zlokalizuj folder, w którym zapisano bazę danych Northwind, wybierz folder, a następnie kliknij przycisk Otwórz.
  9. W Zaznacz tabelęokno dialogowe, przewiń w dół listy, zaznaczDostawcówTabela, a następnie kliknijOK.
  10. W Struktura źródła danychLista, upewnij się, że zaznaczone są tylko następujące nagłówki kolumn:
    • IDENTYFIKATOR
    • Firma
    • Imię
    • Nazwisko
    • Job_Title
    • Business_Phone
  11. Kliknij przyciskDalej.
  12. Kliknij przycisk Najpierw projektuj widok danych, a następnie Kliknij przycisk Zakończ Aby zakończyć pracę Kreatora konfiguracji źródła danych i tworzenie domyślny formularz.
  13. W Źródła danych okienko zadań, kliknij dwukrotniedataFields.
  14. Przenoszenie d: dostawcy węzeł, aby Dane Widok w formularzu.
  15. Po wyświetleniu monitu, dodawanie d: dostawcy jako a Tabeli powtarzanej.
  16. Na Widok menu, kliknij przycisk Zarządzanie Widoki.
  17. W Widoki kliknij polecenie okienko zadańKwerendy Widok.
  18. Na Narzędzia menu, kliknij przycisk Opcje formularza.
  19. W Kategoria Kliknij pozycję Programowanie.
  20. W Język kodu szablonu formularza Kliknij przycisk C#, a następnie kliknij przycisk OK.

Zmienianie formularza, aby uruchomić kwerendę niestandardową

W tej sekcji opisano sposób wyszukiwania rekordów zawierających wartości, które przypominają wyszukiwany ciąg znaków, ale nie odpowiadają dokładnie ciąg. Aby wyszukać rekordy, które mają podobne wartości, można użyć ciągu znaków wieloznacznych iPODOBNIE JAKoświadczenie w kwerendzie SQL. Gdy symbol wieloznaczny znaku ciągu iPODOBNIE JAKoświadczenia są używane razem, można znaleźć rekordy na podstawie kryteriów wyszukiwania znak symbolu wieloznacznego. Te rekordy są zwracane do programu InfoPath.

Aby zmienić formularza, aby uruchomić kwerendę niestandardową zStanowiskopola w 2010 programu InfoPath lub w programie InfoPath 2007, wykonaj następujące kroki:

  1. W trybie projektowania kliknij prawym przyciskiem myszy Uruchamianie kwerendy przycisk, a następnie kliknij Właściwości przycisku.
  2. Należy wprowadzić następujące zmiany:
    • Zmiana Akcja przyciskuReguły i kod niestandardowy
    • Zmiana EtykietaAbyUruchamianie kwerendy
    • Zmiana IDENTYFIKATORAbybtnQuery
  3. Kliknij przycisk Edytuj kod formularza przycisk, aby zastosować wprowadzone zmiany, a następnie uruchom Visual Studio Tools for Applications edytora. Zostanie otwarty program obsługi zdarzeń "Clicked" btnQuery.
  4. Zamień komentarz "/ / tutaj wpisz własny kod" z następującego 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. Skompiluj projekt klikając Kompilacjaelement menu, a następnie klikając polecenie KompilacjaNazwa projektu.
  6. Zapisać zmiany, a następnie powróć do programu InfoPath.

Przetestować kod

Przykładowy kod, który znajduje się w poprzedniej procedurze pozwala wykonywać wyszukiwanie znaków wieloznacznychStanowisko w polu Dostawców Tabela. Zapewniając takie jak kwerendy wyszukiwania % Sprzedaży, wszystkie rekordy, które są zwracane będą mieć kontakty w pozycji sprzedaży. Te kontakty mogą być przedstawiciel, menedżera lub pełnomocnika tak długo, jak ich rekordów spełnia kryteria wyszukiwania% Sprzedaży. Kontakty, które nie mają "Sprzedaż" w Stanowisko pola są odfiltrowywane.


Aby sprawdzić, czy wszystkie rekordy, które są zwracane mają kontakty w pozycji sprzedaży, wykonaj następujące kroki:
  1. W programie InfoPath 2010:NaStrona głównaKarta na Wstążce, kliknij przyciskPodgląd.
    Program InfoPath 2007:Na pasku narzędzi kliknij przycisk Podgląd, a następnie kliknij przyciskFormularz.
  2. W Stanowisko pola kwerendy, typ % Sprzedaży.
  3. Kliknij przycisk Uruchom kwerendę.

Rekordy, które są zwracane przez kwerendy niestandardowej są wszystkie kontakty w pozycji sprzedaży.

Właściwości

Numer ID artykułu: 826992 - Ostatnia weryfikacja: 24 czerwca 2011 - Weryfikacja: 2.0
Informacje zawarte w tym artykule dotyczą:
  • Microsoft Office InfoPath 2007
  • Microsoft Office InfoPath 2003
Słowa kluczowe: 
kbhowto kbmt KB826992 KbMtpl
Przetłumaczone maszynowo
WAŻNE: Ten artykuł nie został przetłumaczony przez człowieka, tylko przez oprogramowanie do tłumaczenia maszynowego firmy Microsoft. Firma Microsoft oferuje zarówno artykuły tłumaczone przez ludzi, jak i artykuły tłumaczone maszynowo, dzięki czemu każdy użytkownik może uzyskać dostęp do całej zawartości bazy wiedzy Knowledge Base we własnym języku. Prosimy jednak pamiętać, że artykuły przetłumaczone maszynowo nie zawsze są doskonałe. Mogą zawierać błędy słownictwa, składni i gramatyki, przypominające błędy robione przez osoby, dla których język użytkownika nie jest językiem ojczystym. Firma Microsoft nie odpowiada za wszelkie nieścisłości, błędy lub szkody spowodowane nieprawidłowym tłumaczeniem zawartości oraz za wykorzystanie tej zawartości przez klientów. Oprogramowanie do tłumaczenia maszynowego jest często aktualizowane przez firmę Microsoft.
Anglojęzyczna wersja tego artykułu to:826992

Przekaż opinię

 

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