Para realizar búsquedas en una base datos desde InfoPath en 3 pasos.

1. Crea la tabla en la base de datos donde tienes toda la información

image

2. Crea un formulario en InfoPath con los campos que necesita extraer de la base de datos.

image

3. Finalmente agregue el siguiente código en el botón buscar,

Click  derecho en el botón y seleccionar propiedades

image

Seleccionar Edit Form Code

image

 

Pegar el código, es necesario agregar la librería, siguiente y la referencia System.Data

 

using System.Data.SqlClient;
   1:  
   2:             XPathNavigator nav = CreateNavigator();
   3:             XPathNavigator nav1 = CreateNavigator();
   4:             XPathNavigator nav2 = CreateNavigator();
   5:             XPathNavigator nav3 = CreateNavigator();
   6:             XPathNavigator nav4 = CreateNavigator();
   7:             XPathNavigator nav5 = CreateNavigator();
   8:             XPathNavigator nav6 = CreateNavigator();
   9:             XPathNavigator nav7 = CreateNavigator();
  10:             XPathNavigator nav8 = CreateNavigator();
  11:  
  12:             // Obtener el valor a buscar desde el campo de infopath
  13:             XPathNavigator ValorRadicado = nav.SelectSingleNode("/my:Encuestas/my:A/my:A11RadicadoValor", NamespaceManager);
  14:  
  15:             //Cadena de Conexión
  16:             string strConn = @"Server=NombreServer;Database=BasedeDatos;User Id=usuario;Password=Password;";
  17:             //nueva sql conexión
  18:             SqlConnection conn = new SqlConnection(strConn);
  19:  
  20:             //armar la consulta de sql 
  21:             SqlCommand cmd = new SqlCommand("SELECT * FROM Institucion WHERE Radicado = '" + ValorRadicado.ToString() + "'", conn);
  22:  
  23:             //abrir conexión, ejecutar comando, colocar el resultado en el sqldatareader 
  24:             SqlDataReader reader;
  25:             try
  26:             {
  27:                 conn.Open();
  28:                 reader = cmd.ExecuteReader();
  29:                 if (reader.HasRows)
  30:                 {
  31:                     while (reader.Read())
  32:                     {
  33:                         //Asignar los valores del resultaddo de la consulta en campos del formulario
  34:                         nav1.SelectSingleNode("/my:Encuestas/my:InstitucionEducativa/my:A14Region", NamespaceManager).SetValue(reader[0].ToString());
  35:                         nav2.SelectSingleNode("/my:Encuestas/my:InstitucionEducativa/my:A112Dpto", NamespaceManager).SetValue(reader[2].ToString());
  36:                         nav3.SelectSingleNode("/my:Encuestas/my:InstitucionEducativa/my:A11InstitucionEduc", NamespaceManager).SetValue(reader[5].ToString());
  37:                         nav4.SelectSingleNode("/my:Encuestas/my:InstitucionEducativa/my:A13Municipio", NamespaceManager).SetValue(reader[3].ToString());
  38:                         nav5.SelectSingleNode("/my:Encuestas/my:InstitucionEducativa/my:A15DaneSede", NamespaceManager).SetValue(reader[4].ToString());
  39:                         nav6.SelectSingleNode("/my:Encuestas/my:InstitucionEducativa/my:A16NombreSede", NamespaceManager).SetValue(reader[6].ToString());
  40:                         nav7.SelectSingleNode("/my:Encuestas/my:InstitucionEducativa/my:A17Zona", NamespaceManager).SetValue(reader[7].ToString());
  41:                         nav8.SelectSingleNode("/my:Encuestas/my:InstitucionEducativa/my:A18TipoSede", NamespaceManager).SetValue(reader[8].ToString());
  42:                        
  43:                     }
  44:                 }
  45:             }
  46:             finally
  47:             {
  48:                 conn.Close();
  49:             }
  50:         }

Resultado


image