Cómo utilizar caracteres comodín en una consulta de formulario de InfoPath cuando se enlaza a un origen de datos de ADO

Seleccione idioma Seleccione idioma
Id. de artículo: 826992 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

Microsoft Office InfoPath simplifica enlace para Microsoft SQL Server o Microsoft Access. InfoPath puede generar automáticamente las consultas de tabla directas sencillas para una base de datos SQL o a una base de datos de Access mediante el uso de Microsoft ActiveX Data Objects (ADO). A continuación, InfoPath permite a los resultados de la consulta para mostrar y editar en el formulario.

Para consultas más avanzadas, InfoPath realiza varios métodos de programación disponible para los usuarios avanzados o para el desarrollador. Estos métodos de programación permiten al usuario experto o al programador generar formularios que pueden realizar una consulta personalizada que utiliza la sintaxis SQL más compleja. Un ejemplo de una consulta personalizada común, utiliza un carácter comodín para encontrar registros que coinciden parcialmente de los criterios especificados.

Los pasos siguientes muestran cómo utilizar código administrado de InfoPath para realizar una búsqueda de caracteres comodín en una tabla SQL o en una tabla de Access mediante elADOAdapterobjeto.

Más información

InfoPath permite convertir una conexión de datos de consulta como unaAdoQueryConnectionobjeto. Esto le proporciona métodos para recuperar y establecer información sobre los siguientes elementos:
  • La cadena de conexión
  • El texto del comando SQL
  • El valor de tiempo de espera
Mediante el uso de laAdoQueryConnectionobjeto, puede cambiar una instrucción SQL para realizar operaciones más complejas, como, por ejemplo, una consulta que utiliza caracteres comodín.

La información de este artículo se aplica a bases de datos SQL y bases de datos Access. Los ejemplos siguientes utilizan la base de datos Northwind que se incluye con Microsoft Office Access 2007 y Microsoft Office Access 2010.

Crear la base de datos

Si aún no ha utilizado la base de datos de ejemplo Northwind desde la versión de InfoPath, cree la base de datos localmente. Para ello, siga estos pasos:

  1. Inicie Microsoft Office Access.
  2. En elPlantillas disponiblessección, seleccionePlantillas de ejemplo.
  3. Seleccione elNorthwindbase de datos y haga clic enCrear.

Diseñar un formulario que consulta la base de datos

Esta sección describe cómo diseñar un formulario de consulta en InfoPath. Este ejemplo utiliza la tabla Suppliers de la base de datos Northwind. Para crear un formulario que consulta esta tabla, siga los pasos que se proporcionan para su versión de InfoPath.

InfoPath (2010)

Crear la plantilla de formulario y, a continuación, establezca el lenguaje de código de la plantilla de formulario a C#. Para ello, siga estos pasos:
  1. Inicie el 2010 del Diseñador de InfoPath.
  2. En elPlantillas de formulario avanzadassección, seleccioneBase de datosy, a continuación, haga clic enFormulario de diseño.
  3. En el Asistente para la conexión de datos, haga clic enSeleccione la base de datos.
  4. Busque la carpeta donde guardó la base de datos Northwind, seleccione el archivo Northwind.accdb y, a continuación, haga clic enAbierto.
  5. En elSeleccione la tablaventana, desplácese hasta la parte inferior de la lista, seleccione elProveedorestabla y haga clic enACEPTAR.
  6. Asegúrese de que sólo los campos siguientes están seleccionados en elProveedorestabla:
    • ID.
    • Compañía
    • Apellido
    • First_Name
    • Job_Title
    • Business_Phone
  7. Haga clic enSiguiente.
  8. Haga clic enFinalizarpara completar al Asistente para la conexión de datos.
  9. En elLos campospanel, expanda eldataFieldsnodo y, a continuación, arrastre el agregard: proveedoresnodo a la casilla debajo de laEjecutar consultabotón.
  10. Cuando se le pida, haga clic para seleccionarTabla de repetición.
  11. En elLos campospanel, expanda elqueryFieldsnodo y, a continuación, arrastre el agregarq: proveedoresnodo a la casilla debajo de laNuevo registrobotón. (Esto agrega automáticamente una sección con controles.)
  12. En elDeveloperHaga clic enIdioma.
  13. En elLenguaje de programaciónsección, enLenguaje de código de plantilla de formulario, seleccioneC#y, a continuación, haga clic enACEPTAR.

InfoPath 2007

Crear la plantilla de formulario. Para ello, siga estos pasos:
  1. Inicie InfoPath 2007.
  2. En el panel de exploración de laRellenar un formulariocuadro de diálogo, haga clic enDiseñar una plantilla de formulario.
  3. En elDiseñar una plantilla de formularioventana, Haga clic enEn blanco,y, a continuación, haga clic enACEPTAR.
  4. En elHerramientasmenú, haga clic enDatos Las conexionesy, a continuación, haga clic enAgregar. ElDatos Conexiónse abrirá la ventana.
  5. En elConexión de datosventana, haga clic para Seleccione elCrear una nueva conexión concasilla de verificación, haga clic para Seleccione elRecibir datoscasilla de verificación y, a continuación, haga clic enSiguiente.
  6. Haga clic para seleccionar elLa base de datos (Microsoft SQL Server o Microsoft Office Access únicamente)casilla de verificación y, a continuación, haga clic enSiguiente.
  7. Haga clic enSeleccione la base de datos.
  8. Busque la carpeta donde guardó la base de datos Northwind, seleccione la carpeta y, a continuación, haga clic enAbierto.
  9. En elSeleccione la tablacuadro de diálogo, desplácese hasta la parte inferior de la lista, seleccione elProveedorestabla y haga clic enACEPTAR.
  10. En elEstructura del origen de datoslista, asegúrese de que sólo los siguientes encabezados de columna están seleccionados:
    • ID.
    • Compañía
    • First_Name
    • Apellido
    • Job_Title
    • Business_Phone
  11. Haga clic enSiguiente.
  12. Haga clic enDiseñar primero la vista de datosy, a continuación Haga clic enFinalizarpara salir del Asistente para la configuración de orígenes de datos y para generar el formulario predeterminado.
  13. En elOrigen de datospanel de tareas, haga doble clic endataFields.
  14. Mover eld: proveedoresnodo para elDatosvista del formulario.
  15. Cuando se le pida, agregard: proveedorescomo unTabla de repetición.
  16. En elVistamenú, haga clic enAdministrar Las vistas.
  17. En elLas vistaspanel de tareas, haga clic en elConsultavista.
  18. En elHerramientasmenú, haga clic enOpciones de formulario.
  19. En elCategoríaHaga clic enProgramación.
  20. En elLenguaje de código de plantilla de formularioHaga clic enC#y, a continuación, haga clic enACEPTAR.

Cambiar el formulario para ejecutar una consulta personalizada

En esta sección se describe cómo buscar registros con valores que son similares a la cadena de búsqueda pero no coincide exactamente con la cadena. Puede utilizar una cadena de caracteres comodín para buscar registros que tienen valores similares y elAL IGUAL QUEinstrucción en una consulta SQL. Cuando el comodín de la cadena de caracteres y elAL IGUAL QUEinstrucción se utilizan juntos, pueden encontrar los registros según los criterios de búsqueda de caracteres comodín. Estos registros se devuelven después a InfoPath.

Para cambiar el formulario para ejecutar una consulta personalizada de laPuesto de trabajocampo en 2010 de InfoPath o en InfoPath 2007, siga estos pasos:

  1. En el modo de diseño, haga clic en elEjecutar consultabotón y haga clic enPropiedades del botón.
  2. Realice los cambios siguientes:
    • Cambiar elAccióndel botón aReglas y código personalizado
    • Cambiar elEtiquetaparaEjecutar consulta
    • Cambiar elID.parabtnQuery
  3. Haga clic en elEditar código del formulariobotón para aplicar los cambios y, a continuación, inicie Visual Studio Tools para aplicaciones (editor). Se abrirá el controlador de eventos de btnQuery "Clicked".
  4. Reemplace el comentario "/ / Escriba aquí su código" con el código siguiente:
    //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. Genere el proyecto, haga clic en elGeneraciónelemento de menú y, a continuación, haga clic enGeneraciónnombre del proyecto.
  6. Guardar los cambios y, a continuación, vuelva a InfoPath.

Probar el código

El código de ejemplo que se proporciona en el procedimiento anterior le permite realizar una búsqueda de caracteres comodín de laPuesto de trabajocampo en elProveedorestabla. Al proporcionar una consulta de búsqueda como% De venta, todos los registros que se devuelven will tienen contactos en un puesto de ventas. Estos contactos pueden ser un agente, un administrador o un representante, siempre y cuando su registro cumpla los criterios de búsqueda de% De venta. Contactos que no tienen "Ventas" enPuesto de trabajose filtran el campo.


Para comprobar que todos los registros devueltos tienen contactos en un puesto de ventas, siga estos pasos:
  1. InfoPath 2010:En elPágina principalficha de la cinta de opciones, haga clic enVista previa.
    Para InfoPath 2007:En la barra de herramientas, haga clic enVista previay, a continuación, haga clic enFormulario.
  2. En elPuesto de trabajocampo de consulta, escriba% De venta.
  3. Haga clic enEjecutar la consulta.

Los registros devueltos por la consulta personalizada son todos los contactos en un puesto de ventas.

Propiedades

Id. de artículo: 826992 - Última revisión: lunes, 07 de febrero de 2011 - Versión: 1.0
La información de este artículo se refiere a:
  • Microsoft Office InfoPath 2007
  • Microsoft Office InfoPath 2003
Palabras clave: 
kbhowto kbmt KB826992 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 826992

Enviar comentarios

 

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