• Lunes 23 de Diciembre de 2024, 12:02

Autor Tema:  datos en la grilla  (Leído 1453 veces)

Metodos Numericos

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
datos en la grilla
« en: Jueves 27 de Agosto de 2009, 04:30 »
0
hola a todos

tengo un archivo .txt lo cargo en una grilla y funciona bien
este es el codigo


Dim Listadatos(90) 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


Me.MousePointer = vbDefault
Exit Function
error_handler:
MsgBox Err.Description, vbCritical
Me.MousePointer = vbDefault
Close
End Function




Private Sub Form_Load()

' -- Cargar los registros del archivo en el array
If Fill_Array("C:texto.txt") Then

' -- 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 Columna 1
With MSFlexGrid1
For i = 0 To .Cols - 1
.FixedAlignment(i) = 4
.ColAlignment(i) = 4
Next
.ColWidth(0) = 10
End With
End Sub





mi pregunta es como puedo solo colocarle 5 datos en cada columna, pero que los datos sean del archivo, ya que no he podido como hacerlo

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: datos en la grilla
« Respuesta #1 en: Viernes 28 de Agosto de 2009, 12:45 »
0
a que te refieres con 5 datos?

Puedes poner un ejemplo?


Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

Metodos Numericos

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Re: datos en la grilla
« Respuesta #2 en: Sábado 29 de Agosto de 2009, 01:12 »
0
claro que si el ejemplo es:

yo lo tengo asi

col1  col 2  col 3  col 4  col 5 col 6

1       15
2       14  
3                25
4                                          60
5       1
6       8
7       9
8                18
10              19
11              21
12                       34
13                                46
14                                47
15                       35
16                                           72
17     11
18                                  52
19                                  54
.
.
.
75                                          75

tengo  75 numeros regados por toda la grilla y en el codigo anterior funciona asi y este es el codigo y los datos estan colocados en estan colocados en todas las columnas pero la columna 1 esta los datos del 1 hasta el 75, mientras que la columna 2 estan numeros del 1 has 15 la columna 3 del 16 hasta 30
la columna 4 del 31 hasta el 45 la columna 5 del 46 hasta el  60 y columna 6 del 60 hasta el 75

[list type=]

Dim Listadatos(90) 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


Me.MousePointer = vbDefault
Exit Function
error_handler]


y ahora quiero que solo muestre 5 de cada columnas del 2 hasta el 6, mo importa si son 5 primeros y que esten regados
solo quiero 5 datos de la columnas 2 hasta el 6 y qye la columna 1 no cambie

Asi

Col 1  Col 2  Col 3  Col 4  Col 5  Col 6
1         5
2         14
3         15
4         7
5         2
6                 19
7                 18
8                 23
9                 27
10               30
11                          32  
12                          41
13                          39
14                          35
15                          43
16                                   47
17                                   51
18                                   48
19                                   57
20                                   59
21                                             61  
22                                             71
23                                             67
24                                             72
25                                             75


claro el orden puede variar pero que los datos me tragan del archivo y solo quiero que me tragan en la columan 1   solo   25 datos y en las demas columnas muestren 5 datos

agradesco sus valiosas respuestas