Comment faire pour utiliser des caractères génériques dans une requête de formulaire InfoPath lors de la liaison à une source de données ADO

Traductions disponibles Traductions disponibles
Numéro d'article: 826992 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Microsoft Office InfoPath simplifie liaison vers Microsoft SQL Server ou Microsoft Access. InfoPath peut générer automatiquement des requêtes de table simple et direct à une base de données SQL ou à une base de données Access à l'aide de Microsoft ActiveX Data Objects (ADO). Ensuite, InfoPath active les résultats de la requête sont affichées et modifiées dans l'écran.

Pour les requêtes plus avancées, InfoPath rend plusieurs méthodes de programmation accessible aux utilisateurs avancés et aux développeurs. Ces méthodes de programmation permettent au développeur de créer des formulaires qui peuvent effectuer une requête personnalisée qui utilise la syntaxe SQL plus complexe ou de l'utilisateur avancé. Par exemple, une requête personnalisée commune utilise un caractère générique pour rechercher des enregistrements partiellement correspondant aux critères spécifiés.

Les étapes suivantes montrent comment utiliser du code managé dans InfoPath pour effectuer une recherche de caractère générique dans une table SQL ou dans une table Access à l'aide de laADOAdapterobjet.

Plus d'informations

InfoPath vous permet d'effectuer un cast d'une connexion de données de requête comme uneAdoQueryConnectionobjet. Cela vous donne les méthodes pour récupérer et définir des informations sur les éléments suivants :
  • La chaîne de connexion
  • Le texte de commande SQL
  • La valeur de délai d'attente
À l'aide de laAdoQueryConnectionobjet, vous pouvez modifier une instruction SQL pour effectuer des opérations plus complexes, comme une requête qui utilise des caractères génériques.

Les informations contenues dans cet article s'applique aux bases de données SQL et bases de données Access. Les exemples suivants utilisent la base de données Northwind qui est fourni avec Microsoft Office Access 2007 et Microsoft Office Access 2010.

Créer la base de données

Si vous n'avez pas encore utilisé la base de données exemple Les Comptoirs à partir de votre version d'InfoPath, créez la base de données localement. Pour ce faire, procédez comme suit :

  1. Démarrez Microsoft Office Access.
  2. Dans laModèles disponiblessection, sélectionnezExemples de modèles.
  3. Sélectionnez laNorthwindbase de données, puis cliquez surCréer.

Créez un formulaire qui interroge la base de données

Cette section décrit comment concevoir un formulaire de requête dans InfoPath. Cet exemple utilise la table fournisseurs à partir de la base de données Northwind. Pour créer un formulaire qui interroge cette table, suivez les étapes qui sont fournis pour votre version d'InfoPath.

InfoPath 2010

Créez le modèle de formulaire et définissez le langage de code de modèle de formulaire en c#. Pour ce faire, procédez comme suit :
  1. Démarrez InfoPath Designer 2010.
  2. Dans laModèles de formulaire avancésection, sélectionnezBase de données, puis cliquez surCréer un formulaire.
  3. Dans l'Assistant connexion de données, cliquez surSélectionnez la base de données.
  4. Recherchez le dossier où vous avez enregistré la base de données Northwind, sélectionnez le fichier Northwind.accdb et puis cliquez surOpen.
  5. Dans laSélectionnez la Tablefenêtre de défilement vers le bas de la liste, sélectionnez laFournisseurstable, puis cliquez surOK.
  6. Assurez-vous que seuls les champs suivants sont sélectionnés dans leFournisseurstableau :
    • ID
    • Société
    • Last_name
    • First_Name
    • Job_Title
    • Business_Phone
  7. Cliquez surSuivant.
  8. Cliquez surTerminerPour terminer l'Assistant connexion de données.
  9. Dans laChampsvolet, développez ledataFieldsn?ud et puis faites glisser l'ajouterd: fournisseursn?ud à la zone située sous leExécutez la requêtebouton.
  10. Lorsque vous êtes invité, cliquez pour sélectionnerTableau extensible.
  11. Dans laChampsvolet, développez leChampsRequêten?ud et puis faites glisser l'ajouterq: fournisseursn?ud à la zone située sous leNouvel enregistrementbouton. (Ceci ajoute automatiquement une Section qui comporte des contrôles.)
  12. Sous leDéveloppeurCliquez surLangue.
  13. Dans laLangage de programmationla section, sousLangage de code de modèle de formulaire, sélectionnezC#, puis cliquez surOK.

InfoPath 2007

Créez le modèle de formulaire. Pour ce faire, procédez comme suit :
  1. Démarrez InfoPath 2007.
  2. Dans le volet de navigation de laRemplir un formulaireboîte de dialogue, cliquez surModèle de formulaire.
  3. Dans laModèle de formulairefenêtre, Cliquez surEssai à blanc,puis cliquez surOK.
  4. Sur leOutilsmenu, cliquez surDonnées Connexions, puis cliquez surAjouter. LeDonnées ConnexionOuvre la fenêtre.
  5. Dans laConnexion de donnéesfenêtre, cliquez sur Sélectionnez laCréer une nouvelle connexion àcase à cocher, cliquez sur Sélectionnez laRecevoir des donnéescase à cocher, puis cliquezSuivant.
  6. Cliquez pour sélectionner leBase de données (Microsoft SQL Server ou Microsoft Office Access uniquement)case à cocher, puis cliquezSuivant.
  7. Cliquez surSélectionnez la base de données.
  8. Recherchez le dossier où vous avez enregistré la base de données Northwind, sélectionnez le dossier et puis cliquez surOpen.
  9. Dans laSélectionnez la Tableboîte de dialogue, faites défiler vers le bas de la liste, sélectionnez laFournisseurstable, puis cliquez surOK.
  10. Dans laStructure de source de donnéesliste, assurez-vous que seuls les en-têtes de colonne suivants sont sélectionnés :
    • ID
    • Société
    • First_Name
    • Last_name
    • Job_Title
    • Business_Phone
  11. Cliquez surSuivant.
  12. Cliquez surCréer d'abord la vue de données, puis Cliquez surTerminerPour quitter l'Assistant de configuration de Source de données et générer le formulaire par défaut.
  13. Dans laSource de donnéesvolet Office, puis double-cliquez surdataFields.
  14. Déplacer led: fournisseursn?ud à laDonnéesaffichage du formulaire.
  15. Lorsque vous êtes invité, ajouterd: fournisseursen tant que unTableau extensible.
  16. Sur leAffichagemenu, cliquez surGérer Vues.
  17. Dans laVuesvolet Office, cliquez sur leRequêtepermet d'afficher.
  18. Sur leOutilsmenu, cliquez surOptions de formulaire.
  19. Dans laCatégoriela liste, cliquez surProgrammation.
  20. Dans laLangage de code de modèle de formulaireCliquez surC#, puis cliquez surOK.

Modifier le formulaire pour exécuter une requête personnalisée

Cette section décrit comment rechercher les enregistrements qui contiennent des valeurs qui ressemblent à votre chaîne de recherche, mais qui ne correspondent pas exactement à la chaîne. Pour rechercher les enregistrements qui contiennent des valeurs similaires, vous pouvez utiliser une chaîne de caractères génériques et lesCOMMEinstruction dans une requête SQL. Lorsque le caractère générique pour la chaîne de caractères et leCOMMEinstruction sont utilisées ensemble, ils peuvent trouver des enregistrements basés sur les critères de recherche de caractères génériques. Ces enregistrements sont alors renvoyés à InfoPath.

Pour modifier le formulaire pour exécuter une requête personnalisée de laTitre de projetchamp en 2010 d'InfoPath ou dans InfoPath 2007, procédez comme suit :

  1. En mode Création, cliquez à droite sur laExécutez la requêtebouton, puis cliquez surPropriétés du bouton.
  2. Apportez les modifications suivantes :
    • Modifier laActiondu bouton valeurRègles et Code personnalisé
    • Modifier laÉtiquettePourExécutez la requête
    • Modifier laIDPourbtnQuery
  3. Cliquez sur leModifier le Code du formulairebouton pour appliquer les modifications et démarrez Visual Studio Tools for Applications éditeur. Il s'ouvre au gestionnaire d'événements « Clicked » btnQuery.
  4. Remplacez le commentaire « / / tapez ici votre code » par le code suivant :
    //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. Générez le projet en cliquant sur leBuildélément de menu, puis cliquez surBuildnom du projet.
  6. Enregistrer les modifications et revenir ensuite à InfoPath.

Tester le code

L'exemple de code fourni dans la procédure précédente vous permet d'effectuer une recherche de caractère générique de laTitre de projetchamp dans laFournisseurstable. En fournissant une requête de recherche tels que% Vente, tous les enregistrements renvoyés will possèdent des contacts occupant un poste commercial. Ces contacts peuvent être un représentant, un responsable ou un agent dans la mesure où leur enregistrement réponde au critère de recherche% Vente. Contacts qui n'ont pas « Ventes » dansTitre de projetchamp sont filtrés.


Pour vérifier que tous les enregistrements renvoyés possèdent des contacts occupant un poste commercial, procédez comme suit :
  1. Pour 2010 InfoPath :Sur leAccueilonglet du ruban, cliquez surAperçu.
    Pour InfoPath 2007 :Dans la barre d'outils, cliquez surAperçu, puis cliquez surFormulaire.
  2. Dans laTitre de projetchamp de requête, tapez% Vente.
  3. Cliquez surExécutez la requête.

Les enregistrements renvoyés par la requête personnalisée sont tous des contacts occupant un poste commercial.

Propriétés

Numéro d'article: 826992 - Dernière mise à jour: lundi 7 février 2011 - Version: 1.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Office InfoPath 2007
  • Microsoft Office InfoPath 2003
Mots-clés : 
kbhowto kbmt KB826992 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 826992
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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