Visual Basic - Problema con flexGrid

Life is soft - evento anual de software empresarial
 
Vista:

Problema con flexGrid

Publicado por daju (1 intervención) el 28/11/2009 13:42:09
Buenos Dias y gracias de antemano, el tema es el siguiente tengo un form con un text box y un flexgrid, el flex grid lo tengo enlazado a una base de datos postgres de la siguiente manera:

'Por si se habian abierto antes los recordsets
Set rproductos = Nothing

'Le damos propiedades de recordset
Set rproductos = New ADODB.Recordset

rproductos.Open "Select pdtid,pdtdesc,pdtstk,pdtcost,pdtvmen,pdtvmay,pdtstktmp,pdtdep0,pdtdep1,pdtdep2,pdtgrp,pdtsgrp,pdtsgrpa,pdtsgrpb,pdtmk,pdtpvd,pdtljt,pdtljtval,pdtljtcant,pdtmin,pdtmax,pdtlja,pdtdisc,pdtumed,pdtcat,pdtweb,pdterr from stkpdt", conexion, adOpenKeyset, adLockOptimistic

'rproductos.Open "Select pdtid,pdtdesc from stkpdt", conexion, adOpenKeyset, adLockOptimistic

'rproductos.Open "stkpdt", conexion, adOpenKeyset, adLockOptimistic, adCmdTable

'Me.pdtlst.DataSource = rproductos

With pdtlst
' -- Deshabilitar el repintado del control ( Para que la carga sea mas veloz )
.Redraw = False
' -- Seleccionar registros del Grid por Fila
.SelectionMode = flexSelectionByRow
.Rows = 2
' -- Modo de encabezados
.FixedRows = 1
.FixedCols = 0

' -- Cantidad de filas y columnas
.Rows = 1
.Cols = rproductos.Fields.Count

' -- Redimensionar el Array a la cantidad de campos de la tabla
ReDim Ancho_Columna(0 To rproductos.Fields.Count - 1)

' -- Recorrer los campos del recordset
For Columna = 0 To rproductos.Fields.Count - 1
' -- Añade el título del campo al encabezado de columna
.TextMatrix(0, Columna) = rproductos.Fields(Columna).Name
' -- Guardar el ancho del campo en la matriz
Ancho_Columna(Columna) = TextWidth(rproductos.Fields(Columna).Name)
Next Columna

Fila = 1
' -- Recorrer todos los registros del recordset
Do While Not rproductos.EOF
.Rows = .Rows + 1 ' Añade una nueva fila
For Columna = 0 To rproductos.Fields.Count - 1
' -- Combobar que el valor no es nulo
If Not IsNull(rproductos.Fields(Columna).Value) Then
' -- Agrega el registro en la fila y columna específica
.TextMatrix(Fila, Columna) = rproductos.Fields(Columna).Value
' -- Almacena el ancho
Ancho_Campo = TextWidth(rproductos.Fields(Columna).Value)
If Ancho_Columna(Columna) < Ancho_Campo Then
Ancho_Columna(Columna) = Ancho_Campo
End If
End If
Next
' -- Siguiente registro
rproductos.MoveNext
Fila = Fila + 1 'Incrementa la fila
Loop


For Columna = 0 To pdtlst.Cols - 1
.ColWidth(Columna) = Ancho_Columna(Columna) + 240
Next

' -- Volver a Habilitar el repintado del Grid
.Redraw = True

End With

ahora en el eveno change de mi text box tengo un codigo parecido a este con la siguiente diferencia

rproductos.Open "Select pdtid,pdtdesc,pdtstk,pdtcost,pdtvmen,pdtvmay,pdtstktmp,pdtdep0,pdtdep1,pdtdep2,pdtgrp,pdtsgrp,pdtsgrpa,pdtsgrpb,pdtmk,pdtpvd,pdtljt,pdtljtval,pdtljtcant,pdtmin,pdtmax,pdtlja,pdtdisc,pdtumed,pdtcat,pdtweb,pdterr from stkpdt where pdtdesc like '%" & Trim(Me.boxDesc.Text) & "%' and pdterr=false", conexion, adOpenKeyset, adLockOptimistic

que es para buscar e ir mostrando los resultado en el flex, el caso es que es muy lento y el flex esta sion formato de color ni titulos y cuando se los pongo tambien queda lento, como podria hacelerar el refresco del flex o bien mi consulta?
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