Visual Basic - Busqueda Like lenta

Life is soft - evento anual de software empresarial
 
Vista:

Busqueda Like lenta

Publicado por Damian (29 intervenciones) el 26/03/2008 20:10:25
Tengo un problema, en una caja de texto para que sea mas rapida la busqueda el usuario puede ir ingresando los caracteres de un articulo y asi el datagrid va mostrando los articulos que se acerquen a los caracteres ingresados,esto lo realice en un text_change con una consulta. El problema es que a medida que se va escribiendo los caracteres la busqueda se hace muy lenta y tarda mucho en mostrar los articulos, por lo gral pasa cuando voy borrando los caracteres de atras para adelante y vuelvo a escribir los caracteres. El puntero del mouse queda con el famoso dibujito de que esta pensando y despues de un rato largo si me muestra los articulos que correspondan con lo que el usuario fue escribiendo en la caja de texto, habra unos 1000 registros en la BD. En la consulta puse identity para acelerar la busqueda pero su mejora fue escasa. Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Busqueda Like lenta

Publicado por Brinklo (11 intervenciones) el 29/03/2008 01:34:42
En vez de llenar el grid al principio puedes irlo llenando cuando va cambiando el text, y en tu consulta sql usar un top, asi solo te regresaria una parte de los codigos...

Private Sub txtTextBox_Change()
findArt txtTxtBox.Text, mfgGrid
End Sub

Sub findArt(codigo As String, ByRef Grid As MSHFlexGrid)
Dim cmdUno As ADODB.Command
Dim rsconsul As ADODB.Recordset
Dim longitud As Integer
On Error GoTo RutinaError
Set cmdUno = New ADODB.Command
Set rsUno = New ADODB.Recordset
Set rsconsul = New ADODB.Recordset

With cmdUno
.CommandText = "SP_FindArt"
.CommandTimeout = 0
.CommandType = adCmdStoredProc
.Parameters.Refresh
.ActiveConnection = dbConexion
.Parameters.Append .CreateParameter("Codigo", adVarChar, adParamInput, 8, codigo)
End With

Set rsUno = cmdUno.Execute

If rsUno.EOF Or rsUno.BOF Then
longitud = Len(codigo) - 1
codigo = Left(codigo, 1)
Exit Sub
End If

Set cmdUno.ActiveConnection = Nothing
Exit Sub

RutinaError:
MsgBox Err.Description, vbExclamation, "Error " & Err.Number
Resume Next
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Busqueda Like lenta

Publicado por Damian (29 intervenciones) el 29/03/2008 01:54:32
Todo muy lindo pero por lo que veo tu codigo es para visual basic 6 y yo lo tengo realizado en VB.NET, creo que me equivoque de foro igual.
Igual mas o menos es lo mismo salvo algunas propiedades que ya no estan en .NET como la de refresh del Parameters. Grcias igual.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar