Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Ayuda con TransferText en Access

Estas en el tema de Ayuda con TransferText en Access en el foro de Bases de Datos General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 27/06/2003, 12:31
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Ayuda con TransferText en Access

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.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #2 (permalink)  
Antiguo 30/06/2003, 12:07
Avatar de vamp_02  
Fecha de Ingreso: febrero-2002
Ubicación: Santiago de Chile
Mensajes: 367
Antigüedad: 22 años, 2 meses
Puntos: 0
Podrias explicar mejor que es el

"NIVEL DE CODIGO"
__________________
yerba mala nunca....te la fumes...
  #3 (permalink)  
Antiguo 30/06/2003, 16:53
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Nivel de código: Por medio de una macro, por módulo o por procedimiento de formulario.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #4 (permalink)  
Antiguo 01/07/2003, 03:21
Avatar de amanda75  
Fecha de Ingreso: junio-2003
Ubicación: cerca, pero no mucho
Mensajes: 684
Antigüedad: 20 años, 11 meses
Puntos: 0
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
  #5 (permalink)  
Antiguo 01/07/2003, 06:50
Avatar de vamp_02  
Fecha de Ingreso: febrero-2002
Ubicación: Santiago de Chile
Mensajes: 367
Antigüedad: 22 años, 2 meses
Puntos: 0
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
  #6 (permalink)  
Antiguo 01/07/2003, 10:45
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
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.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL

Última edición por BrujoNic; 01/07/2003 a las 10:51
  #7 (permalink)  
Antiguo 01/07/2003, 12:32
Avatar de amanda75  
Fecha de Ingreso: junio-2003
Ubicación: cerca, pero no mucho
Mensajes: 684
Antigüedad: 20 años, 11 meses
Puntos: 0
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
  #8 (permalink)  
Antiguo 01/07/2003, 12:53
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
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.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #9 (permalink)  
Antiguo 01/07/2003, 14:42
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
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:
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
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.

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"
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL

Última edición por BrujoNic; 01/07/2003 a las 23:50
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:49.