none
Archivos cargados en una grilla RRS feed

  • Pregunta

  • hola a todos tengo un archivo .txt

    el archivo me carga los datos a una grilla y lo hace bien
    este es el codigo

    Dim Listadatos(80) As Long
    Private Type tData
        s_Nombre_Producto               As Currency            ' -- Campo para el Nombre del producto
        cur_Precio_Producto             As Currency         ' -- Campo para el precio del producto
    End Type
    
    ' -- Declarar matriz de datos para almacenar los registros del archivo
    Private the_array()         As tData
    
    ' -----------------------------------------------------------------------------------------
    ' \\ Leer los registros del archivo y cargarlos en la matriz para poder ordenarlos
    ' -----------------------------------------------------------------------------------------
    Private Function Fill_Array(sFileName As String) As Boolean
    
        On Error GoTo error_handler
        
        Dim nFileNumber     As Integer
        Dim lIndex          As Long
        Dim sLine           As String
        Dim arrLine()       As String
        
        ' -- Buscar un número de archivo libre
        nFileNumber = FreeFile
        
        Open sFileName For Input As #nFileNumber
        
        ' -- Redimensionar el array que contendrá la lista de archivos a buscar en windows
        ReDim the_array(0)
        
        ' -- Cambiar puntero de espera del mouse
        Me.MousePointer = vbHourglass
        
        ' -- Buscar ...
        While Not EOF(nFileNumber)
            ' -- índice del último elemento de la matriz
            lIndex = UBound(the_array)
            
            Line Input #nFileNumber, sLine
            
            arrLine = Split(sLine, " ")
            
            ' -- Cargar los datos en array ( Tamaño y nombre)
            With the_array(lIndex)
                .cur_Precio_Producto = CCur(arrLine(0))
                .s_Nombre_Producto = arrLine(1)
            End With
            ' -- redimensionar la matriz para el próximo elemento
            ReDim Preserve the_array(lIndex + 1)
        Wend
        
        ' -- Cerrar el archivo
        Close #nFileNumber
        
        ' -- Si hay mas de un archivo, entonces eliminar el último ya que es un elemento vacío
        If UBound(the_array) > 0 Then
            ReDim Preserve the_array(UBound(the_array) - 1)
        End If
        Fill_Array = True
    
        ' -- Fin
        Me.MousePointer = vbDefault
        Exit Function
    error_handler:
        MsgBox Err.Description, vbCritical
        Me.MousePointer = vbDefault
        Close
    End Function
    
    
    
    Private Sub Form_Load()
    IniciarConexion
    
    Dim columna As Integer
    Dim Number As Integer
    Dim rn As Integer
    Dim j As Integer
    
    ' -- Cargar los registros del archivo en el array
        If Fill_Array("C:\texto.txt") Then
            ' -- Llamar a la función para ordenar con QuickSort
            
            ' -- Cargar los datos ordenados en el Grid ( Microsoft Flexgrid )
            Dim i As Variant
            
            With MSFlexGrid1
    
                For i = LBound(the_array) To UBound(the_array)
                 
                    For columna = 0 To 4
                     
                    ' -- Agregar producto y precio ordenados en forma ascendente
                    .AddItem _
                        CStr(the_array(i).s_Nombre_Producto)
                        MSFlexGrid1.TextMatrix(i, 0) = CStr(the_array(i).s_Nombre_Producto)
                        If CStr(the_array(i).cur_Precio_Producto) <= 15 Then
                        MSFlexGrid1.TextMatrix(i, 1) = CStr(the_array(i).cur_Precio_Producto)
                        ElseIf CStr(the_array(i).cur_Precio_Producto) <= 30 Then
                        MSFlexGrid1.TextMatrix(i, 2) = CStr(the_array(i).cur_Precio_Producto)
                        ElseIf CStr(the_array(i).cur_Precio_Producto) <= 45 Then
                        MSFlexGrid1.TextMatrix(i, 3) = CStr(the_array(i).cur_Precio_Producto)
                        ElseIf CStr(the_array(i).cur_Precio_Producto) <= 60 Then
                        MSFlexGrid1.TextMatrix(i, 4) = CStr(the_array(i).cur_Precio_Producto)
                        Else
                        MSFlexGrid1.TextMatrix(i, 5) = CStr(the_array(i).cur_Precio_Producto)
                        End If
                        
                   Next
                   Next
                'Next
            End With
           
        End If
    
    ' configuracion de la grilla
    With MSFlexGrid1
    For i = 0 To .Cols - 1
                .FixedAlignment(i) = 4
                .ColAlignment(i) = 4
            Next
    .ColWidth(0) = 10
    End With
    
    en la grilla los muestra en la primera columna 10 en la segunda 3 en la tercera columna 25 y asi con las demas columnas


    lo que quiero es que muestre 5 datos en las filas de las 6 columnas ya que me muetra todos los datos en la grilla
    el orden no interesa
    Matrix (5 X 6)
    de antemano gracias por su atencion prestada
    lunes, 24 de agosto de 2009 23:46