Come utilizzare caratteri jolly in una query del modulo di InfoPath durante l'associazione a un'origine dati ADO

Traduzione articoli Traduzione articoli
Identificativo articolo: 826992 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

Microsoft Office InfoPath semplifica associazione per Microsoft SQL Server o Microsoft Access. InfoPath Ŕ in grado di generare automaticamente le query di tabella semplice e diretto a un database SQL o a un database utilizzando Microsoft ActiveX Data Objects (ADO). InfoPath consente quindi, i risultati della query per essere visualizzati e modificati nel modulo.

Per le query pi¨ avanzate, InfoPath rende pi¨ metodi di programmazione disponibili per gli utenti esperti o agli sviluppatori. Questi metodi di programmazione abilitare gli utenti esperti o agli sviluppatori di creare moduli che possono eseguire una query personalizzata che utilizza la sintassi SQL pi¨ complessa. Un esempio di una query personalizzata comune utilizza un carattere jolly per trovare i record che soddisfano parzialmente i criteri specificati.

La procedura riportata di seguito viene illustrato come utilizzare codice gestito di InfoPath per eseguire una ricerca dei caratteri jolly in una tabella di SQL o in una tabella di Access utilizzando ilADOAdapteroggetto.

Informazioni

InfoPath consente di eseguire il cast di una connessione dati per query come unAdoQueryConnectionoggetto. In questo modo i metodi per recuperare e impostare le informazioni sui seguenti elementi:
  • La stringa di connessione
  • Il testo del comando SQL
  • Il valore di timeout
Utilizzando ilAdoQueryConnectionun oggetto, Ŕ possibile modificare un'istruzione SQL per eseguire le operazioni pi¨ complesse, ad esempio una query che utilizza caratteri jolly.

Le informazioni contenute in questo articolo si applicano ai database SQL e ai database di Access. Negli esempi seguenti utilizzano il database Northwind Ŕ incluso in Microsoft Office Access 2007 e Microsoft Office Access 2010.

Creazione del database

Se il database di esempio Northwind non Ŕ ancora utilizzato dalla versione di InfoPath, creare il database locale. A tale scopo, attenersi alla procedura seguente:

  1. Avviare Microsoft Office Access.
  2. NelModelli disponibilisezione, selezionareModelli di esempio.
  3. Selezionare ilNorthwinddatabase e quindi fare clic suCreare.

Progettare un modulo che esegue una query al database

In questa sezione viene descritto come progettare un modulo di query in InfoPath. In questo esempio viene utilizzata la tabella fornitori dal database Northwind. Per creare un modulo che esegue una query in questa tabella, seguire i passaggi che vengono forniti per la versione di InfoPath.

InfoPath 2010

Creare il modello di modulo e quindi impostare il linguaggio codice modello di modulo in C#. A tale scopo, attenersi alla procedura seguente:
  1. Avviare InfoPath Designer 2010.
  2. NelModelli di modulo avanzatosezione, selezionareDatabase, quindi fare clic suForm di progettazione.
  3. Nella connessione guidata dati fare clic suSeleziona Database.
  4. Individuare la cartella in cui Ŕ stato salvato il database Northwind, selezionare il file Northwind.accdb e quindi fare clic suApri.
  5. NelSelezionare la tabellafinestra, scorrere fino alla fine dell'elenco, selezionare laFornitoritabella e quindi fare clic suOK.
  6. Assicurarsi che siano selezionati solo i campi seguenti nelFornitoritabella:
    • ID
    • SocietÓ
    • Cognome
    • First_Name
    • Job_Title
    • Business_Phone
  7. Fare clic suSuccessivo.
  8. Fare clic suFinePer completare la connessione guidata dati.
  9. NelI campiriquadro, espandere ladataFieldsil nodo e quindi trascinare il componented: fornitorinodo nella casella sotto ilEsecuzione di Querypulsante.
  10. Quando viene richiesto, fare clic per selezionareTabella ripetuta.
  11. NelI campiriquadro, espandere laqueryFieldsil nodo e quindi trascinare il componented: fornitorinodo nella casella sotto ilNuovo Recordpulsante. (Ci˛ aggiunge automaticamente una sezione con controlli.)
  12. Nella sezione iGli sviluppatoriFare clic suLingua.
  13. NelLinguaggio di programmazionesezione sottoLinguaggio codice modello di modulo, selezionareC#, quindi fare clic suOK.

InfoPath 2007

