hola,
me gustaria si me podriaís ayudar: cómo hacer para que en mi formulario solicite abrir un archivo txt y luego estos datos los introduzca en una tabla que tengo.
gracias
| |||
ayuda en access hola, me gustaria si me podriaís ayudar: cómo hacer para que en mi formulario solicite abrir un archivo txt y luego estos datos los introduzca en una tabla que tengo. gracias |
| ||||
A ver Sabina, danos mas detalles acerca de lo que quieres hacer con esa accion q nos comentas..... Entiendo que sera algo asi como al dar enviar (al boton de formulario) se abrira un .txt? ![]() Saludos......
__________________ "Si lo piensas, es porque si lo puedes hacer" |
| |||
Hola a todos. He leído la consulta de z_g_sabina, y la respuesta de dazuaga. No sé cómo hacer lo que el primero necesita, pero yo necesito justo lo que comenta dazuaga. En un formulario quiero incrustar un boton que me permita navegar por los directorios de MiPc, para meter en dos campos del formulario el nombre del archivo seleccionado, y la ruta completa! Me podéis explicar como hacerlo? Gracias. Un saludo David |
| |||
hola a todos, he creado en access una tabla que importo de un archivo .txt, este archivo me lo va a generar un programa todos los días entonces yo tengo que recoger esa información todos los días para ello he creado un formulario que en un cuadro de texto le digo que me acceda al fichero .txt y me importe cada vez que entre en él este archivo a mi tabla que he creado... espero que os ayude para que así me podaís ayudar.. un saludo, z_g_sabina |
| |||
Para buscar el archivo, explorando los discos, lo mejor es mirar lo que viene en las bases de datos de ejemplo, NEptuno, y Soluciones, viene un código muy sencillo y claro de usar. Y para importar ficheros, la función en Access es TransferText, si son textos, TransferSpreadsheet sin son excel, dBase, y algunas otras Un saludo ![]() |
| |||
Hola Teri. Gracias por la respuesta. Solo una cosa. Ya había mirado el ejemplo NEPTUNO (el otro no lo tengo!) y no encontré nada parecido a lo que quería. También busqué ayuda sobre el objeto FileSearch, pero eso no me despliega una ventana, sino que directamente me busca (le tengo que dar yo el path, como parámetro de entrada). Si me puedes dar alguna indicación adicional, te lo agradezco. Un saludo, David. |
| |||
En la base Neptuno, creo recordar que tambiñen venía, esa opción Busca por esta función GetOpenFileName, pero no como función de Access, sino, como función creada en los módulos Un saludo |
| |||
hola Teri. gracias de nuevo. he vuelto a comprobar lo que me dices y no hay nada que se le parezca. quizás podrías pasarme la bbdd Soluciones, si la tienes (he mirado en mi CD de instalación y sólo está neptuno como ejemplo) o copiarme el txt. de la función, para echarle un vistazo. gracias, un saludo |
| |||
El módulo entero ocupa más del largo del mensaje, he estado revisando las bases de datos de ayuda, y está en la base de datos pedidos, si no las tienes instaladas, entra por agregar o quitar programas y seleccionas todas las bases de datos de ejemplo. Respecto a lo de copiarte el módulo, lo podría mandar en dos o más partes, pero no sé si eso contradice alguna norma del foro ![]() ![]() ![]() ![]() |
| |||
Hola de nuevo, Teri. Bases de Datos de ejemplo, en el CD de instalación, al igual que en mi ordenador, sólo tengo Neptuno. Cuando dices 'pedidos', ¿te refieres a una base de datos con ese nombre? Si es así, no la tengo. Te refieres a algo dentro de Neptuno? Una macro? Una función? No encuentro lo que me dices. Si puedes detallarme cómo encontrarlo, te lo agradezco. Gracias por este soporte on-line!! david. |
| |||
Ya sé cual es el motivo de que yo las tenga y tú no las veas, tú tienes Access xp, y yo te estaba hablando de Acces 97. Tengo ambos instalados, y efectivamente, sólo vienen en el 97, antes de pegar el código.. Pregunta a los moderadores: [COLOR=red]¿¿¿Se incumple alguna regla del foro, por pegar el módulo que viene en la base de datos de ejemplo pedidos de Access 97???[/ COLOR] |
| ||||
Cita: Calculo que no... pegalo pero...¿¿¿Se incumple alguna regla del foro, por pegar el módulo que viene en la base de datos de ejemplo pedidos de Access 97??? Pregunta a los involucrados en este mensaje: Este tema está relacionado con ASP o qué? Cuando hablan de formularios... se refieren a formularios HTML o formularios internos de access? |
| |||
Diría que no, que mas bien tiene que ver con programación Entiendo que están hablando de formularios de Access, y aunque tendría que ver con Bases de datos, es mas bien programación. Ahora pongo el código, irá en dos mensajes, en uno solo no entra. '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''' ' ActualizarVínculosDeTabla ' ' ' ' Este módulo contiene funciones que actualizan ' ' los vínculos a las tablas Neptuno si no están disponibles. ' ' ' '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''' Option Explicit ' Obligar a declarar las variables antes de utilizarlas. Option Compare Database ' Usar orden de la base de datos para las comparaciones de cadenas. Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Boolean Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Boolean Type MSA_OPENFILENAME ' Cadena de filtro usada para los filtros del cuadro de diálogo Abrir archivo. ' Utilizar MSA_CreateFilterString() para crearlo. ' Valor predeterminado = Todos los archivos, *.* cadFiltro As String ' Filtro inicial a mostrar. ' Valor predeterminado = 1. lngÍndiceFiltro As Long ' Directorio inicial al abrir el cuadro de diálogo. ' Valor predeterminado = Directorio de trabajo actual. cadDirectorioInicial As String ' Nombre de archivo inicial para llenar el cuadro de diálogo. ' Valor predeterminado = "". cadArchivoInicial As String cadTítuloDeCuadroDeDiálogo As String ' Extensión predeterminada para anexar al archivo si el usuario no especificó ninguna. ' Valor predeterminado = Valores del sistema (Abrir archivo, Guardar archivo). cadExtensiónPredeterminada As String ' Indicadores (ver lista de constantes) a utilizar. ' Valor predeterminado = sin indicadores. lngIndicadores As Long ' Ruta completa del archivo seleccionado. Al abrir el archivo, si el usuario selecciona ' un archivo que no existe, sólo se devuelve el texto del cuadro "Nombre del archivo". cadRutaCompletaDevuelta As String ' Nombre del archivo seleccionado. cadNombreDeArchivoDevuelto As String ' Posición dentro de la ruta de acceso completa (cadRutaCompletaDevuelta) donde comienza ' el nombre del archivo (cadNombreDeArchivoDevuelto). entPosiciónArchivo As Integer ' Posición dentro de la ruta de acceso completa (cadRutaCompletaDevuelta) donde comienza la extensión del archivo. entExtensiónDeArchivo As Integer End Type Const ALLFILES = "Todos los archivos" Type OPENFILENAME lTamañoEstructura As Long hwndPropietario As Long hInstancia As Long lpcadFiltro As String lpcadFiltroPersonalizado As Long nMáxFiltroCustr As Long nÍndiceFiltro As Long lpcadArchivo As String nMáxArchivo As Long lpcadTítuloArchivo As String nMáxTítuloArchivo As Long lpcadDirectorioInicial As String lpcadTítulo As String indicadores As Long nPosiciónArchivo As Integer nExtensiónArchivo As Integer lpcadExtPredeterminada As String lDatosCustr As Long lpfnConexión As Long lpNombrePlantilla As Long End Type Const NAA_PERMITIRMULTISELECCIÓN = &H200 Const NAA_CREARSÍMBOLOSISTEMA = &H2000 Const NAA_EXPLORADOR = &H80000 Const NAA_ARCHIVODEBEEXISTIR = &H1000 Const NAA_OCULTARSÓLOLECTURA = &H4 Const NAA_NOCAMBIARDIR = &H8 Const NAA_NODEREFERENCIARVÍNCULOS = &H100000 Const NAA_SINBOTÓNRED = &H20000 Const NAA_NODEVOLVERSÓLOLECTURA = &H8000 Const NAA_NOVALIDAR = &H100 Const NAA_SÍMBOLODELSISTEMASOBREESCRITURA = &H2 Const NAA_RUTADEBEEXISTIR = &H800 Const NAA_SÓLOLECTURA = &H1 Const NAA_MOSTRARAYUDA = &H10 Function BuscarNeptuno(cadRutaBúsqueda) As String ' Mostrar el cuadro de diálogo Abrir archivo para que el usuario ' busque la base de datos Neptuno. Devolver la ruta completa a Neptuno. Dim msaof As MSA_OPENFILENAME ' Establecer opciones para el cuadro de diálogo. msaof.cadTítuloDeCuadroDeDiálogo = "¿Dónde está Neptuno?" msaof.cadDirectorioInicial = cadRutaBúsqueda msaof.cadFiltro = MSA_CreateFilterString("Bases de datos", "*.mdb") ' Llamar a la rutina del cuadro de diálogo Abrir archivo. MSA_GetOpenFileName msaof ' Devolver la ruta de acceso y el nombre del archivo. BuscarNeptuno = Trim(msaof.cadRutaCompletaDevuelta) End Function Function MSA_CreateFilterString(ParamArray varFilt() As Variant) As String ' Crear una cadena de filtro a partir de los parámetros pasados. ' Devolver "" si no pasa ningún parámetro. ' Esperar un número par de argumentos (nombre de filtro, extensión), pero si ' pasa un número impar, agregar *.* Dim cadFiltro As String Dim entDev As Integer Dim entNúm As Integer entNúm = UBound(varFilt) If (entNúm <> -1) Then For entDev = 0 To entNúm cadFiltro = cadFiltro & varFilt(entDev) & vbNullChar Next If entNúm Mod 2 = 0 Then cadFiltro = cadFiltro & "*.*" & vbNullChar End If cadFiltro = cadFiltro & vbNullChar Else cadFiltro = "" End If MSA_CreateFilterString = cadFiltro End Function Function MSA_ConvertFilterString(strFilterIn As String) As String ' Crear una cadena filtro a partir de una cadena separada por barras ("|"). ' La cadena debe tener parejas de filtro|extensión, por ejemplo "Bases de datos de Access|*.mdb|Todos los archivos|*.*" ' Si no existe ninguna extensión para el último filtro, se agrega *.*. ' Este código ignorará todas las cadenas vacías, por ejemplo "||". ' Devolver "" si las cadenas pasadas están vacías. Dim cadFiltro As String Dim entNúm As Integer, entPos As Integer, entÚltimaPosición As Integer cadFiltro = "" entNúm = 0 entPos = 1 entÚltimaPosición = 1 ' Agregar cadenas mientras se encuentren barras. ' Ignorar las cadenas vacías (no permitidas). Do entPos = InStr(entÚltimaPosición, strFilterIn, "|") If (entPos > entÚltimaPosición) Then cadFiltro = cadFiltro & Mid$(strFilterIn, entÚltimaPosición, entPos - entÚltimaPosición) & vbNullChar entNúm = entNúm + 1 entÚltimaPosición = entPos + 1 ElseIf (entPos = entÚltimaPosición) Then entÚltimaPosición = entPos + 1 End If Loop Until (entPos = 0) ' Obtener la última cadena si existe (asumiendo que strFilterIn no terminaba con una barra). entPos = Len(strFilterIn) If (entPos >= entÚltimaPosición) Then cadFiltro = cadFiltro & Mid$(strFilterIn, entÚltimaPosición, entPos - entÚltimaPosición + 1) & vbNullChar entNúm = entNúm + 1 End If ' Agregar *.* si la última cadena no tiene extensión. If entNúm Mod 2 = 1 Then cadFiltro = cadFiltro & "*.*" & vbNullChar End If ' Agregar NULL al final si hay algún filtro. If cadFiltro <> "" Then cadFiltro = cadFiltro & vbNullChar End If MSA_ConvertFilterString = cadFiltro End Function Private Function MSA_GetSaveFileName(msaof As MSA_OPENFILENAME) As Integer ' Abrir el cuadro de diálogo Guardar archivo. Dim of As OPENFILENAME Dim entDev As Integer MSAOF_to_OF msaof, of of.indicadores = of.indicadores Or NAA_OCULTARSÓLOLECTURA entDev = GetSaveFileName(of) If entDev Then OF_to_MSAOF of, msaof End If MSA_GetSaveFileName = entDev End Function Function MSA_SimpleGetSaveFileName() As String ' Abrir el cuadro de diálogo Guardar archivo con los valores predeterminados. Dim msaof As MSA_OPENFILENAME Dim entDev As Integer Dim cadDev As String entDev = MSA_GetSaveFileName(msaof) If entDev Then cadDev = msaof.cadRutaCompletaDevuelta End If MSA_SimpleGetSaveFileName = cadDev End Function Private Function MSA_GetOpenFileName(msaof As MSA_OPENFILENAME) As Integer ' Abrir el cuadro de diálogo Abrir archivo. Dim of As OPENFILENAME Dim entDev As Integer MSAOF_to_OF msaof, of entDev = GetOpenFileName(of) If entDev Then OF_to_MSAOF of, msaof End If MSA_GetOpenFileName = entDev End Function Function MSA_SimpleGetOpenFileName() As String ' Abrir el cuadro de diálogo Abrir archivo con los valores predeterminados. Dim msaof As MSA_OPENFILENAME Dim entDev As Integer Dim cadDev As String entDev = MSA_GetOpenFileName(msaof) If entDev Then cadDev = msaof.cadRutaCompletaDevuelta End If MSA_SimpleGetOpenFileName = cadDev End Function Public Function ComprobarVínculos() As Boolean ' Comprobar los vínculos a la base de datos Neptuno. Devolver True si los vínculos son correctos. Dim bd As Database, rst As Recordset Set bd = CurrentDb ' Abrir la tabla vinculada para ver si la información de conexión es correcta. On Error Resume Next Set rst = bd.OpenRecordset("Productos") ' Si no se produce ningún error, devolver True. If Err = 0 Then ComprobarVínculos = True Else ComprobarVínculos = False End If End Function |
| |||
Private Sub OF_to_MSAOF(of As OPENFILENAME, msaof As MSA_OPENFILENAME) ' Este procedimiento convierte de la estructura Win32 a la estructura de MSAccess. msaof.cadRutaCompletaDevuelta = Left$(of.lpcadArchivo, InStr(of.lpcadArchivo, vbNullChar) - 1) msaof.cadNombreDeArchivoDevuelto = of.lpcadTítuloArchivo msaof.entPosiciónArchivo = of.nPosiciónArchivo msaof.entExtensiónDeArchivo = of.nExtensiónArchivo End Sub Private Sub MSAOF_to_OF(msaof As MSA_OPENFILENAME, of As OPENFILENAME) ' Este procedimiento convierte de la estructura de MSAccess a la estructura de Win32. Dim cadArchivo As String * 512 ' Iniciar algunas partes de la estructura. of.hwndPropietario = Application.hWndAccessApp of.hInstancia = 0 of.lpcadFiltroPersonalizado = 0 of.nMáxFiltroCustr = 0 of.lpfnConexión = 0 of.lpNombrePlantilla = 0 of.lDatosCustr = 0 If msaof.cadFiltro = "" Then of.lpcadFiltro = MSA_CreateFilterString(ALLFILES) Else of.lpcadFiltro = msaof.cadFiltro End If of.nÍndiceFiltro = msaof.lngÍndiceFiltro of.lpcadArchivo = msaof.cadArchivoInicial & String$(512 - Len(msaof.cadArchivoInicial), 0) of.nMáxArchivo = 511 of.lpcadTítuloArchivo = String$(512, 0) of.nMáxTítuloArchivo = 511 of.lpcadTítulo = msaof.cadTítuloDeCuadroDeDiálogo of.lpcadDirectorioInicial = msaof.cadDirectorioInicial of.lpcadExtPredeterminada = msaof.cadExtensiónPredeterminada of.indicadores = msaof.lngIndicadores of.lTamañoEstructura = Len(of) End Sub Private Function ActualizarVínculos(cadNombreArchivo As String) As Boolean ' Actualizar los vínculos a la base de datos suministrada. Devolver True si no se produce ningún error. Dim bd As Database Dim entCuenta As Integer Dim tdf As TableDef ' Pasar por todas las tablas de la base de datos. Set bd = CurrentDb For entCuenta = 0 To bd.TableDefs.Count - 1 Set tdf = bd.TableDefs(entCuenta) ' Si la tabla tiene una cadena de conexión, es una tabla vinculada. If Len(tdf.Connect) > 0 Then tdf.Connect = ";DATABASE=" & cadNombreArchivo Err = 0 On Error Resume Next tdf.RefreshLink ' Volver a vincular la tabla. If Err <> 0 Then ActualizarVínculos = False Exit Function End If End If Next entCuenta ActualizarVínculos = True ' Vinculación terminada. End Function Public Function VolverAVincularTablas() As Boolean ' Intentar actualizar los vínculos a la base de datos Neptuno. ' Devolver True si no se produce ningún error. Const conMáxTablas = 8 Const conTablaNoExistente = 3011 Const conNoEsNeptuno = 3078 Const conNeptunoNoEncontrada = 3024 Const conAccesoDenegado = 3051 Const conBaseDeDatosDeSóloLectura = 3027 Const conTítuloAplicación = "Pedidos" Dim cadDirectorioAccess As String Dim cadRutaBúsqueda As String Dim cadNombreArchivo As String Dim entError As Integer Dim cadError As String ' Obtener el nombre del directorio donde está ubicado Msaccess.exe. cadDirectorioAccess = SysCmd(acSysCmdAccessDir) ' Obtener la ruta predeterminada de la base de datos de ejemplo. If Dir(cadDirectorioAccess & "Ejemplos\.") = "" Then cadRutaBúsqueda = cadDirectorioAccess Else cadRutaBúsqueda = cadDirectorioAccess & "Ejemplos\" End If ' Buscar la base de datos Neptuno. If (Dir(cadRutaBúsqueda & "Neptuno.mdb") <> "") Then cadNombreArchivo = cadRutaBúsqueda & "Neptuno.mdb" Else ' Imposible encontrar Neptuno. Mostrar el cuadro de diálogo Abrir archivo. MsgBox "Imposible encontrar las tablas vinculadas de la base de datos Neptuno. Debe buscar Neptuno para poder utilizar " _ & conTítuloAplicación & ".", vbExclamation cadNombreArchivo = BuscarNeptuno(cadRutaBúsqueda) If cadNombreArchivo = "" Then cadError = "Lo siento, debe buscar Neptuno para abrir " & conTítuloAplicación & "." GoTo Salir_Falló End If End If ' Reparar los vínculos. If ActualizarVínculos(cadNombreArchivo) Then ' Funcionó. VolverAVincularTablas = True Exit Function End If ' Si falló, mostrar un error. Select Case Err Case conTablaNoExistente, conNoEsNeptuno cadError = "El archivo '" & cadNombreArchivo & "' no contiene las tablas de Neptuno necesarias." Case Err = conNeptunoNoEncontrada cadError = "Imposible ejecutar " & conTítuloAplicación & " hasta que no encuentre la base de datos Neptuno." Case Err = conAccesoDenegado cadError = "Imposible abrir " & cadNombreArchivo & " porque es de sólo lectura o porque está ubicada en un recurso compartido de sólo lectura." Case Err = conBaseDeDatosDeSóloLectura cadError = "Imposible volver a vincular las tablas porque " & conTítuloAplicación & " es de sólo lectura o porque está ubicada en un recurso compartido de sólo lectura." Case Else cadError = Err.Description End Select Salir_Falló: MsgBox cadError, vbCritical VolverAVincularTablas = False End Function Espero que te sirva, sólo tienes que retocar la parte que te interese. Un saludo ![]() |
| |||
hola teri, todo esto tengo mas o menos que escribir para poder captar los datos en mi tabla de un archivo .txt? pq si es así me has acojoano.... no hay algo un poco más sencillo? gracias....un saludo, z_g_sabina |
| |||
Gracias Teri! A ver si soy capaz de darle una vuelta! No sé si he hecho mal al lanzar aquí esta consulta. Es el único foro que encontré de Access, aunque lo cierto es que esto ha resultado ser una cuestión de programación. Si sabéis, Teri y Dazuaga, de algún foro más apropiado, por favor, no dudéis en decírmelo. Un saludo! Gracias de nuevo, david. |
| |||
Hola sabina.... No, no es necesario todo eso, pero puse todo el código, porque además viene como guardar un fichero, es el módulo completo, si lo pegas en Access y lo miras un poco, verás que tres o cuatro funciones se arregla, la función MSA_SimpleGetOpenFileName es muy sencilla, a partir de ahí puedes seguir el código y ya verás no necesitas tanto. No te asustes, no es para tanto |