Bueno tengo un archivo txt en la siguiente ruta c:\planos\ac.txt necesito subirlo a una base de datos en access el código que he usado es el siguiente pero no me funciona no se que sucede me podrían colaborar ahí envío el código que estoy usando DoCmd.TransferText acImportDelim, "ac", "C:\planos\AC.TXT", ¿False lo poco que entiendo es que me dice que debo tener un nombre de especificacion pero no se que hacer? Auxilio
1 respuesta
Respuesta de telemaco
1
1
telemaco, He trabajado 5 años desarrollando aplicaciones tanto en access...
También soy de Colombia. Ahora, no te aconsejo que utilices el transfertext... Utiliza esta rutina que la puedes colocar en un formulario: Para crea una variable matriz tipo dimanica en el formulario ********************************** Dim ArregloDatos(2) ********************************** Aca se supone que la tabla contendra 3 campos, igual modifica segun tus necesidades.... Ahora suponemos que el archivo texto devuelve los datos en EL ORDEN ESTRICTO de la tabla y están separador por punto y como(para que no tenga problemas con los decimales).. Aquí la tabla se llama Usuarios, y al importar lo que hago en la función BuscarPalabra, es aque al leer la linea del archivo, separo las palabras (campos), buscando los punto y comas (separadores del archivo)... y las voy agregando a la Matriz (ArregloDatos), para luego verificar si el registro existe con la llave que debe estar en el archivo, si es así, modifico, de lo contrario Inserto. *************************************** Private Sub IMPORTAR_Click() Dim MiReg As DAO.Recordset Dim EntradaDatos As String On Error GoTo Err_IMPORTAR_Click Ruta = "C:\planos\AC.TXT" If Ruta <> "" Then Close #1 Open Ruta For Input As #1 ' Abre el archivo. Do While Not EOF(1) ' Busca el fin del archivo. Line Input #1, EntradaDatos ' Lee la línea de datos. BuscarPalabras EntradaDatos Loop Close #1 MsgBox "Datos importados con exito.", vbInformation, "Respuesta" End If Exit_IMPORTAR_Click: Exit Sub Err_IMPORTAR_Click: MsgBox Err.Description Resume Exit_IMPORTAR_Click End Sub Public Sub BuscarPalabras(Linea As String) Dim ContPalabras As Integer Dim MiReg As DAO.Recordset NumPos = 1 AntPos = 1 NuevaLinea = Linea ContPalabras = 0 While NumPos <> 0 NumPos = InStr(AntPos, NuevaLinea, ";") If NumPos = 0 Then HastaPal = Len(Linea) AntPos = AntPos + 2 Else HastaPal = NumPos End If Palabra = Mid(Linea, AntPos, HastaPal) Palabra = IIf(NumPos <> 0, Mid(Palabra, 1, Len(Palabra) - 1), Palabra) ArregloDatos(ContPalabras) = Palabra ContPalabras = ContPalabras + 1 If NumPos <> 0 Then NuevaLinea = Right(Linea, Len(NuevaLinea) - HastaPal) AntPos = NumPos + 1 Wend SQL = "SELECT * FROM USUARIOS WHERE CODUSU = " & ArregloDatos(0) & ";" Set MiReg = CurrentDb.OpenRecordset(SQL) If MiReg.RecordCount > 0 Then SQL = "UPDATE USUARIOS SET USUARIOS.USU = '" & ArregloDatos(1) & "', USUARIOS.ID = '" & ArregloDatos(2) & "' " & _ "WHERE (((USUARIOS.CODUSU)=" & ArregloDatos(0) & "));" CurrentDb.Execute SQL Else SQL = "INSERT INTO USUARIOS (CODUSU,USU,ID) VALUES(" & ArregloDatos(0) & ",'" & ArregloDatos(1) & "'," & _ "'" & ArregloDatos(2) & "');" CurrentDb.Execute SQL End If End Sub ************************************** Me avisas como te va... sino te sigo ayudando Att:telemaco