• Viernes 8 de Noviembre de 2024, 11:44

Autor Tema:  Cargar grilla con archivo  (Leído 989 veces)

Metodos Numericos

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Cargar grilla con archivo
« en: Martes 25 de Agosto de 2009, 02:02 »
0
hola a todos tengo un archivo .txt

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



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


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


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