Llenar campos a una tabla nueva

<span style="font-family: Times New Roman; font-size: small;">Tengo un profgrama que que ingresa datos a una tabla nueva desde un archivo de testo eel problema que tengo es que tiene que ingresar los datos a dos campos primero a Enero y luego a Febrero pero no me sale, ¿me puedes decir en que estoy fallando por favor? Aqui te envio el codigo:</span>
Public Function leerMesA()
    Dim Archivo As String
    Dim NroArch As Integer    'Numero id del archivo
    Dim Cadena As String      'Una línea leída del archivo
    Dim strMeses(0 To 4) As String 'Guarda los meses Jan en 0 y Feb en 1
    Dim intMeses As Integer  'Indica si es una Jan (0) o Feb (1)
    Dim strJan() As String 'Arreglo que contiene a cada Jan en un
                            'espacio en particular
    Dim strFeb() As String 'Arreglo que contiene a cada Feb en
                            'en un espacio en particular
    Dim rs1
    Set rs1 = CurrentDb.OpenRecordset("Meses1")
 Archivo = ("EEGGA180_01.txt")
    'Definir el numero de archivo
    NroArch = FreeFile
    'Abrir el archivo aleatorio
    Open Archivo For Input As #NroArch
    'Recorrer el archivo
    Do While Not EOF(NroArch)
        Line Input #NroArch, Cadena 'Sacar una línea del archivo
        'Revisa si la línea tiene el id de Jan
        If InStr(LCase(Cadena), "jan") > 0 Then
            intMeses = 0
        'Revisa si la línea tiene el id de Feb
        ElseIf InStr(LCase(Cadena), "feb") > 0 Then
            intMeses = 1
        End If
        'So la cadena no es parte del encabezado
         If InStr(LCase(Cadena), "is") = 0 And InStr(LCase(Cadena), "mean") = 0 And InStr(LCase(Cadena), "gga") = 0 And InStr(LCase(Cadena), "tem") = 0 Then
            'Agrupa todas las Janes y Febes
            strMeses(intMeses) = strMeses(intMeses) + " " + Cadena
        End If
    Loop
    'Separar Feb y Jan en un arreglo
    strJan = Split(strMeses(0))
    strFeb = Split(strMeses(1))
    For i = 0 To UBound(strJan) 'Recorrer cada Jan
     If Trim(strJan(i)) <> "" Then
          rs1.AddNew' Adicionar nuevo
         rs1("Enero") = strJan(i)
         End If
    Next
    For j = 0 To UBound(strFeb) 'Recorrer cada Feb
        'Validar que la Jan no sea vacía
         If Trim(strFeb(j)) <> "" Then
          'rs1("Enero") = strJan(i)
          rs1("Febrero") = strFeb(j)
          rs1.Update
      End If
   Next
rs1.Close ' Cerramos las tablas
Set rs1 = Nothing ' Liberamos los objetos
    'Cerrar archivo
    Close NroArch
    MsgBox "Proceso finalizado"
End Function

1 respuesta

Respuesta
1
No veo un problema de código sino de lógica del procedimiento que escribiste.
Hace un con F8 un paso a paso, porque yo no puedo hacerlo, y fíjate como actúa en cada instrucción.
Me pones que tienes que ingresar a una tabla con 2 campos
¿Cómo esta conformada esa tabla? Porque no me gusta como esta planteado el problema
saludos
leandro
Ya lo corrí paso por paso y me sale, solo me ingresa bien Enero pero febrero no lo hace, solo si le pongo add a Febrero lo ace pero lo adiciona como otro registro después de hacer Enero, ¿por favor podrías fijarte bien si mi lógica esta correcta y si tengo error que le falta?
Gracias!
Preincipalmente en esta parte:
'Separar Feb y Jan en un arreglo
    strJan = Split(strMeses(0))
    strFeb = Split(strMeses(1))
    For i = 0 To UBound(strJan) 'Recorrer cada Jan
     If Trim(strJan(i)) <> "" Then
          rs1.AddNew' Adicionar nuevo
         rs1("Enero") = strJan(i)
         End If
    Next
    For j = 0 To UBound(strFeb) 'Recorrer cada Feb
        'Validar que la Jan no sea vacía
         If Trim(strFeb(j)) <> "" Then
          'rs1("Enero") = strJan(i)
          rs1("Febrero") = strFeb(j)
          rs1.Update
      End If
   Next
rs1.Close ' Cerramos las tablas
Set rs1 = Nothing ' Liberamos los objetos
    'Cerrar archivo
    Close NroArch
    MsgBox "Proceso finalizado"
End Function
Pásame detallado que tablas son las que estas usando
Utilizo una tabla Meses cuyos campos son Enero, Febrero... Diciembre estos campos están vacíos y deben ser llenado con los datos del archivo txt, este archivo tiene el siguiente formato:
IPCC Data Distribution Centre ECHAM4 Results   16-Jul-98
Grid is 128 *  64    Month is  Jan
Mean Change values for 2010-2039 with respect to 1961-1990
GGA   EEGGA1
precipitation, mm/day                      
8192     Format is 10f8.2   Missing Value is 9999.99
    0.11    0.11    0.11    0.12    0.12    0.13    0.14    0.14    0.14    0.14
    0.14    0.14    0.15    0.15    0.15    0.16    0.15    0.15    0.16    0.16
    0.16    0.16    0.17    0.17    0.17    0.17    0.18    0.18    0.18    0.18
    0.18    0.18    0.18    0.18    0.17    0.17    0.16    0.16    0.15    0.14
IPCC Data Distribution Centre ECHAM4 Results   16-Jul-98
Grid is 128 *  64    Month is  Apr
Mean Change values for 2010-2039 with respect to 1961-1990
GGA   EEGGA1
precipitation, mm/day                      
8192     Format is 10f8.2   Missing Value is 9999.99
    0.21 0.21 0.21 0.21 0.22 0.22 0.23 0.24 0.24 0.25
    0.25 0.26 0.26 0.27 0.27 0.28 0.27 0.27 0.27 0.27
    0.28 0.28 0.28 0.28 0.28 0.28 0.28 0.28 0.28 0.28
    0.28 0.28 0.28 0.28 0.28 0.28 0.28 0.27 0.27 0.27
Originalmente el archivo es más grande pero ese es el formato en el programa que te envíe hace el proceso pero solo para Enero y para Febrero no me sale. Ojala puedas ayudarme, gracias!
Acá cuando haces el paso a paso, me parece que no esta entrando en febrero, y fíjate que si entra no tiene el rs1. Addnew para que lo agregue
por eso te esta agregando solo enero, hace así para ver si esto es así
el rs1. Addnew pasalo arriba de febrero y sácalo de enero
otra prueba que podes hacer es poner 2 contadores para enero y febrero
así vez cuantas veces paso por cada lado
saludos
lea
Ya probé haciendo lo de addnew pero no lo hace... como es eso de los contadores me puedes explicar y poner un ejemplo por favor.
Gracias!
Si solamente te guarda lo que son enero.
Fíjate esto, ¿te guarda febrero en la tabla de enero?
Lo de los contadores es así
cont=cont+1, eso es un contador ahora ¿donde va ubicado?
Eso lo tienes que ver vos según el proceso que estas haciendo para que te aumente uno
cuando graba el de enero y tener otro contador cuando te tiene que grabar febrero
cuando terminas de leer todo el archivo, te fijas cuantas veces paso por el de enero y cuantas paso por el de febrero, quizás eso te demuestra que hay un error de lógica que no estas viendo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas