Hola Ogramar,
¡ya filtra bien!. He probado el último código que me has enviado pero volvía a salir error en bs.Filter = "CLASE = ComboBox1.SelectedValue". Pero al final lo he dejado igual que antes, sólo que he cambiado el código que hay dentro del
Private sub commadbuton1_selectedIndexChanged. Abajo pongo como ha quedado el código finalmente.
Muchas gracias por todo. A mí sola no me abría salido.
Sólo me gustaría hacerte una pregunta antes de dar el tema por cerrado.
¿Sería mejor tener todos los datos en una base de datos de Access o MySql en vez de en un Libro Excel? Lo digo por si a la hora de programar en vb 2010 sería más fácil.
Saludos,
Imports System.Data
Imports System.Data.OleDb
Public Class Form1
Private Property stConexion As String
Dim dv As New DataView
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
Dim stConexion As String = ("Provider=Microsoft.ACE.OLEDB.12.0; Data Source= 'C:\Users\rmontañes\Desktop\Prueba.xlsx'; Extended Properties=""Excel 12.0;Xml;HDR=YES;IMEX=2"";") 'este es el codigo que funciona para office 2007 y 2010
Dim cnConex As New OleDbConnection(stConexion)
Dim Cmd As New OleDbCommand("Select * From [Hoja1$]", cnConex)
Dim Ds As New DataSet
Dim Da As New OleDbDataAdapter
Dim dt As New DataTable
Dim bs As BindingSource = BindingSource1
cnConex.Open()
Cmd.Connection = cnConex
Da.SelectCommand = Cmd
Da.Fill(Ds)
dv.Table = Ds.Tables(0)
Me.DataGridView1.Columns.Clear()
Me.DataGridView1.DataSource = dv
Me.DataGridView1.Columns(1).HeaderText = "CLASE"
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
End Try
End Sub
Private dt As DataTable
Dim SQL As String
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Try
SQL = "CLASE like '%" + ComboBox1.Text.Trim + "%'"
dv.RowFilter = SQL
DataGridView1.DataSource = dv
DataGridView1.Update()
Catch EX As Exception
MsgBox(EX.Message, 48)
End Try
End Sub
End Class