Cuadro de diálogo 'importar objetos' |
Responder |
Autor | |
simbad
Nuevo Unido: 10/Mayo/2006 Localización: España Estado: Sin conexión Puntos: 27 |
Tema: Cuadro de diálogo 'importar objetos' Enviado: 20/Junio/2019 a las 01:29 |
Hola:
Alguien sabe decirme cómo puedo invocar al cuadro de diálogo 'importar objetos' desde VBA? Necesito poder seleccionar gráficamente la tabla, consulta, etc. que quiero importar a la BD actual. |
|
jilo
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Colaborador Unido: 19/Diciembre/2004 Localización: TAFALLA Estado: Sin conexión Puntos: 959 |
Enviado: 20/Junio/2019 a las 08:24 |
hola Simbad, Esto es algo inusual, bajo mi experiencia. Me interesaría saber el propósito. Ya que si necesitas importar lo puedes hacer en modo diseño (sólo hay que hacer una importacion por objeto)y no dejas abierto a que nadie importe lo que no deba, por ejemplo. De todos modos, mira el método DoCmd.TransferDatabase el parametro acObjetType DoCmd.TransferDatabase (TransferType, DatabaseType, DatabaseName, ObjectType, Source, Destination, StructureOnly, StoreLogin) |
|
Espero te sirva !!!!!!
Iñaki |
|
simbad
Nuevo Unido: 10/Mayo/2006 Localización: España Estado: Sin conexión Puntos: 27 |
Enviado: 20/Junio/2019 a las 09:40 |
Hola jilo: Gracias por tu respuesta. La finalidad es, por ejemplo, poder importar (o vincular) una tabla de la que no se conoce el nombre con certeza. Mediante el método 'DoCmd.TransferDatabase...' es necesario darle un nombre 'fuente' que si no coincide con ninguno de los objetos devolverá 'error'. Lo que necesito es poder visualizar los objetos de la fuente para poder elegir el que necesito y así capturar su nobre para poder importarlo. Con el cuadro de diálogo entiendo que lo podría hacer desde un formulario en ejecución. El tema seguridad lo puedo garantizar con una contraseña de administrador para no dejar nada abierto y al azar, evitando que alguien pueda importar lo que no debe. Atentamente, Simbad.
|
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14734 |
Enviado: 20/Junio/2019 a las 11:47 |
DoCmd.RunCommand acCmdImportAttachAccess
En cualquier caso yo también tengo mis reservas en dejar esa puerta abierta a los usuarios.
|
|
simbad
Nuevo Unido: 10/Mayo/2006 Localización: España Estado: Sin conexión Puntos: 27 |
Enviado: 20/Junio/2019 a las 12:38 |
Gracias Xavi: Gracias a tu respuesta 'DoCmd.RunCommand acCmdImportAttachAccess' he encontrado la solución: 'DoCmd.RunCommand acCmdLinkTables' Respecto a la seguridad, insisto, la aplicación que desarrollo es para el administrador, es decir que los usuarios no tendran acceso a ella con lo que no debiera haber peligro. El administrador tendrá acceso a las tablas en modo vinculado para evitar que la aplicación de administración aumente de peso. Los usuarios, por su lado tendran su aplicación sin opciones de modificación ni de diseño. Gracias Xavi
|
|
simbad
Nuevo Unido: 10/Mayo/2006 Localización: España Estado: Sin conexión Puntos: 27 |
Enviado: 20/Junio/2019 a las 12:57 |
Upss!, en caso de pinchar en la opción cancelar del diàlogo salta el error '2501' (la acción RunCommand se canceló). ¿Como capturo la cancelación para decirle que acabe con End o Exit sub?, ¿sólo se puede hacer con control de errores?.
Editado por simbad - 20/Junio/2019 a las 13:02 |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14734 |
Enviado: 20/Junio/2019 a las 13:14 |
A mi lo que no me funciona es acCmdLinkTables....
|
|
simbad
Nuevo Unido: 10/Mayo/2006 Localización: España Estado: Sin conexión Puntos: 27 |
Enviado: 25/Junio/2019 a las 00:08 |
Siguiendo con el cuadro de diálogo para importar objetos, al usar 'DoCmd.RunCommand acCmdLinkTables', ¿es posible capturar el nombre de la tabla seleccionada?, ¿y la ruta a la BD de la tabla?
Gracias.
|
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14734 |
Enviado: 25/Junio/2019 a las 09:42 |
Hasta dónde yo se, los cuadros de dialogo de importaciones y asistentes varios creo que están asociados a un complemento llamado ACWMAIN (o algo parecido). Es posible que, destripando ese complemento, obtuvieras lo que buscas.
Personalmente, y viendo el control que pretendes implementar, me decantaría por crear mi propio asistente de vinculación. Tampoco es tan complicado. Un saludo |
|
buho
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Nada en la palabra Unido: 10/Abril/2004 Localización: Valladolid Estado: Sin conexión Puntos: 11330 |
Enviado: 25/Junio/2019 a las 10:15 |
Siempre puedes ver las tablas de una base de datos en una ruta conocida: Y las puedes cargar en un cuadro combinado, por ejemplo.
Y si las puedes cargar en un cuadro combinado, puedes seleccionarla. Y si la puedes seleccionar etc etc Mira este ejmplo. No es exactamente lo que buscas, pero lo podrías acoplar a tus necesidades. Quisiera tener en un formulario, todos los objetos que componen mi base de datos. Es decir, ver en unos cuadros combinados, todos los formularios, todos los reportes, las tablas etc e incluso dar opción al usuario para que interaccione con dichos objetos, les abra en modo diseño etc etc ¿Como se hace eso? http://www.mvp-access.es/buho/ficheros/estructura.zip << Todos los objetos de una MDB >>
En mi Web, seguro, encuentras las piezas para rellenar el Puzzle completo: Como localizar la BD donde están las tablas Como abrir esa BD y cargar en un combo las tablas. Una vez localizada una tabla...actuar.... Y como dice Xavi, en efecto, esos asistentes (Al menos existentes en Access 2003, desconozco ahora) daban bastante juego. Tambien en mi web existen ejempos de estos asistentes En cualquier caso, se puede hacer lo que pides, al margen de comandos de access. Y construirte tu tu propio asistente... |
|
El búho es un pajarraco
|
|
happy
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Moderador Unido: 29/Enero/2005 Localización: España Estado: Sin conexión Puntos: 3192 |
Enviado: 25/Junio/2019 a las 17:35 |
Intentar capturar un cuadro de diálogo de Windows o de Access y sus controles, junto con los valores y métodos ejecutables en ese cuadro de diálogo normalmente pasan por utilizar el API de Windows. Si no lo manejas bien, suele ser tedioso, difícil y seguramente no vale la pena liarse con tanta historia. Si quieres emular la utilidad de importar objetos de Access tampoco tendría que ser tan difícil: 1. Muestras el cuadro de diálogo de abrir ficheros con la utilidad del FileDialog del Office, poniendole el filtro para bases de datos access. 2. Una vez seleccionada la base de datos, abres una conexión (método DAO.OpenDatabase) con la base de datos y creas un objeto Database 3. Mediante la Database, capturas los nombres de las tablas de esa base de datos utilizando la colección TableDefs del objeto Database (un bucle For each ... Next) 4. Creas un formulario con un cuadro de lista y llenas el cuadro de lista con los nombres de las tablas 5. Capturas el nombre de la/s tabla/s que aparecen en el cuadro de lista. Ahora ya tendrás todos los ingredientes: - Ruta y nombre de la base de datos (Database.Name) - Nombre de la/s tabla/s seleccionada/s en el cuadro de lista 6. Usas el método que quieras para importar la tabla a tu base de datos Ya ves, sin complicaciones y utilizando métodos estandard de Access ... Espero que te sirva Editado: Por cierto, yo recuerdo haber visto el código interno de los asistentes de Access (estaban disponibles para la versión 97, pero creo que ya no circulan por ahí) y vi que los asistentes hacían servir una serie de funciones, módulos estandar y formularios de Access, todo hecho con herramientas propias de Access. Habían algunas excepciones, como el uso del API de Access y de Windows, así como algún objeto y controles de formularios no disponbiles normalmente. Pero ya digo, el resto, la gran mayoría de cosas estaban hechas con código VBA normal y objetos propios de Access.
Editado por happy - 25/Junio/2019 a las 17:42 |
|
Saludos,
Juan M. Afan de Ribera |
|
simbad
Nuevo Unido: 10/Mayo/2006 Localización: España Estado: Sin conexión Puntos: 27 |
Enviado: 28/Junio/2019 a las 10:36 |
Gracias a todos: Mi gozo en un pozo!. Ya me figuraba que no iba a resultar fácil. Sólo pretendía aprovechar el diálogo para ahorrar tiempo. Pero meterse en en lo meandros de las APIs hace difícil lo fácil. Probaré con las soluciones que me dais para manejar los objetos. No es muy complicado. Gracias a todos.
|
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |