¿Cómo analizar los datos de un array en visual basic?

Necesito interpretar la primera linea de un texto que contiene el significado y el orden de los datos del resto de lineas. Ejemplo del texto:
!DV05|DW01|GL19|GL1A|LX02
0|2|0
2|3|7
7|5|3
0|2|0
2|3|7
7|5|3
DV05 Y LX02 no indican nada, son inicio y fin de la trama. DW01 contiene (0, 2, 7, 0, 2, 7), GL19 contiene (2, 3, 5, 2, 3, 5) y GL1A (0, 7, 3, 0, 7, 3). He conseguido separar cada dato correctamente y meter cada uno en una columna de access diferente, pero siempre y cuando el formato sea el mismo. El problema es que cada vez la cabecera puede tener más o menos datos y distinto orden. Es necesario entonces analizar de alguna manera esta cabecera para "traducir" su contenido y poder así asignar los datos de forma correcta y en orden. Espero tu ayuda con algún ejemplo, por favor. Muchas gracias.
Este es el código que llevo hasta ahora:
Option Explicit
Private Sub Command1_Click()
Dim ruta As String
Dim sapo As String, PEPE As String, MONO As String 'Declaramos las cadenas
Dim TERE() As String 'declaramos la variable que contendrá la matriz
ruta = "c:\delimitado.txt"
Open ruta For Input As #1
While Not EOF(1) 'Bucle que para leer lineas hasta llegar a la última
Line Input #1, sapo$
PEPE = Replace(sapo, "!DV05|", "", , , vbTextCompare) 'Eliminamos de la cabecera el comando de inicio
MONO = Replace(PEPE, "|LX02", "", , , vbTextCompare) 'Eliminamos de la cabecera el comando de fin
TERE = Split(MONO, "|") 'Aquí separamos el texto delimitado para generar la matriz
On Error Resume Next
List1.AddItem TERE(0) 'Insertamos cada subcadena en un list diferente
List2.AddItem TERE(1)
List3.AddItem TERE(2)
With Adodc1.Recordset 'Hacemos la lladada a ADO
On Error Resume Next
.AddNew
.Fields("CANTIDAD") = TERE(0) 'Ingresamos cada parte de la matriz en una columna distinta de access
.Fields("REFERNCIA") = TERE(1)
.Fields("DESCRIPCION") = TERE(2)
.Fields("SEGUNDA REFERENCIA") = TERE(3)
.Fields("Campo5") = TERE(4)
End With
Wend ' Retorno del bucle
Close #1 ' Cerramos archivo
End Sub

1 respuesta

Respuesta
1
Si te funciona para esos 3 referencias te debe funcionar para 20, o 30.
Lo que veo es que lo que debes hacer es guardar las referencias en un array también, así tienes independencia de si viene 1 o varias referencias.
Ademas el array en donde guardas los valores que no sean arrays separados sino un array de 2 dimensiones, con eso la columna de este array representa la referencia : GL19, GL01, etc, y las filas los valores.
Más o menos entiendo lo que me quieres decir, pero no se como hacerlo. Estoy empezando a programar y me cuesta bastante. Te agradecería mucho que me pusieras un pequeño ejemplo de como hacerlo, yo intentaré desarrollarlo para mi aplicación.
Un saludo y gracias de antemano.
Es lo mismo que tienes, solo que en vez de TERE(0), vas a tener TERE(0,0), TERE(0,1), etc. donde el 0 de la primera columna indica a TERE, el dígito después e la coma indica los valores que tienes en este momento.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas