Hola a todos...
Necesito Importar datos de un archivo plano (texto) a una tabla en acces pero a nivel de código. Si alguno me pudiera explicar o tiene un ejemplo, les agradecería mucho la ayuda.
| ||||
Nivel de código: Por medio de una macro, por módulo o por procedimiento de formulario.
__________________ NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL |
| ||||
Hola BrujoNic: No entiendo exactamente que quieres hacer. ¿quieres importar un texto y trasformarlo en filas y columnas de una tabla? ¿esa acción va a ser única o se tendrá que repetir como un procedimiento almacenado varias veces? ¿se importará siempre desde el mismo fichero de texto o cada vez se hará de uno diferente? Yo solo he importado texto de un archivo de texto por medio de la herramienta común de access, pero si me dices exactamente que quieres hacer, puedo echar un vistazo a ver que consigo. Saludos |
| ||||
Hola, tienes dos opciones siempre y cuando el archivo el cual vas a subir se el mismo....me refiero con la misma estructura.pero al final llegas al mismo resultado. Mediante una Macro o mediante codigo....., pero necesitas saber datos Te recomiendo que comiences con una macro, que te dice como hay que hacerlo, es mas amigable, y una vez que estes listo y tengas bien aprendido, lo escribes como codigo: Aca estan los pasos: 1.- Abre la Bd y te vas las Macros. 2.-Le dices nuevo 3.-Selecciona la opcion TRANSFERIRTEXTO y le das las opciones que aparercen abajo.... Una vez que tengas el archivo totalmente controlado...es decir, no creo que te resulte a la primera, sigue intentandolo, hasta que el resultado de la tabla o los resultados de los datos, sean los que tu quieres, una vez hecho esto....le das a la macro que se convierta en el codigo vbasic....despoues se la asigna a el boton del form, que quieres que haga la transferencia. Eso Avisa cualquier cosa.
__________________ yerba mala nunca....te la fumes... Última edición por vamp_02; 01/07/2003 a las 06:54 |
| ||||
amanda75: Lo que debo hacer es importar un archivo texto que se va a llamar diferente, delimitado por tab (tabuladores) pero con la misma estructura de una tabla donde va a quedar su contenido y el procedimiento va a ser diario. vamp_02: Revise tu recomendación con las macros pero igual que lo dicho anteriormente, el archivo va a tener un nombre diferente y una ruta que NO puede ser necesariamente la misma, o sea, que lo tienen que buscar y viendo la macro, obligatoriamente tengo que darle un nombre de archivo y ruta. Yo ya tengo algo hecho en un módulo donde puedo seleccionar el archivo pero ahora me falta la exportación, gracias por su ayuda y espero continúen para concluir porque me urge.
__________________ NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL Última edición por BrujoNic; 01/07/2003 a las 10:51 |
| ||||
En el manual de access se dice En Microsoft Access 2000, no se puede usar una instrucción SQL para especificar los datos a exportar cuando esté usando la acción TransferirTexto. En lugar de usar una instrucción SQL, primero debe crear una consulta y luego especificar el nombre de la consulta en el argumento Nombre de la tabla. También es tajante en esto El nombre del archivo de texto para importar, exportar o vincular debe incluir la ruta de acceso completa. Este argumento es obligatorio. A mi se me ocurre una solución, puede que a algún compañero se le ocurra otra: (seguramente ya sabrás importar pero pongo todo el proceso para no saltarme ningún paso) Una vez creado el documento de texto, nombrado y ubicado exactamente desde dónde lo importará siempre el programa, se puede crear un "modelo de importación": En archivo/obtener datos externos/importar/(archivo de texto) importar Eligiendo delimitado, se siguen las indicaciones del asistente y en avanzado, se pueden especificar las condiciones de importación guardando el "modelo" Luego se hace una macro, como decia vamp_02, poniendo un nombre fijo de tabla, de archivo con su ruta y con la especificación de importación que previamente se ha creado. Después se puede hacer que el usuario ejecute esta macro desde un formulario mediante un botón de acción Espero haberte ayudado. Si al final decides hacer este proceso y necesitas alguna aclaración, mándame un privado. Un saludo BrujoNic |
| ||||
amanda75, disculpa que te contradiga, pero ya voy avanzando con esto y si se puede pero ahora el problema es especificar el delimitador... La instrucción que estoy ejecutando es la siguiente: DoCmd.TransferText acImportDelimim, , "tabla", "ruta y archivo texto", True Funciona bien pero el archivo va delimitado con tab y no se como indicarle eso. Por el momento me toma cada línea del archivo plano como uno solo.
__________________ NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL |
| ||||
Bueno ya resolví la parte de importar archivo por medio de un módulo creado para el formulario que va a ejecutar la sentencia... Para el que le interese o le pueda ser util en un futuro, les dejo el código del mismo.
Código:
Para mi propósito, el archivo texto está delimitado por tab, donde cada tab representa fin de un campo los cuales deben corresponder con el de la tabla. Además, el archivo texto DEBE tener inicialmente un registro en blanco ya que como toma el primero como encabezado, lo omite. Si no se deja ese registro en blanco, va a omitir el primer registro.Private Sub Form_Open(Cancel As Integer) ' Proposito : Invoca la función Common Dialog GetOpenFileName de Windows ' para permitir al usuario a elegir un archivo txt ' Parámetros : Cancelar - ' Creado/Modificado : 01/07/2003, On Error GoTo ErrHandler Dim strFilter As String Dim Responder As Integer strFilter = ahtAddFilterItem(strFilter, "Archivos Texto (*.txt)", "*.TXT") ' strFilter = ahtAddFilterItem(strFilter, "dBASE Files (*.dbf)", "*.DBF") ' strFilter = ahtAddFilterItem(strFilter, "Text Files (*.txt)", "*.TXT") ' strFilter = ahtAddFilterItem(strFilter, "All Files (*.*)", "*.*") ' strPathAndFile = ahtCommonFileOpenSave(InitialDir:="C:\", _ ' Filter:=strFilter, FilterIndex:=3, Flags:=lngFlags, _ ' DialogTitle:="Elija el archivo TXT a procesar") strPathAndFile = ahtCommonFileOpenSave(Filter:=strFilter, _ FilterIndex:=3, Flags:=ahtOFN_READONLY, _ DialogTitle:="Elija el archivo TXT a procesar") ' lngFlags, _ If Len(strPathAndFile) > 0 Then Responder = MsgBox("¿Desea Importar el archivo " & strPathAndFile,_ vbOKCancel, "Importar Archivo") If Responder = vbOK Then Importar_txt (strPathAndFile) MsgBox "Importación de archivo " & IstrPathAndFile & _ " concluida", vbExclamation, "Importación de archivo" ' Resume Exit_Sub Else MsgBox "Importación de archivo TXT cancelada", vbExclamation, strPathAndFile End If ' Me![imgTheImage].Picture = strPathAndFile Else MsgBox "No selecciono archivo, no se va a realizar la carga.", _ vbExclamation, "Error, en selección de archivo" Cancel = True End If ' Since you passed in a variable for lngFlags, ' the function places the output flags value in the variable. Exit_Sub: Exit Sub ErrHandler: MsgBox "Error " & Err.Number & " : " & Err.Description & " in Form_Open", _ vbExclamation, "Error, en selección de archivo" Cancel = True Resume Exit_Sub End Sub Private Function Importar_txt(arch_txt As String) As String DoCmd.TransferText acImportDelimim, "Especificación de importación", _ "tabla", arch_txt, True End Function Las especificaciones de las características del archivo texto estan almacenadas en Especificación de importación. Para crear estas especificaciones, uno primero realiza la importación por menú, o sea, Archivo, Obtener datos Externos, Importar, especificar el archivo a importar, seguir el wizard, especificando que se va a importar en una tabla existente y antes de finalizar presionar el botón avanzada, ahi van a ver un boton que dice "guardar como" y ahi especifican el nombre ese nombre es el mismo que use en la funcion DoCmd.TransferText acImportDelimim, "Especificación de importación", "tabla", arch_txt, True y es "Especificación de importación"
__________________ NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL Última edición por BrujoNic; 01/07/2003 a las 23:50 |