Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Problema co la carga de fichero en ListView

Estas en el tema de Problema co la carga de fichero en ListView en el foro de Visual Basic clásico en Foros del Web. Hola. Estoy desesperado con un problema al tratar de cargar un figchero de texto separado por ";". El txt es del tipo: ;1111;12.2.2009;3.33;0000001;15,00-;Z02;... ;222;12.2.2009;4.33;0000001;100,00;Z02;... ;1111;12.2.2009;3.56;0000020;3,00-;Z02;... ...
  #1 (permalink)  
Antiguo 06/10/2009, 09:24
rgg
 
Fecha de Ingreso: junio-2007
Mensajes: 14
Antigüedad: 16 años, 11 meses
Puntos: 0
Problema co la carga de fichero en ListView

Hola. Estoy desesperado con un problema al tratar de cargar un figchero de texto separado por ";".

El txt es del tipo:

;1111;12.2.2009;3.33;0000001;15,00-;Z02;...
;222;12.2.2009;4.33;0000001;100,00;Z02;...
;1111;12.2.2009;3.56;0000020;3,00-;Z02;...

Es decir contiene puntos comas, guines... y no va entre comillas"", que sería lo ideal. En total el listview debería tener 16 columnas.


Código:
Dim itm As ListItem

Dim c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16 As String

    Open App.Path & "\test.txt" For Input As #1
    
    Do Until EOF(1)
            Input #1, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16
            
            Set itm = lv.ListItems.Add(, , c1)
                       
            itm.SubItems(1) = c2
            itm.SubItems(2) = c3
            itm.SubItems(3) = c4
            itm.SubItems(4) = c5
            itm.SubItems(5) = c6
            itm.SubItems(6) = c7
            itm.SubItems(7) = c8
            itm.SubItems(8) = c9
            itm.SubItems(9) = c10
            itm.SubItems(10) = c11
            itm.SubItems(11) = c12
            itm.SubItems(12) = c13
            itm.SubItems(13) = c14
            itm.SubItems(14) = c15
            itm.SubItems(15) = c16
              
    Loop
    Close #1
Aqui podis ver dos ficheros:
Desde aquí podeis ver la imagen de mi listview: 3w.taurofoto.net/test_lv.jpg
Fichero txt: 3w.taurofoto.net/test.txt


Muchas gracias por vuestra ayuda!!!
saludos
  #2 (permalink)  
Antiguo 06/10/2009, 13:43
 
Fecha de Ingreso: enero-2007
Ubicación: 9 de julio
Mensajes: 111
Antigüedad: 17 años, 4 meses
Puntos: 2
Respuesta: Problema co la carga de fichero en ListView

Hola, o te desesperes
Aca te paso el codigo que deberias usar. Lo probe y funciona
Si necesitas los archivos, pasa tu mail y te los envio (no puedo subir archivos)

Código:
Private Sub Command1_Click()
Dim itm As ListItem, Data As String, Aux As Variant
    'Abrimos el archivo
    Open "C:\prueba.txt" For Input As #1
    'le damos formato a la vista del ListView
    Me.ListView1.View = lvwReport
        'mientras haya datos el archivo
        Do Until EOF(1)
                'leo los datos y los guardo en la variable Data
                Input #1, Data
                'Lo que hay en data lo paso a un vector (es o que hace split)
                Aux = Split(Data, ";")
                'agrego un iten
                Set itm = ListView1.ListItems.Add(, , Aux(0))
                'agrego el resto de los datos del vector
                itm.SubItems(1) = Aux(1)
                itm.SubItems(2) = Aux(2)
                itm.SubItems(3) = Aux(3)
                itm.SubItems(4) = Aux(4)
                itm.SubItems(5) = Aux(5)
        Loop
        Close #1
End Sub
  #3 (permalink)  
Antiguo 07/10/2009, 14:30
rgg
 
Fecha de Ingreso: junio-2007
Mensajes: 14
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Problema co la carga de fichero en ListView

Muchas gracias por responderme Pana99!!!

Me has hecho un gran favor:

Con el código consigo que el sistema "entienda" como colocar las columnas. Sólo un cosa y es que sigue dando error en aquellos valores que contienen coma


Por ejempo en una línea así:
;0150001157;1;011801;011801;94;18.09.2009;18.09.20 09;18012009/02;Z01;000010;111;18,00; 3,00-;2;3,000;GD_LOTE1

Da error cuando le toca los siguientes valores.

18,00
3,00-
3,000

En el ejemplo rellena justo hasta 18 y da error " El subindice está fuera del intervalo". Sabías a qué es debido???

Muchas gracias otra vez porque la solución que me has dado ya es un GRAN AVANCE!!!!

Un abrazo!
  #4 (permalink)  
Antiguo 09/10/2009, 14:08
 
Fecha de Ingreso: enero-2007
Ubicación: 9 de julio
Mensajes: 111
Antigüedad: 17 años, 4 meses
Puntos: 2
Respuesta: Problema co la carga de fichero en ListView

Mira, este comentario tuyo me ha echo volver loco para poder solucionarlo.

Lo bueno es que descubri algo que no sabia

La funcion Input (que lee los datos del archivo), tiene una cierta capacidad en bytes para leer.

A partir de esa capacidad corta lo leido y ahi era donde no funcionaba.

Como se soluciona, muy facil:
con LINE delante de Input (que hace lea toda la linea del archivo).

Bueno, siempre se aprende

Aca va el codigo de nuevo

Saludos
Código:
Private Sub Command1_Click()
Dim itm As ListItem, Data As String, Aux As Variant
    'Abrimos el archivo
    Open "C:\prueba.txt" For Input As #1
    'le damos formato a la vista del ListView
    Me.ListView1.View = lvwReport
        'mientras haya datos el archivo
        Do Until EOF(1)
                'leo los datos y los guardo en la variable Data
                Line Input #1, Data
                'Lo que hay en data lo paso a un vector (es o que hace split)
                'tene presente que empieza con  ; y evalua si no corresponde antes quitarlo
                'si lo quitas tenes que borrar el ultimo subiten
                Aux = Split(Data, ";")
                'agrego un iten
                Set itm = ListView1.ListItems.Add(, , Aux(0))
                'agrego el resto de los datos del vector
                itm.SubItems(1) = Aux(1)
                itm.SubItems(2) = Aux(2)
                itm.SubItems(3) = Aux(3)
                itm.SubItems(4) = Aux(4)
                itm.SubItems(5) = Aux(5)
                itm.SubItems(6) = Aux(6)
                itm.SubItems(7) = Aux(7)
                itm.SubItems(8) = Aux(8)
                itm.SubItems(9) = Aux(9)
                itm.SubItems(10) = Aux(10)
                itm.SubItems(11) = Aux(11)
                itm.SubItems(12) = Aux(12)
                itm.SubItems(13) = Aux(13)
                itm.SubItems(14) = Aux(14)
                itm.SubItems(15) = Aux(15)
                
        Loop
        Close #1
End Sub
  #5 (permalink)  
Antiguo 21/10/2009, 03:58
rgg
 
Fecha de Ingreso: junio-2007
Mensajes: 14
Antigüedad: 16 años, 11 meses
Puntos: 0
De acuerdo Respuesta: Problema co la carga de fichero en ListView

Muchas gracias pana99!! Eres un monstuo!!

Realmente me has ayudado muchísimo.

Un abrazo!!

Rubén.-
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:35.