Page 1

Elaborado por Fernando Gomez Ajxolo

MANUAL MSFLEX GRID

APRENDA A UTILIZAR UN MSFLEX GRID EN VISUAL BASIC 6.0

PASOS IMPORTANTES PARA PODER EDITAR UN MSFLEX GRID EN UN FORMULARIO DE VISUAL BASIC 6.0

ELABORADO POR:

FERNANDO GÓMEZ AJXOLÓ PERITO CONTADOR CON ESPECIALIDAD EN COMPUTACIÓN

Aprenda a utilizar un MsFlex Grid en Visual Basic 6.0

20


Elaborado por Fernando Gomez Ajxolo

COMO APRENDER A UTILIZAR MSFLEX GRID EN VISUAL BASIC 6.0

Para poder editar una MsFlex Grid usted puede tomar este ejemplo que es de mucha importancia para su manejo:

Option Explicit

' variables y constantes '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' para la conexi贸n ado Private cn As ADODB.Connection ' recordset principal Private rs As ADODB.Recordset ' recordset desconectado Private rs2 As ADODB.Recordset ' cantidad de registros por p谩gina Const PAGE_SIZE = 50 Dim Registro As Integer ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Private Sub Form_Load() Dim sql As String Dim cadena As String Set cn = New ADODB.Connection 'ConnectionString cadena = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ "C:\Archivos de programa\Microsoft " & _ "Visual Studio\VB98\biblio.MDB" cn.ConnectionString = cadena Aprenda a utilizar un MsFlex Grid en Visual Basic 6.0

20


Elaborado por Fernando Gomez Ajxolo ' Abre la base de datos cn.Open ' Crea dos recordset Set rs = New ADODB.Recordset ' El recordset desconectado que se asigna a la función que lo pagina Set rs2 = New ADODB.Recordset ' cadena sql para la tabla Authors dela base de datos biblio.mdb _ del directorio de vsual basic sql = "SELECT * FROM Authors Order By Au_Id" 'Propiedades del recordset With rs .CursorLocation = adUseClient .PageSize = PAGE_SIZE .Properties("Initial Fetch Size") = PAGE_SIZE ' Abre .Open sql, cn, adOpenKeyset, , adAsyncFetchNonBlocking 'asigna el recordset devuelto por la función al dataGrid Set DataGrid1.DataSource = Paginar_Recordset(rs) End With ' Número de registro actual ( en este caso 50 por página ) Registro = PAGE_SIZE Command1(0).Caption = " |<< " Command1(1).Caption = " < " Command1(2).Caption = " > " Command1(3).Caption = " >>| "

End Sub

'Botones para navegar por las páginas Private Sub Command1_Click(Index As Integer) Dim Pagina_Actual As Long With rs Select Case Index ' Primera página del recordset Case 0 Pagina_Actual = 1 Registro = PAGE_SIZE ' Anterior página del recordset Case 1 Pagina_Actual = .AbsolutePage - 1 Registro = Registro - PAGE_SIZE If Registro < PAGE_SIZE Then Registro = PAGE_SIZE End If ' Siguiente página Case 2 Pagina_Actual = .AbsolutePage + 1 Aprenda a utilizar un MsFlex Grid en Visual Basic 6.0

20


Elaborado por Fernando Gomez Ajxolo Registro = Registro + PAGE_SIZE If Registro > rs.RecordCount Then Registro = rs.RecordCount End If ' Ultima Case 3 Pagina_Actual = .PageCount Registro = rs.RecordCount End Select ' Si estamos en la primera o última pagina sale If Pagina_Actual < 1 Or Pagina_Actual > .PageCount Then Exit Sub End If ' Establece la Página actual al rec .AbsolutePage = Pagina_Actual ' Asigna el recordset paginado al control Datagrid Set DataGrid1.DataSource = Paginar_Recordset(rs) ' visualiza en el caption la página actual y los registros Me.Caption = Me.Caption & " - Registro actual: " & Registro & _ " de " & rs.RecordCount & " registros ." End With End Sub

