Accesar archivos de textos

Tengo muy poco programando en Visual Basic, si alguien me pudiera ayudar con lo siguiente. En un archivo en text delimit. Para pasarlo a una base de datos *.MDB. ¿Qué hago? Porque no tengo access instalado.

1 respuesta

Respuesta
1
Bueno lo primero que tienes que hacer es leer el archivo es obvio, las instrucciones que te permiten leer archivos de texto desde visual basic serian las siguientes.
Option Explicit
Private fso 'objeto para manejar el filesystemobjetc
Private fo ' objeto para manejar el archivo
Private ts 'objeto para manejar los registros del archivo
Private Sub Form_Load()
Set fso = CreateObject("Scripting.FileSystemObject")
Set fo = fso.getfile("C:\Mis documentos\codigo fuente\vb\archivos de textos\prueba1.txt")
End Sub
Hasta aquí solo se abre el archivo, OK decís que no tienes access, eso no es problema lo que se tiene que hacer crear las instrucciones para crear una tabla para una base de datos de access 97, dame unos minutos y te pondré un ejemplo.
Bueno el ejemplo anterior no hacia prácticamente nada, el que a continuación te expongo más completo
esta bien comentariado, si tienes algunas duda o si quieres el proyecto completo te lo puedo facilitar, este código se puede ampliar para hacerlo más funcional, eso depende, lo podemos hacer más funcional, si quieres más funcionalidad solo tienes que decirme,
Option Explicit
Private fso 'objeto para manejar el filesystemobjetc
Private fo ' objeto para manejar el archivo
Private ts 'objeto para manejar los registros del archivo
Private dbnotas As Database
Private Const ForReading = 1
Private Sub cmdabrir_Click()
Dim tbnotas As TableDef 'objeto para manejar tabla
Dim fldcampos As Field 'objeto para manejar campos
Dim rsregistros As DAO.Recordset 'objeto para manejar los registos de la tabla calificaciones
Dim slinea As String 'se guarda una linea de texto completa
Dim scampo As String
Dim contcampos As Integer
Dim i As Integer
'primero creamos la base de datos
If Dir("Notas.mdb") = "" Then
Set dbnotas = DBEngine.CreateDatabase("Notas.mdb", dbLangGeneral, dbVersion30) 'se crea la base de datos Notas.mdb
'crearemos su estructura
Set tbnotas = dbnotas.CreateTableDef("Calificaciones")
' crear los campos y agregarlos a la tabla
With tbnotas
.Fields.Append .CreateField("Nombre", dbText)
.Fields.Append .CreateField("Apellidos", dbText)
.Fields.Append .CreateField("Iparcial", dbInteger)
.Fields.Append .CreateField("IIparcial", dbInteger)
.Fields.Append .CreateField("EF", dbInteger)
.Fields.Append .CreateField("Notafinal", dbInteger)
Dbnotas. TableDefs. Append tbnotas
End With
Else
Set dbnotas = OpenDatabase("Notas.mdb")
End If
'leeremos fila a fila y guardaremos el resultado en una base de datos de acces
'leemos el archivo de texto
' Lee el contenido del archivo. El símbolo que se utiliza para delimitador de los campos es #
Set rsregistros = dbnotas.OpenRecordset("Calificaciones")
Do While fo.AtEndOfStream <> True
slinea = fo.ReadLine ' se lee una linea y se guarda en la variable slinea, una vez leida se procede a
'separar los campos
contcampos = 1
rsregistros.AddNew 'se agrega un nuevo registro a la tabla
For i = 1 To Len(slinea)
If Mid(slinea, i, 1) <> "#" Then '# es el delimitador de campos
scampo = scampo & Mid(slinea, i, 1) 'se devuelve un caracter y se concatena en la cadena scampo
If i = Len(slinea) Then
rsregistros("Notafinal") = Val(scampo)
contcampos = contcampos + 1
scampo = ""
End If
Else
Select Case contcampos 'se agrega cada valor a cada campo
Case 1
rsregistros("Nombre") = scampo 'se hace referencia al campo Nombre
contcampos = contcampos + 1
scampo = ""
Case 2
rsregistros("Apellidos") = scampo
contcampos = contcampos + 1
scampo = ""
Case 3
rsregistros("Iparcial") = Val(scampo)
contcampos = contcampos + 1
scampo = ""
Case 4
rsregistros("IIparcial") = Val(scampo)
contcampos = contcampos + 1
scampo = ""
Case 5
rsregistros("EF") = Val(scampo)
contcampos = contcampos + 1
scampo = ""
End Select
End If
Next i
rsregistros.Update 'se garantiza que el registro se grabe en la tabla
Loop
End Sub
Private Sub Form_Load()
'el objeto fso se crea utilizando los objetos de sistemas de archivos
'el objeto fo se utiliza para leer el archivo de texto
Set fso = CreateObject("Scripting.FileSystemObject")
Set fo = fso.OpenTextFile(App.Path & "\prueba1.txt ", ForReading, False)
End Sub
El código te permite leer el archivo de texto y crear una base de datos de access y guardar cada registro correspondiente en la base de datos, el delimitador que utilizo es el símbolo de #
Si necesitas más funcionalidad, estoy a la orden.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas