Haz tu Pregunta
0

Lectura del contenido del campo clave

preguntado 2019-10-25 10:09:28 +0100

Imagen Gravatar de FranNavarro9999

Hola, buenos días,

En Base, ¿cómo hago para que una macro LibreOffice Basic lea (e inserte en una orden) el contenido del campo clave del registro donde me encuentro? Por ejemplo, insertar el nombre de la carpeta en esta instrucción (el contenido del campo clave sería el nombre de la carpeta, distinto en cada registro):

Shell "explorer " & "C:\MisArchivos\Extraterrestres\Galimatías\Carpeta_Final", vbNormalFocus

Muchas gracias. Un saludo. Fran.

edit re-etiquetar marcar como ofensivo cerrar fusionar delete

1 Responder

Ordenar por » viejos nuevas más votado
0

respondido 2019-10-25 10:50:41 +0100

Imagen Gravatar de Longi

updated 2019-10-29 12:20:06 +0100

Suponiendo que el campo que quieres usar sea un campo de texto:

Sub Alfa  
Conn = ThisDatabaseDocument.CurrentController.ActiveConnection  
' Conectamos para recoger los datos de las tablas  
oStat=Conn.createStatement()  
' Creación de la conexión  
 Form=ThisComponent.Drawpage.Forms.getByName("Nombre_De_Mi_Formulario")  
' Formulario desde el que vamos a trabajar    
 Campo= Form.getByName("Nombre_del_Campo")  
' Campo del que queremos recoger el contenido  
 Clave= Campo.Text  
' Texto incluido en el campo  
 Shell "explorer " & "C:\MisArchivos\Extraterrestres\Galimatías\" & Clave, vbNormalFocus  
' Abrimos la carpeta específica  
End sub

Si quieres usar números, entonces usa Cint(Campo.text)
Esperemos que funcione.

Un saludo!

Ejemplo de aplicación:

C:\fakepath\Base de datos nueva.odb

edit marcar como ofensivo delete enlace mas

Comments

Disculpa @Longi, lo he editado porque salian las líneas entrecortadas.

Imagen Gravatar de m.a.riosv m.a.riosv ( 2019-10-25 11:00:30 +0100 )edit

Aún no me aclaro mucho cómo funcionan las herramientas del foro, así que poco a poco. Gracias!

Imagen Gravatar de Longi Longi ( 2019-10-25 11:01:44 +0100 )edit

Ahora no salen entrecortadas pero mal coloreadas, en fin.

Imagen Gravatar de m.a.riosv m.a.riosv ( 2019-10-25 11:03:03 +0100 )edit

Muchas gracias Longi. Me da error de "Variable del objeto Conn no establecida".

Por favor, ayúdame a definir las variables. Dime cómo y dónde se hace. Muchas gracias. Fran.

Imagen Gravatar de FranNavarro9999 FranNavarro9999 ( 2019-10-25 13:04:43 +0100 )edit

Normalmente no estoy usando Firebird. Estoy trabajando con cosas que ya tenía hechas, pero, por si acaso, hice una nueva base en Firebird, no la registré (por si ese era el problema), la usé con un botón y con una combinación de teclas y siempre me funcionó. Supongo que no es eso, pero la macro hay que llamarla con el formulario abierto, no desde el bloque de código, por eso un botón ayuda mucho, llamando a la macro desde el evento botón del ratón pulsado o bien el soltado. Sin un ejemplo para ver dónde la aplicaste no te puedo ayudar mucho. Otro saludo!

Imagen Gravatar de Longi Longi ( 2019-10-25 17:24:16 +0100 )edit

Gracias Longi. El error se produce desde todos sitios. Pulso la tecla F4 desde una tabla abierta y con datos y con un registro seleccionado, y también desde una consulta y desde un formulario (abiertos y con datos). Y se muestra “Error de ejecución de BASIC. Variable de objeto no establecida” en la primera línea de la macro: Conn = ThisDatabaseDocument.CurrentController.ActiveConnection

¿No habría que definir el tipo de la variable Conn y del resto de variables?

Imagen Gravatar de FranNavarro9999 FranNavarro9999 ( 2019-10-28 11:47:24 +0100 )edit

Is macro se ejecuta preferentemente desde un botón en un formulario, el cual te está mostrando un registro. Haces un formulario basado en tabla o consulta, añades un botón, y le asignas la macro. Cierras el modo de diseño. Según ei registro en el que esté el formulario te abrirá una carpeta u otra. Al estar el formulario abierto ya tienes hecha la conexión. No lo hay como un ejemplo!

Imagen Gravatar de Longi Longi ( 2019-10-28 14:02:30 +0100 )edit

Gracias Longi. Pulso la tecla F4 desde un registro (con datos) del formulario abierto, así que debería ser lo mismo. De todas formas, estoy intentando probarlo con botón. Estoy buscando en el modo diseño y en el manual, y no sé insertar un botón, ¿cómo se hace?

Imagen Gravatar de FranNavarro9999 FranNavarro9999 ( 2019-10-28 14:36:10 +0100 )edit

Buenas! En mi respuesta inicial he añadido una base de ejemplo de cómo aplicarlo (No sé todavía bien cómo van las normas del foro, pero parece que solo deja una respuesta por persona, y en los comentarios no deja añadir adjuntos, así que edité mi única posible respuesta y te puse allí el ejemplo. A ver si así se ve mejor lo que hice!) El campo clave es 'Comarca', y te sale en un msgbox, luego tendrías que modificar la macro para que quede como la del ejemplo, es decir, en vez de salir en el msgbox, que te abra la carpeta en cuestión. En cuanto a lo del botón tienes que abrir en modo diseño el formulario, y en la barra de controles de formulario tienes el botón. Lo arrastras y después en propiedades lo cocinas para lo que quieres hacer. Si la barra no la tienes visible, vete ...(mas)

Imagen Gravatar de Longi Longi ( 2019-10-29 12:26:11 +0100 )edit

Esa es la idea, editar la contestación cuando sea el caso, yo lo que suelo hacer es añadir una línea antes de la edición indicando la fecha 'editada 2019-10-29' por ejemplo.

Imagen Gravatar de m.a.riosv m.a.riosv ( 2019-10-29 19:56:52 +0100 )edit
Ingresa/Regístrate para Contestar

Herramientas de Preguntas

1 seguidor

Estadisticas

Preguntado: 2019-10-25 10:09:28 +0100

Visto: 29 veces

Ultima actualización: Oct 29