uso progressbar
Publicado por Alex (1 intervención) el 22/08/2008 17:26:46
Este es el codigo para cargar un MSFlexGrid desde una base, mi consulta es:
¿Como puedo insertarle un progressbar a este codigo??
Private Sub Cargar_FlexGrid(path_Base As String, _
Consulta_SQL As String, _
FlexGrid As MSFlexGrid)
On Error Resume Next
'Variables para la conexión y para el recordset ADO
Dim cn As ADODB.Connection, rst As ADODB.Recordset
'Variables para las filas y columnas del Flexgrid
Dim Columna As Integer, Fila As Integer
'Matriz y variable para los anchos de columna
Dim Ancho_Columna() As Single, Ancho_Campo As Single
' Abre una nueva conexión
Set cn = New ADODB.Connection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=rutabase;; " & _
"Jet OLEDB:Database Password =12345"
'Abre
cn.Open
' Llena el recordset con la consulta
Set rst = cn.Execute(Consulta_SQL, , adCmdText)
FlexGrid.Rows = 2
FlexGrid.FixedRows = 1
FlexGrid.FixedCols = 0
'Cantidad de filas y columnas
FlexGrid.Rows = 1
FlexGrid.Cols = rst.Fields.Count
'Redimensiona el Array a la cantidad de campos de la tabla
ReDim Ancho_Columna(0 To rst.Fields.Count - 1)
'Recorre los campos
For Columna = 0 To rst.Fields.Count - 1
'Añade el título del campo al encabezado de columna
FlexGrid.TextMatrix(0, Columna) = rst.Fields(Columna).Name
'Guarda el ancho del campo en la matriz
Ancho_Columna(Columna) = TextWidth(rst.Fields(Columna).Name)
Next Columna
Fila = 1
'Recorre todos los registros del recordset
Do While Not rst.EOF
FlexGrid.Rows = FlexGrid.Rows + 1 ' Añade una nueva fila
For Columna = 0 To rst.Fields.Count - 1
'Si el valor no es nulo
If Not IsNull(rst.Fields(Columna).Value) Then
'Agrega el registro en la fila y columna específica
FlexGrid.TextMatrix(Fila, Columna) = rst.Fields(Columna).Value
' Almacena el ancho
Ancho_Campo = TextWidth(rst.Fields(Columna).Value)
If Ancho_Columna(Columna) < Ancho_Campo Then
Ancho_Columna(Columna) = Ancho_Campo
End If
End If
Next
' Siguiente registro
rst.MoveNext
Fila = Fila + 1 'Incrementa la fila
Loop
' Cierra el recordset y la conexión abierta
rst.Close
cn.Close
' Establece los ancho de columna de la grilla
For Columna = 0 To FlexGrid.Cols - 1
FlexGrid.ColWidth(Columna) = Ancho_Columna(Columna) + 800
Next
Exit Sub
'Error
'errSub:
'MsgBox Err.Description, vbCritical
End Sub
¿Como puedo insertarle un progressbar a este codigo??
Private Sub Cargar_FlexGrid(path_Base As String, _
Consulta_SQL As String, _
FlexGrid As MSFlexGrid)
On Error Resume Next
'Variables para la conexión y para el recordset ADO
Dim cn As ADODB.Connection, rst As ADODB.Recordset
'Variables para las filas y columnas del Flexgrid
Dim Columna As Integer, Fila As Integer
'Matriz y variable para los anchos de columna
Dim Ancho_Columna() As Single, Ancho_Campo As Single
' Abre una nueva conexión
Set cn = New ADODB.Connection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=rutabase;; " & _
"Jet OLEDB:Database Password =12345"
'Abre
cn.Open
' Llena el recordset con la consulta
Set rst = cn.Execute(Consulta_SQL, , adCmdText)
FlexGrid.Rows = 2
FlexGrid.FixedRows = 1
FlexGrid.FixedCols = 0
'Cantidad de filas y columnas
FlexGrid.Rows = 1
FlexGrid.Cols = rst.Fields.Count
'Redimensiona el Array a la cantidad de campos de la tabla
ReDim Ancho_Columna(0 To rst.Fields.Count - 1)
'Recorre los campos
For Columna = 0 To rst.Fields.Count - 1
'Añade el título del campo al encabezado de columna
FlexGrid.TextMatrix(0, Columna) = rst.Fields(Columna).Name
'Guarda el ancho del campo en la matriz
Ancho_Columna(Columna) = TextWidth(rst.Fields(Columna).Name)
Next Columna
Fila = 1
'Recorre todos los registros del recordset
Do While Not rst.EOF
FlexGrid.Rows = FlexGrid.Rows + 1 ' Añade una nueva fila
For Columna = 0 To rst.Fields.Count - 1
'Si el valor no es nulo
If Not IsNull(rst.Fields(Columna).Value) Then
'Agrega el registro en la fila y columna específica
FlexGrid.TextMatrix(Fila, Columna) = rst.Fields(Columna).Value
' Almacena el ancho
Ancho_Campo = TextWidth(rst.Fields(Columna).Value)
If Ancho_Columna(Columna) < Ancho_Campo Then
Ancho_Columna(Columna) = Ancho_Campo
End If
End If
Next
' Siguiente registro
rst.MoveNext
Fila = Fila + 1 'Incrementa la fila
Loop
' Cierra el recordset y la conexión abierta
rst.Close
cn.Close
' Establece los ancho de columna de la grilla
For Columna = 0 To FlexGrid.Cols - 1
FlexGrid.ColWidth(Columna) = Ancho_Columna(Columna) + 800
Next
Exit Sub
'Error
'errSub:
'MsgBox Err.Description, vbCritical
End Sub
Valora esta pregunta


0