'función que retorna el recordset ya paginado '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Private Function Paginar_Recordset(recset As ADODB.Recordset) As ADODB.Recordset Dim Fila As Long Dim Campo As Field Dim P As Long P = IIf(recset.AbsolutePage > 0, recset.AbsolutePage, 1) 'Recordset desconectado With rs2 ' Si el recordset está abierto entonces lo cierra If .State = adStateOpen Then .Close End If ' Define y Crea los campos al recordset con Append For Each Campo In recset.Fields .Fields.Append Campo.Name, Campo.Type, _ Campo.DefinedSize, Campo.Attributes Next Campo ' Lo Abre para agregarle los registros rs2.Open For Fila = 1 To PAGE_SIZE ' si está en el final sale If recset.EOF Then Aprenda a utilizar un MsFlex Grid en Visual Basic 6.0

20


Elaborado por Fernando Gomez Ajxolo Exit For End If ' va añadiendo los registros .AddNew ' Recorre los campos For Each Campo In recset.Fields ' Asigna el nombre del campo rs2(Campo.Name) = Campo.Value Next Campo 'Actualiza el recordset desconectado y el otro recordset .Update ' mueve al siguiente registro recset.MoveNext Next Fila ' Mueve al primer registro .MoveFirst ' Establece la página actual recset.AbsolutePage = P End With ' devuelve a la función el conjunto de datos, es decir el recordset paginado Set Paginar_Recordset = rs2 ' Muestra la página actual en el caption del formulario Me.Caption = " Página: " & CStr(rs.AbsolutePage) & _ " de " & CStr(rs.PageCount) End Function ' redimensiona y posiciona el datagrid y los cuatro commandbutton '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Private Sub Form_Resize() Dim i As Integer Dim tTop As Single On Local Error Resume Next ' posiciona y redimensiona el datagrid DataGrid1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight - 350 ' posiciona y redimensiona los commandbutton tTop = DataGrid1.Top + DataGrid1.Height Command1(0).Move 0, tTop, 600, 350 For i = 1 To 3 Command1(i).Move Command1(i - 1).Left + Command1(i - 1).Width, _ tTop, 600, 350 Next End Sub 'Descarga los recordset, la conexión ado y los cierra ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Private Sub Form_Unload(Cancel As Integer) Set DataGrid1.DataSource = Nothing If Not rs2 Is Nothing Then Aprenda a utilizar un MsFlex Grid en Visual Basic 6.0

20


Elaborado por Fernando Gomez Ajxolo If Not rs2.State = adStateClosed Then rs2.Close End If Set rs2 = Nothing End If If Not rs Is Nothing Then If Not rs.State = adStateClosed Then rs.Close End If Set rs = Nothing End If If Not cn Is Nothing Then If Not cn.State = adStateClosed Then cn.Close End If Set cn = Nothing End If End Sub Option Explicit

' Variable para la conexi贸n ado Private cn As ADODB.Connection ' Para el recordset principal Private rs As ADODB.Recordset ' Para el recordset desconectado Private rs2 As ADODB.Recordset ' Indica la cantidad de registros por p谩gina Const PAGE_SIZE = 50 Dim reg As Integer Private Sub Form_Load() Dim sql As String Dim cadena As String Set cn = New ADODB.Connection 'Cadena de conexi贸n cadena = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ "C:\Archivos de programa\Microsoft " & _ "Visual Studio\VB98\biblio.MDB" cn.ConnectionString = cadena ' Abre la base de datos cn.Open 'Crea dos recordset Set rs = New ADODB.Recordset ' El recordset desconectado Set rs2 = New ADODB.Recordset sql = "SELECT * FROM Authors Order By Au_Id" 'Propiedades del recordset Aprenda a utilizar un MsFlex Grid en Visual Basic 6.0

20


Elaborado por Fernando Gomez Ajxolo With rs .CursorLocation = adUseClient .PageSize = PAGE_SIZE .Properties("Initial Fetch Size") = PAGE_SIZE 'Llena el recordset .Open sql, cn, adOpenKeyset, , adAsyncFetchNonBlocking 'Carga el Hierarchical FlexGrid con el recordset devuelto por la función Set MSHFlexGrid1.DataSource = Paginar_Recordset(rs) End With ' Número de registro actual reg = PAGE_SIZE Command1(0).Caption = " |<< " Command1(1).Caption = " < " Command1(2).Caption = " > " Command1(3).Caption = " >>| "

End Sub

