como buscar al tipear en vb?
Publicado por wdc (2 intervenciones) el 03/08/2006 02:15:39
hola,
estoy haciendo un programa pequeño que al abrirse carga datos de una bbdd access a un msflexgrid, ahora quiero que al tipear en un textbox la grilla se actualice mostrando solo los registros que coinciden con lo que tipeo, esto es fácil sabiendo hacer consultas sql y poniendo esta consulta en el evento text1_change pero mi duda es en que parte del código debo abrir o cerrar mi conexión y mi recordset.
la verdad es que no domino bien esta parte y el tipieado se pone lento porque con cada letra que escribo o borro el programa abre la conexión, crea el recordset y elejuta la consulta sql. habrá un modo de evitar esta ralentización?
en el load del programa tengo lo mismo que en el Private Sub Text1_Change()
he acá el código de este evento:
Private Sub Text1_Change()
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\bbdd.MDB;"
Set con = New ADODB.Connection
Set rs = New ADODB.Recordset
con.Open strcon
Dim Ind As Long
Grilla.Clear
ssql = "select id, nombre, fono, direccion from alumno where nombre like '" + Text1.Text + "%' order by nombre"
rs.Open ssql, con
Ind = 1
Do While Not rs.EOF
Grilla.TextMatrix(Ind, 0) = IIf(IsNull(rs.Fields(0)), "", rs.Fields(0))
Grilla.TextMatrix(Ind, 1) = IIf(IsNull(rs.Fields(1)), "", rs.Fields(1))
Grilla.TextMatrix(Ind, 2) = IIf(IsNull(rs.Fields(2)), "", rs.Fields(2))
' Grilla.TextMatrix(Ind, 3) = IIf(IsNull(rs.Fields(3)), "", rs.Fields(3))
Ind = Ind + 1
' Grilla.Rows = Grilla.Rows + 1
rs.MoveNext
Loop
Grilla.ColAlignment(0) = 2: Grilla.ColAlignment(1) = 2
Grilla.ColAlignment(2) = 2: Grilla.ColAlignment(3) = 2
'cerrar conexion y recordset
' rs.Close
' Set rs = Nothing
' con.Close
' Set con = Nothing
End Sub
gracias.
w.
estoy haciendo un programa pequeño que al abrirse carga datos de una bbdd access a un msflexgrid, ahora quiero que al tipear en un textbox la grilla se actualice mostrando solo los registros que coinciden con lo que tipeo, esto es fácil sabiendo hacer consultas sql y poniendo esta consulta en el evento text1_change pero mi duda es en que parte del código debo abrir o cerrar mi conexión y mi recordset.
la verdad es que no domino bien esta parte y el tipieado se pone lento porque con cada letra que escribo o borro el programa abre la conexión, crea el recordset y elejuta la consulta sql. habrá un modo de evitar esta ralentización?
en el load del programa tengo lo mismo que en el Private Sub Text1_Change()
he acá el código de este evento:
Private Sub Text1_Change()
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\bbdd.MDB;"
Set con = New ADODB.Connection
Set rs = New ADODB.Recordset
con.Open strcon
Dim Ind As Long
Grilla.Clear
ssql = "select id, nombre, fono, direccion from alumno where nombre like '" + Text1.Text + "%' order by nombre"
rs.Open ssql, con
Ind = 1
Do While Not rs.EOF
Grilla.TextMatrix(Ind, 0) = IIf(IsNull(rs.Fields(0)), "", rs.Fields(0))
Grilla.TextMatrix(Ind, 1) = IIf(IsNull(rs.Fields(1)), "", rs.Fields(1))
Grilla.TextMatrix(Ind, 2) = IIf(IsNull(rs.Fields(2)), "", rs.Fields(2))
' Grilla.TextMatrix(Ind, 3) = IIf(IsNull(rs.Fields(3)), "", rs.Fields(3))
Ind = Ind + 1
' Grilla.Rows = Grilla.Rows + 1
rs.MoveNext
Loop
Grilla.ColAlignment(0) = 2: Grilla.ColAlignment(1) = 2
Grilla.ColAlignment(2) = 2: Grilla.ColAlignment(3) = 2
'cerrar conexion y recordset
' rs.Close
' Set rs = Nothing
' con.Close
' Set con = Nothing
End Sub
gracias.
w.
Valora esta pregunta


0