Como realizo una consulta desde Basic en una hoja de Excel

Asked By Adriana ..
03-Nov-09 01:29 PM
Earn up to 0 extra points for answering this tough question.
Necesito mostrar en un informe o en un datagrid los resultados de una consulta en excel.
Mi usuario selecciona de un combobox el dato que desea, por ejemplo nombre y yo debo obtener todos los registros que coincidan con ese nombre en la hoja de excel y mostrarlos. He intendado lo de abajo pero no funciona. Agradecería pudieran ayudarme. GRACIAS
 Try
            'Creamos un objecto OLEDBConnection con el nombre del archivo seleccionado como Data Source
            objOleConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; " & _
                               "data source=" & TextBox1.Text.Trim & _
                               "; Extended Properties=Excel 8.0;")

            '* Si queremos seleccionar toda la hoja solo especificamos [Sheet1$]
            Dim item As String
            item = ComboBoxMunicipio.SelectedItem().ToString()
            System.Console.WriteLine(item)


            objDataAdapter = New System.Data.OleDb.OleDbDataAdapter( _
                           "select * from [Totales$] where [Municipio] = 'Cuautlancingo'", objOleConnection)

            objDataSet = New System.Data.DataSet
            objDataAdapter.Fill(objDataSet)
            objOleConnection.Close()

            DataGrid1.CaptionText = objDataSet.Tables(0).TableName
            DataGrid1.DataSource = objDataSet
            DataGrid1.DataMember = objDataSet.Tables(0).TableName
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

  ¿es esto positivo?

[)ia6l0 iii replied to Adriana ..
04-Nov-09 03:43 AM

Usted podría tener en las cláusulas en su OleDbCommand con sus columnas en la hoja de cálculo Excel. Sin embargo, tenga en cuenta que tanto necesita un rango con nombre o una fila de títulos específicos en su hoja de cálculo Excel. 

a) Usted puede crear una región llamada por la elección de la opción de definir en el menú Insertar - Nombre - Definir. Y luego hacer un select * from NamedRange. 
. CommandText = @ "SELECT * FROM" + namedregionname; 

b) o crear una línea de encabezamiento que pueden actuar como un nombre de campo para nuestra cláusula WHERE de nuestra consulta SELECT

Además, esto sólo funciona si la cadena OleDbConnection contiene el "HDR = Yes;" del pabellón. 
Así que la cadena de connnection vez se vería así: 

= objOleConnection System.Data.OleDb.OleDbConnection Nuevo ( "Provider = Microsoft.Jet.OLEDB.4.0;" & _ 
                                 "Data Source =" & TextBox1.Text.Trim & _ 
                                 "Extended Properties = Excel 8.0; HDR = Yes;") 

De lo contrario, el código parece correcto.
Create New Account