SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: Metodos Numericos en Jueves 27 de Agosto de 2009, 04:30
-
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
-
a que te refieres con 5 datos?
Puedes poner un ejemplo?
Saludos
-
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