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
2. Crea un formulario en InfoPath con los campos que necesita extraer de la base de datos.
3. Finalmente agregue el siguiente código en el botón buscar,
Click derecho en el botón y seleccionar propiedades
Seleccionar Edit Form Code
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