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 de scmendieta
1
1
scmendieta, Cargos: Diseñador de portales web, Empresa tecnosoluciones,...
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.