Ver Mensaje Individual
  #3 (permalink)  
Antiguo 19/04/2016, 08:47
isaac26lopez
 
Fecha de Ingreso: abril-2016
Ubicación: C:\Usuarios\isaac
Mensajes: 33
Antigüedad: 8 años, 7 meses
Puntos: 1
Respuesta: Leer archivo + crear una tabla con ciertos campos

Hola namiwis

Antes de nada, muchas gracias por responder. Tras haberle dado muchas vueltas en unas cuantas horas, he llegado a la siguiente conclusión:

En vez de hacerlo mediante consola, lo estoy intentado hacer con un formulario de windows. También añadir que lo intento con un "dataGridView" el cuál aun así me sigue dando problemas (porque todavía soy novato en esto del visual basic).

Volviendo al asunto, te voy a poner un buen trozo del .txt en cuestión:

Código .txt:
Ver original
  1. [1]
  2. MaxLength=30
  3. Defini=Tipo de documento
  4. ClaseCamp=Input
  5. TipoDato=Caracter
  6. CampoGraba=1
  7. Item=@RESVENTAS
  8. Ayuda=Solo saldrán los tipos de documento que tengan definida serie
  9. Imprescindible=Si
  10. PDAVISIBLE=SI
  11.  
  12. [2]
  13. MaxLength=2
  14. Defini=Serie albarán
  15. ClaseCamp=Input
  16. TipoDato=Caracter
  17. CampoGraba=2
  18. ItemSource=DataBaseName:BaseGes32;TableName:tSeriesAlbaranes;IndexField:0;
  19. Modificable=No
  20. CuadraIzquierda=48
  21. Ayuda=Son las series definidas para el tipo de documento seleccionado
  22. Imprescindible=Si
  23. PDAVISIBLE=SI

Como bien se puede observar, yo solo quiero coger ciertas "filas", es por ello que he recurrido a este código (algo chapuzas, lo sé):

Código vb:
Ver original
  1. Imports System.IO
  2. Public Class Form1
  3.     Dim celdas(4) As String
  4.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  5.         Dim mascara As System.IO.FileInfo = New FileInfo("C:\Program Files (x86)\Distribucion\mscr\mscr_037.msc")
  6.         tabla.ColumnCount = 4
  7.         tabla.Columns(0).Name = "CAMPO"
  8.         tabla.Columns(1).Name = "TIPO"
  9.         tabla.Columns(2).Name = "TAMAÑO MAXIMO"
  10.         tabla.Columns(3).Name = "DEFINICION"
  11.         Dim tablabd(2) As String
  12.         Dim i As Integer = 0
  13.         'Primero sacaremos las tablas para luego poderlas asociarlas a los campos
  14.        Try
  15.             Dim abrir2 As StreamReader = mascara.OpenText
  16.             Dim linea2 As String
  17.             Do While abrir2.Peek() > 0
  18.                 linea2 = abrir2.ReadLine()
  19.                 If linea2 Like "FicheroDatos=*" Then
  20.                     tablabd(i) = Replace(linea2, "FicheroDatos=", "")
  21.                     i = i + 1
  22.                 End If
  23.             Loop
  24.         Catch ex As Exception
  25.  
  26.         End Try
  27.         MessageBox.Show(tablabd(1))
  28.         Try
  29.             Dim abrir As StreamReader = mascara.OpenText
  30.             Dim linea As String
  31.             Do While abrir.Peek() > 0
  32.                 linea = abrir.ReadLine()
  33.                 If linea Like "CampoGraba*=*" Then
  34.                     If linea Like "CampoGraba(%)=*" Then
  35.                         Dim reemplazo As String = Replace(linea, "CampoGraba(%)=", tablabd(1))
  36.                         celdas(0) = reemplazo
  37.                     Else
  38.                         Dim reemplazo As String = Replace(linea, "CampoGraba=", tablabd(0))
  39.                         celdas(0) = reemplazo
  40.                     End If
  41.                 End If
  42.                 If linea Like "TipoDato*=*" Then
  43.                     Dim reemplazo As String = Replace(linea, "TipoDato=", "")
  44.                     celdas(1) = reemplazo
  45.                 End If
  46.                 If linea Like "MaxLength*=*" Then
  47.                     Dim reemplazo As String = Replace(linea, "MaxLength=", "")
  48.                     celdas(2) = reemplazo
  49.                 End If
  50.                 If linea Like "Defini*=*" Then
  51.                     Dim reemplazo As String = Replace(linea, "Defini=", "")
  52.                     celdas(3) = reemplazo
  53.                 End If
  54.                 If Not celdas(3) Is Nothing Then
  55.                     Dim lineaCompleta As String() = New String() {celdas(0), celdas(1), celdas(2), celdas(3)}
  56.                     tabla.Rows.Add(lineaCompleta)
  57.                 End If
  58.             Loop
  59.             abrir.Close()
  60.         Catch ex As SystemException
  61.             MsgBox(ex.Message)
  62.         End Try
  63.     End Sub
  64. End Class

Bien, te vuelvo a explicar un poco lo que estoy haciendo y lo que quiero conseguir: ahora ha cambiado un poco el enfoque.

He conseguido que se muestre en un datagridview, pero con los siguientes problemas: el primero, se me repite unas diez veces y de forma desordenada los campos que he seleccionado de ese fichero de texto (los coge bien, pero los sitúa mal en el datagridview y encima algunas de esas repeticiones se mezclan con los campos siguientes).

Enlace a una captura donde se muestra: https://gyazo.com/a30d42de4a1ae15ad26808f9966e9f9f

El siguiente problema que tengo es que en la columna donde irían los "CampoGraba" quiero que se muestre para los X campoGraba con el prefijo de una tabla, y para los siguientes campograbas que se muestre con el prefijo de la otra tabla (se que este ultimo punto no me he explicado bien, asi que si no se puede conseguir tampoco pasa nada, es algo opcional para que a mi me resulte mas facil consultar).

Bien, mas o menos queda "algo" explicado los avances que he conseguido, con los correspondientes problemas a mayores que también he conseguido.

un saludo y espero que pueda echarme un cable
__________________
"He intentado cambiar el mundo, pero no he encontrado el código fuente"