'Botones para navegar por las páginas Private Sub Command1_Click(Index As Integer) Dim Pagina_Actual As Long With rs Select Case Index ' Primera página del recordset Case 0 Pagina_Actual = 1 reg = PAGE_SIZE ' Anterior página del recordset Case 1 Pagina_Actual = .AbsolutePage - 1 reg = reg - PAGE_SIZE If reg < PAGE_SIZE Then reg = PAGE_SIZE End If ' Siguiente página del recordset Case 2 Pagina_Actual = .AbsolutePage + 1 reg = reg + PAGE_SIZE If reg > rs.RecordCount Then reg = rs.RecordCount End If ' Ultima Case 3 Pagina_Actual = .PageCount reg = rs.RecordCount End Select ' Si estamos en la primera o última pagina sale If Pagina_Actual < 1 Or Pagina_Actual > .PageCount Then Exit Sub End If Aprenda a utilizar un MsFlex Grid en Visual Basic 6.0

20


Elaborado por Fernando Gomez Ajxolo ' Establece la Página actual .AbsolutePage = Pagina_Actual ' Asigna el recordset paginado al Hierarchical Flexgrid Set MSHFlexGrid1.DataSource = Paginar_Recordset(rs) Me.Caption = Me.Caption & " - Registro actual: " & reg & _ " de " & rs.RecordCount & " registros ." End With End Sub

'función que retorna el recordset paginado Private Function Paginar_Recordset(recset As ADODB.Recordset) As ADODB.Recordset Dim Row As Long Dim Campo As Field Dim P As Long P = IIf(recset.AbsolutePage > 0, recset.AbsolutePage, 1) 'Recordset desconectado With rs2 ' Si el recordset estuviese abierto lo cierra If .State = adStateOpen Then .Close 'añade los campos al recordset For Each Campo In recset.Fields .Fields.Append Campo.Name, Campo.Type, _ Campo.DefinedSize, Campo.Attributes Next Campo ' Lo Abre .Open For Row = 1 To PAGE_SIZE If recset.EOF Then Exit For ' va añadiendo los datos .AddNew For Each Campo In recset.Fields rs2(Campo.Name) = Campo.Value Next Campo 'Actualiza el recordset desconectado _ y el otro recordset se mueve al siguiente registro .Update recset.MoveNext Next Row ' Volvemos al primer registro .MoveFirst 'Indicamos la página actual recset.AbsolutePage = P End With ' devuelve a la función el conjunto de datos Set Paginar_Recordset = rs2 Aprenda a utilizar un MsFlex Grid en Visual Basic 6.0

20


Elaborado por Fernando Gomez Ajxolo ' Muestra la pรกgina actual Me.Caption = " Pรกgina: " & CStr(rs.AbsolutePage) & " de " & CStr(rs.PageCount) End Function ' redimensiona y posiciona los controles Private Sub Form_Resize() Dim i As Integer, tTop As Single On Local Error Resume Next MSHFlexGrid1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight - 350 tTop = MSHFlexGrid1.Top + MSHFlexGrid1.Height Command1(0).Move 0, tTop, 600, 350 For i = 1 To 3 Command1(i).Move Command1(i - 1).Left + Command1(i - 1).Width, _ tTop, 600, 350 Next End Sub 'Descarga los recordset, la conexiรณn ado y los cierra Private Sub Form_Unload(Cancel As Integer) If Not rs2.State = adStateClosed Then rs2.Close End If If Not rs2 Is Nothing Then Set rs2 = Nothing End If If Not rs.State = adStateClosed Then rs.Close End If If Not rs Is Nothing Then Set rs = Nothing End If If Not cn.State = adStateClosed Then cn.Close End If If Not cn Is Nothing Then Set cn = Nothing End If End Sub

PASOS PARA PAGINAR UN FLEX GRID

Aprenda a utilizar un MsFlex Grid en Visual Basic 6.0

20


Elaborado por Fernando Gomez Ajxolo

20

Popiedad Connection = Aqui se debe especificar la conexión ADODB que se va a utilizar Popiedad MSFlexGrid = Aqui se debe especificar el control MsFlexgrid a utilizar para los datos Propiedad Registros_Por_Pagina: en esta propiedad se indica los registros que contendrá cada página de resultados Propiedad sql: La Consulta Sql a utilizar Método FirstPage: permite navegar a la primer página Método PreviousPage: permite navegar a la página anterior Método NextPagePage: permite navegar a la siguiente página. Método LastPage: permite navegar a la última página Método Refresh: Permite refrescar los datos en el FlexGrid cuando se hacen cambios en la base de datos para volver a cargar los registros actualizados Método GoToPage: Método que navega al número de página indicado Evento MoveComplet: cada ves que se desplaza por las páginas, se dispara este evento con el cual se puede recuperar el: Número de página actual, el total de páginas que hay y la cantidad de registros del recordset, por ejemplo para visualizarlo en un control Label como se ve en el gráfico anterior.

Para usar el módulo es muy simple: Primero hay que crear una instancia del mismo:

'Nueva instancia Set obj = New Class1

de

Aprenda a utilizar un MsFlex Grid en Visual Basic 6.0

la

clase


Elaborado por Fernando Gomez Ajxolo

20

Luego especificar la Conexión ADO, la cadena Sql, el control Flexgrid y la cantidad de registros a mostrar por cada página:

'Establece la conexión ADODB Set .Connection = cnn

' Consulta SQL .sql = "Select * FROM [Detalles de pedidos]" 'Cantidad de registros a mostrar por cada página .Registros_Por_Pagina = 100

'Especifica el Flexgrid a usar .MSFlexGrid = MSFlexGrid1

... Luego de especificar lo anterior ya se pueden cargar los datos en la grilla, por ejemplo llendo a la primer página con el método GoToPage y pasarle el número de la misma, en este caso 1

'Va a la página 1, y carga los datos en FlexGrid de dicha página Call obj.GoToPage(1)

Desplazarse por los registros

Para moverse por las páginas, hay que usar los métodos FirstPage, PreviousPage, NextPage y LastPage Por ejemplo para ir a la última página al presionar un botón:

obj.FirstPage

Para ir a la Siguiente:

obj.NexPage

Anterior página

obj.PreviousPage

Para ir a la última:

obj.LastPage

Para ir a la página 15

obj.GoToPage 15

Aprenda a utilizar un MsFlex Grid en Visual Basic 6.0


Elaborado por Fernando Gomez Ajxolo

20

Para volver a cargar los datos en el Flexgrid, por ejemplo cuando se actualizan o modifican registros de la base de datos y poder volver a cargar la grilla, usar el método Refresh

obj.Refresh

Pasos para crear un formulario de ejemplo:

Agregar un módulo de clase llamado Class1 Colocar en el proyecto la referencia a ADO ( Microsoft Activex Data Objects ) Agregar un control Microsoft FlexGrid o un Hierarchical Flexgrid Un CommandButton llamado cmd_Reg ( este es para indicar o cambiar la cantidad de registros a mostrar por página ) Un commandButton llamado Cmd_Refresh Un

Arreglo

de

control

Commandbutton

para

la

botonera

de

navegación

llamado:

Cmd_Nav_Registros(0), Cmd_Nav_Registros(1), Cmd_Nav_Registros(2) y Cmd_Nav_Registros(3) Por último un control Label llamado Label1 para ver el número de la página actual en la que estamos ubicados.

Primero se lista el código del módulo y al final el código para agregar en el formulario

Código en el Módulo Class1:

Option Explicit Option Explicit 'Propiedades Public PaginaActual As Long Public Total_Paginas As Long Public Registros_Por_Pagina As Long Public sql As String 'Enum para la navegación y para refrescar los datos Enum E_Navegacion PRIMER_PAGINA = 0 ANTERIOR = 1 SIGUIENTE = 2 ULTIMA_PAGINA = 3 REFRESCAR = 4 End Enum

'Variables locales Private m_MSFlexGrid As Object Aprenda a utilizar un MsFlex Grid en Visual Basic 6.0


Elaborado por Fernando Gomez Ajxolo Private m_Accion As E_Navegacion Private m_Connection As ADODB.Connection 'Evento que muestra el total de registros, la página actual _ y el total de paginas del recordset ( por ejemplo en un control Label ) Public Event MoveComplet(ByVal PaginaActual As Long, _ ByVal TotalPaginas As Long, _ ByVal Total_Registros As Long)

'Sub que llena el flexgrid ( recibe como parámetro la conexión ADO) '*************************************************************************** Private Sub Cargar_FlexGrid() On Error GoTo ErrSub Dim rst As New ADODB.Recordset Dim Registros As Long Dim Columna As Integer

' Muestra un mensaje de Error por si no hay un Ms Flexgrid asignado If m_MSFlexGrid Is Nothing Then MsgBox "No se especificó ningún contol " & _ "Ms FlexGrid para mostrar los datos. ", vbCritical Exit Sub End If ' Muestra un mensaje de Error por si no hay una conexión ADO establecida If m_Connection Is Nothing Then MsgBox "No se especificó ninguna conexión ADODB. " & _ " Especificar una. ", vbCritical Exit Sub End If 'Verifica que se especificó el comando sQL If sql = vbNullString Then ' Si no se especificó , Muestra el error y sale MsgBox "No se especificó ninguna consulta SQL", vbCritical Exit Sub End If

If PaginaActual = 0 Then PaginaActual = 1 End If Total_Paginas = PaginaActual 'Limpia el Flexgrid m_MSFlexGrid.Clear ' Acá le indica al recordset la cantidad de _ registros que tendrá cada página rst.PageSize = Registros_Por_Pagina ' Llena el Recordset Call rst.Open(sql, m_Connection, adOpenKeyset) Aprenda a utilizar un MsFlex Grid en Visual Basic 6.0

20


Elaborado por Fernando Gomez Ajxolo ' Para que no de error If Total_Paginas <= rst.PageCount Then rst.AbsolutePage = Total_Paginas End If 'Asigna el toal de páginas a la variable Total_Paginas = rst.PageCount m_MSFlexGrid.Rows = 1 m_MSFlexGrid.Cols = rst.Fields.Count 'Recorre las columnas del flexgrid para crear los encabezados For Columna = 0 To rst.Fields.Count - 1 If Not IsNull(rst.Fields(Columna).Name) Then m_MSFlexGrid.TextMatrix(0, Columna) = rst.Fields(Columna).Name End If Next 'Recorre el Recordset para añadir los registros Do While Not rst.EOF Registros = Registros + 1 m_MSFlexGrid.Rows = m_MSFlexGrid.Rows + 1 For Columna = 0 To rst.Fields.Count - 1 If Not IsNull(rst.Fields(Columna).Value) Then m_MSFlexGrid.TextMatrix(Registros, Columna) = _ rst.Fields(Columna).Value End If Next 'Siguiente registro rst.MoveNext 'Si llegó al límite de registros de la ágina, sale del DO While If (Registros >= Registros_Por_Pagina) Or (rst.EOF) Then Exit Do End If Loop ' Ejecuta el evento con los datos de información RaiseEvent MoveComplet(PaginaActual, Total_Paginas, rst.RecordCount) 'Cierra y descarga On Error Resume Next rst.Close Set rst = Nothing On Error GoTo 0 Exit Sub 'Error ErrSub: MsgBox "Número de error: " & Err.Number & vbNewLine & _ " Descripción del error: " & Err.Description, vbCritical End Sub

Aprenda a utilizar un MsFlex Grid en Visual Basic 6.0

20


Elaborado por Fernando Gomez Ajxolo '******************************************** ' Sub y funciones '******************************************** 'Navega a la primer página del recordset Sub FirstPage() m_Accion = PRIMER_PAGINA Call Calcular_Pagina Call Cargar_FlexGrid End Sub 'Navega a la Anterior página del recordset Sub PreviousPage() m_Accion = ANTERIOR Call Calcular_Pagina Call Cargar_FlexGrid End Sub 'Siguiente página del recordset Sub NexPage() m_Accion = SIGUIENTE Call Calcular_Pagina Call Cargar_FlexGrid End Sub ' Va a la última página del recordset Sub LastPage() m_Accion = ULTIMA_PAGINA Call Calcular_Pagina Call Cargar_FlexGrid End Sub 'Refresca la grilla Sub Refresh() m_Accion = REFRESCAR Call Calcular_Pagina Call Cargar_FlexGrid End Sub ' Navega al número de página indicado Sub GoToPage(Pagina As Long) PaginaActual = Pagina Call Cargar_FlexGrid End Sub Private Sub Calcular_Pagina() ' Verifica la opción de navegación que se eligíó, para _ establecer el valor de la variable --> PaginaActual Select Case m_Accion Case PRIMER_PAGINA Aprenda a utilizar un MsFlex Grid en Visual Basic 6.0

20


Elaborado por Fernando Gomez Ajxolo PaginaActual = 1 Case ANTERIOR If PaginaActual > 1 Then PaginaActual = PaginaActual - 1 Case SIGUIENTE If PaginaActual < Total_Paginas Then PaginaActual = PaginaActual + 1 Case ULTIMA_PAGINA PaginaActual = Total_Paginas End Select End Sub

'******************************************** 'Propiedades '******************************************** ' Propiedad para indicar la Conexi贸n ADO Public Property Get Connection() As ADODB.Connection Connection = m_Connection End Property Public Property Set Connection(Conexion_ADODB As ADODB.Connection) Set m_Connection = Conexion_ADODB End Property 'Propiedad para indicar el Flexgrid Public Property Get MSFlexGrid() As Object Set MSFlexGrid = m_MSFlexGrid End Property Public Property Set MSFlexGrid(v_MSFlexGrid As Object) Set m_MSFlexGrid = v_MSFlexGrid End Property Public Property Let MSFlexGrid(v_MSFlexGrid As Object) Set m_MSFlexGrid = v_MSFlexGrid End Property ' Unload del m贸dulo Private Sub Class_Terminate() If Not m_MSFlexGrid Is Nothing Then Set m_MSFlexGrid = Nothing End If If Not m_Connection Is Nothing Then Set m_Connection = Nothing On Error Resume Next m_Connection.Close End If End Sub '*************************************************************************** '* Agregar la referencia a Microsoft ADO '***************************************************************************

Dim WithEvents obj As Class1 'Variable para la conexi贸n ADODB Dim cnn As ADODB.Connection Aprenda a utilizar un MsFlex Grid en Visual Basic 6.0

20


Elaborado por Fernando Gomez Ajxolo '*************************************************************************** ' Botones para navegar por las páginas del recordset '*************************************************************************** Private Sub Cmd_Nav_Registros_Click(Index As Integer) Select Case Index 'Navega a la primer página Case 0: obj.FirstPage 'Navega a la anterior Case 1: obj.PreviousPage 'Navega a la siguiente página Case 2: obj.NexPage 'Navega a la última Case 3: obj.LastPage End Select End Sub ' Load '*************************************************************************** Private Sub Form_Load() 'Nueva instancia de la clase Set obj = New Class1 'Nueva conexión ADO Set cnn = New ADODB.Connection 'Propiedades de la conexión cnn.CursorLocation = adUseClient cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _ & "C:\Archivos de programa\Microsoft " & _ "Visual Studio\VB98\NWIND.MDB" With obj 'Establece la conexión Set .Connection = cnn ' Consulta SQL .sql = "Select * FROM [Detalles de pedidos]" 'Cantidad de registros a mostrar por cada página .Registros_Por_Pagina = 100 'Especifica el Flexgrid a usar .MSFlexGrid = MSFlexGrid1 'Va a la página 1, y carga los datos en _ FlexGrid de dicha página Call obj.GoToPage(1) ' Caption de los commandbutton para navegación y otros Cmd_Nav_Registros(0).Caption = "|<<" Cmd_Nav_Registros(1).Caption = " <<" Cmd_Nav_Registros(2).Caption = " >>" Cmd_Nav_Registros(3).Caption = ">>|" cmd_Reg.Caption = " Número de registros por página: " & _ obj.Registros_Por_Pagina Cmd_Refresh.Caption = " Refresh " End With Aprenda a utilizar un MsFlex Grid en Visual Basic 6.0

20


Elaborado por Fernando Gomez Ajxolo End Sub

' Botón que Permite especificar la cantidad de _ registros que se van a visualizar por página '*************************************************************************** Private Sub cmd_Reg_Click() Dim N_registros As Variant N_registros = InputBox(" Escriba el número de registros a mostrar por página.") If IsNumeric(N_registros) Then ' Asigna la nueva cantidad de registros a ver por cada página obj.Registros_Por_Pagina = N_registros cmd_Reg.Caption = " Número de registros por página: " & _ obj.Registros_Por_Pagina ' Posiciona el Recordset en la primer página y carga los datos en el FlexGrid Call obj.FirstPage End If End Sub

' Botón que refresca los datos del Flexgrid '*************************************************************************** Private Sub Cmd_Refresh_Click() Call obj.Refresh End Sub

'Evento que muestra la página actual del recordset y el total de páginas '*************************************************************************** Private Sub obj_MoveComplet(ByVal PaginaActual As Long, _ ByVal TotalPaginas As Long, _ ByVal Total_Registros As Long) Label1.Caption = "Página " & PaginaActual & " de " & TotalPaginas & vbNewLine & _ "Total de registros: " & Total_Registros End Sub

'Descarga y finalización '*************************************************************************** Private Sub Form_Unload(Cancel As Integer) If Not obj Is Nothing Then Set obj = Nothing End If If Not cnn Is Nothing Then On Error Resume Next cnn.Close Set cnn = Nothing End If End Sub Aprenda a utilizar un MsFlex Grid en Visual Basic 6.0

20


Elaborado por Fernando Gomez Ajxolo

20

PASOS PARA QUE PUEDA GUARDAR UN FLEXGRID EN UN ARCHIVO DE TEXTO

Option Explicit Private Sub Command1_Click() Dim ret As Boolean ' Le envia el control MsFlexgrid, el path del archivo _ txt y el delimitador ret = Exportar_FlexGrid_txt(MSFlexGrid1, "prueba.txt", vbTab) If ret Then MsgBox "Flexgrid exportardo a txt ", vbInformation End If End Sub ' Funci贸n que genera el txt con los datos de la grilla ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Public Function Exportar_FlexGrid_txt(FlexGrid As Object, _ Path_Txt As String, _ Delimitador As Variant) As Boolean On Error GoTo Err_Funcion Dim Fila As Integer Dim Columna As Integer Dim Free_File As Integer ' N煤mero de archivo libre para crear el archivo de texto Free_File = FreeFile ' Abre y crea el archivo Open Path_Txt For Output As #Free_File ' Recorre las filas del Flexgrid Aprenda a utilizar un MsFlex Grid en Visual Basic 6.0


Elaborado por Fernando Gomez Ajxolo

For Fila = 0 To _ FlexGrid.Rows - 1 FlexGrid.Row = Fila ' Recorre las columnas For Columna = 0 To _ FlexGrid.Cols - 1 FlexGrid.Col = Columna ' escribe el Delimitador If Columna > 0 Then Print #Free_File, Delimitador; End If ' Escribe el dato Print #Free_File, vbNullString & FlexGrid.Text & vbNullString; Next Print #Free_File, "" Next Close Exportar_FlexGrid_txt = True ' Fin Exit Function ' error Err_Funcion: Close #Free_File MsgBox Err.Description, vbCritical End Function Private Sub Form_Load() Dim dato As String Dim Fila As Integer ' carga algunos datos al flexgrid MSFlexGrid1.Cols = 3 For Fila = 1 To 12 dato = CStr(Fila) & Chr(9) & MonthName(Fila) ' a単ade el dato MSFlexGrid1.AddItem dato Next Command1.Caption = " Guardar Flexgrid en txt" Me.Caption = " Guardar Flexgrid en un archivo de texto " End Sub Editar un flexGrid

Aprenda a utilizar un MsFlex Grid en Visual Basic 6.0

20


Elaborado por Fernando Gomez Ajxolo

Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer) If KeyAscii >= 32 And KeyAscii <= 127 Then MSFlexGrid1.Text = MSFlexGrid1.Text & Chr(KeyAscii) End If End Sub

Private Sub MSFlexGrid1_KeyUp(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbKeyDelete MSFlexGrid1.Text = "" Case vbKeyBack If Len(MSFlexGrid1.Text) > 0 Then MSFlexGrid1.Text = Left(MSFlexGrid1.Text, Len(MSFlexGrid1.Text) - 1) End If End Select End Sub

Aprenda a utilizar un MsFlex Grid en Visual Basic 6.0

20


Elaborado por Fernando Gomez Ajxolo

ESPERO HABERTE SERVIDO ESTE MANUAL

GRACIAS POR UTILIZAR ESTE MANUAL

ATT.

FERNANDO GÓMEZ AJXOLÓ

Aprenda a utilizar un MsFlex Grid en Visual Basic 6.0

20

Manual visual  

contiene codigos de flex Grid

Read more
Read more
Similar to
Popular now
Just for you