Creare il modello di modulo. A tale scopo, attenersi alla procedura seguente:
  1. Avviare InfoPath 2007.
  2. Nel riquadro di spostamento delCompilare un moduloNella finestra di dialogo, fare clic suProgettare un modello di modulo.
  3. NelProgettare un modello di modulofinestra, Fare clic suValore,e quindi fare clic suOK.
  4. NelStrumentimenu, fare clic suI dati Le connessioni, quindi fare clic suAggiungere. IlI dati Connessioneviene visualizzata la finestra.
  5. NelConnessione datifinestra, fare clic su Selezionare ilCreare una nuova connessionecasella di controllo, fare clic su Selezionare ilRicezione dei daticasella di controllo e quindi fare clic suSuccessivo.
  6. Fare clic per selezionare ilDatabase (Microsoft SQL Server o Microsoft Office Access solo)casella di controllo e quindi fare clic suSuccessivo.
  7. Fare clic suSeleziona Database.
  8. Individuare la cartella in cui Ŕ stato salvato il database Northwind, selezionare la cartella e quindi fare clic suApri.
  9. NelSelezionare la tabellaNella finestra di dialogo, scorrere fino alla fine dell'elenco, selezionare laFornitoritabella e quindi fare clic suOK.
  10. NelStruttura dell'origine datielenco, assicurarsi che siano selezionate solo le intestazioni di colonna seguenti:
    • ID
    • SocietÓ
    • First_Name
    • Cognome
    • Job_Title
    • Business_Phone
  11. Fare clic suSuccessivo.
  12. Fare clic suProgetta visualizzazione Immissione dati, quindi Fare clic suFinePer uscire dalla configurazione guidata origine dati e per la creazione di il modulo predefinito.
  13. NelOrigine datiriquadro attivitÓ, fare doppio clic sudataFields.
  14. Spostare ild: fornitorinodo per ilI dativisualizzazione del modulo.
  15. Quando viene chiesto di confermare l'operazione, aggiungered: fornitoricome unTabella ripetuta.
  16. NelVisualizzazionemenu, fare clic suGestire Le viste.
  17. NelLe visteriquadro attivitÓ, scegliere ilQueryConsente di visualizzare.
  18. NelStrumentimenu, fare clic suOpzioni modulo.
  19. NelCategoriaFare clic suProgrammazione.
  20. NelLinguaggio codice modello di moduloFare clic suC#, quindi fare clic suOK.

Modificare il modulo per eseguire una query personalizzata

In questa sezione viene descritto come cercare i record che contengono valori simili la stringa di ricerca, ma non corrispondono esattamente alla stringa. Per cercare i record che contengono valori simili, Ŕ possibile utilizzare una stringa di caratteri jolly e ilAD ESEMPIOistruzione in una query SQL. Quando il carattere jolly stringa di caratteri e laAD ESEMPIOistruzione vengono utilizzati insieme, Ŕ sempre possibile individuare i record in base ai criteri di ricerca di caratteri jolly. Questi record vengono quindi restituiti a InfoPath.

Per modificare il modulo per eseguire una query personalizzata laTitolo professionalecampo nel 2010 InfoPath o in InfoPath 2007, attenersi alla seguente procedura:

  1. In modalitÓ progettazione destro laEsecuzione di Querypulsante e quindi fare clic suProprietÓ del pulsante.
  2. Apportare le seguenti modifiche:
    • Modifica ilAzionedel pulsante inRegole e codice personalizzato
    • Modifica ilEtichettaPerEsecuzione di Query
    • Modifica ilIDPerbtnQuery
  3. Scegliere ilModifica codice modulopulsante per applicare le modifiche e riavviare Visual Studio Tools per le applicazioni editor. Si aprirÓ il gestore dell'evento "Clicked" btnQuery.
  4. Sostituire il commento "/ / scrivere qui il codice" con il seguente codice:
    //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. Generare il progetto scegliendo ilGenerazionevoce di menu e quindi fare clic suGenerazionenome del progetto.
  6. Salvare le modifiche e tornare a InfoPath.

Il test del codice

Il codice di esempio fornito nella procedura precedente, Ŕ possibile eseguire una ricerca di caratteri jolly delTitolo professionalenel campo dellaFornitoritabella. Fornendo ad esempio una query di ricerca% Vendite, tutti i record restituiti verranno hanno contatti in una posizione di vendita. Questi contatti possono essere un rappresentante, un manager o un agente, purchÚ i record soddisfa i criteri di ricerca% Vendite. Contatti che non dispongono di "Sales" nellaTitolo professionalecampo vengono filtrati.


Per verificare che tutti i record restituiti sono i contatti in una posizione di vendite, attenersi alla procedura seguente:
  1. Per il 2010 InfoPath:NelHome pagesulla barra multifunzione, fare clicAnteprima.
    Per InfoPath 2007:Sulla barra degli strumenti, fare clic suAnteprima, quindi fare clic suModulo.
  2. NelTitolo professionalecampo di query, tipo% Vendite.
  3. Fare clic suEseguire Query.

I record restituiti dalla query personalizzate sono tutti i contatti in una posizione di vendita.

ProprietÓ

Identificativo articolo: 826992 - Ultima modifica: lunedý 7 febbraio 2011 - Revisione: 1.0
Le informazioni in questo articolo si applicano a:
  • Microsoft Office InfoPath 2007
  • Microsoft Office InfoPath 2003
Chiavi:á
kbhowto kbmt KB826992 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 826992
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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