Visual Basic - Para Cecilia

Life is soft - evento anual de software empresarial
 
Vista:

Para Cecilia

Publicado por Maria (31 intervenciones) el 22/05/2006 16:05:32
Hola,

He visto en alguna respuesta del foro que ponias este código para leer un fichero txt.

Public Function FileToString(FileName As String) As String

Dim hlngFile As Long, strFile As String

hlngFile = FreeFile ' Devuelve un número no ocupado por ningún fichero
Open FileName For Binary Access Read As hlngFile ' Es el número que se le asigna al fichero

FileToString = vbNullString
strFile = String(FileLen(FileName), " ")
Get hlngFile, , strFile
Close hlngFile
FileToString = strFile

End Function

Private Sub cmdImport_Fich1_Click()

Dim Lineas As Variant, i As Integer, j As Integer, k As Integer
Dim Columnas() As String

Lineas = Split(FileToString(strNombre), vbCrLf)

For i = Val(LBound(Lineas) + 1) To UBound(Lineas)
Columnas = Split(Lineas(i), " ") ' Separado por espacios
For j = LBound(Columnas) To UBound(Columnas)
'Debug.Print Columnas(j)
Next j

Next i


End Sub

Mi pregunta es la siguiente -> Como puedo leer el contenido de la variable Columnas, he probado con un msgbox , asignando a un array pero nada.

Nunca habia utilizado la función Split y puede ser por eso.

Necesito poder asignar a algo esta variable porque después la voy a guardar en la base de datos.

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Para Cecilia

Publicado por Mauro (65 intervenciones) el 23/05/2006 17:36:43
Si tiene un archivo con una linea que este en este formato:
0001 Mauro Benitez Argentina
Columnas(1) = 0001
Columnas(2) = Mauro
Columnas(3) = Benitez
Columnas(4) = Argentina

En tu caso j representa la variable.

Public Function FileToString(FileName As String) As String
Dim hlngFile As Long, strFile As String

hlngFile = FreeFile ' Devuelve un número no ocupado por ningún fichero
Open FileName For Binary Access Read As hlngFile ' Es el número que se le asigna al fichero

FileToString = vbNullString
strFile = String(FileLen(FileName), " ")
Get hlngFile, , strFile
Close hlngFile
FileToString = strFile

End Function

Private Sub cmdImport_Fich1_Click()

Dim Lineas As Variant, i As Integer, j As Integer, k As Integer
Dim Columnas() As String

Lineas = Split(FileToString(strNombre), vbCrLf)

For i = Val(LBound(Lineas) + 1) To UBound(Lineas)
Columnas = Split(Lineas(i), " ") ' Separado por espacios
For j = LBound(Columnas) To UBound(Columnas)

SI QUERES PASAR A UNA BD QUEDARIA ASI MAS O MENOS

rec.open "Select * from Socios",bd,......
with rec
.addnew
!Codigo = columnas(j)
!Nombre = columnas(j+1)
!Apellido = columnas(j+2)
!Pais = columnas (j+3)
.close

Next j

Next i

ESPERO TE SIRVA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Para Cecilia

Publicado por Maria (31 intervenciones) el 24/05/2006 08:15:00
Si se que es asi de fácil pero no me deja.... leer la matriz columnas, es como si dejará algo más que texto dentro de la variable y explota al leerlo.

Seguiré intentandolo....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Para Cecilia

Publicado por Mauro (65 intervenciones) el 24/05/2006 22:54:36
Te envie un ejemplo que hice que esta funcionando a tu correo, espero que te sirva.

Te mando un abrazo

Mauro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Para Cecilia

Publicado por Maria (31 intervenciones) el 25/05/2006 11:39:15
Muchas gracias. Comprobare que estoy haciendo mal.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Para Cecilia

Publicado por Maria (31 intervenciones) el 25/05/2006 12:24:17
Donde pone AQUI me produce un desbordamiento...ya sea con el fichero que se.

¿Por que puede ser?

Private Sub CmbPasar_Click()
On Error GoTo archivo
Dim Lineas As Variant, i As Integer, j As Integer, k As Integer
Dim Columnas() As String
Dim Camino As String
Camino = App.Path & "\Ejemplo.txt"
Lineas = Split(FileToString(Camino), vbCrLf)
For i = Val(LBound(Lineas)) To UBound(Lineas)->>>>>AQUI!!!!
Columnas = Split(Lineas(i), " ")
rec.Open "Select * from Socios", bd, adOpenKeyset, adLockOptimistic
With rec
If UBound(Columnas) = 4 Then
.AddNew
!Nombre = Columnas(0)
!Apellido = Columnas(1)
!Direccion = Columnas(2)
!Telefono = Columnas(3)
.Update
.Close
End If
End With
Next i
MsgBox "Los Datos se importaron con exito!!!!", vbInformation, "De .txt a .mdb"
Exit Sub
archivo:
MsgBox "Se produjo un error", vbExclamation, "Error."
End
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Para Cecilia

Publicado por Cecilia Colalongo (3116 intervenciones) el 25/05/2006 22:38:38
Será:

For i = LBound(Lineas) To UBound(Lineas)

No hace falta ningún Val porque los valores que devuelven LBound y UBound son numéricos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Para Cecilia

Publicado por Maria (31 intervenciones) el 26/05/2006 08:48:33
No se si te habrá pasado... pero cuando el txt es muy largo da error de desbordamiento pero cuando el fichero es más pequeño lo hace correctamente.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Para Cecilia

Publicado por Cecilia Colalongo (3116 intervenciones) el 26/05/2006 15:33:25
En lugar de pasarlo a un String leelo secuencialmente en ese caso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Para Cecilia

Publicado por Matías freire (421 intervenciones) el 26/05/2006 16:13:16
no se olviden que por más que sea pequeño el archivo, si la cantidad de elementos del vector supera los limites de Integer, la variable "i" del ciclo FOR me dará desbordamiento. Para mí está por ahí el asunto. Hay que ver qué valor devuelve Ubound.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Para Cecilia

Publicado por Cecilia Colalongo (3116 intervenciones) el 29/05/2006 13:27:30
Se la declara como Long en lugar de Integer y se soluciona el problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Para Cecilia

Publicado por Mauro (65 intervenciones) el 26/05/2006 21:58:31
Pasame tu txt a mi correo y yo veo como cargarlo.

Saludos

Mauro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar