Lectura del contenido del campo clave

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.

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:

Base de datos nueva.odb

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

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

Ahora no salen entrecortadas pero mal coloreadas, en fin.

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.

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!

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?

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!

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?

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 a menu, ver, Barras de herramientas’, Controles de formulario.

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.

Muchas gracias Longi. También he podido ejecutar tu macro pulsando la tecla F4. ¿Cómo se modifica esta línea para que funcione en tablas y consultas?

Form=ThisComponent.Drawpage.Forms.getByName(“MainForm”)

Muchas gracias. Un saludo.

Otra pregunta: ¿Por qué no funciona la macro si pongo “COMARCAS” o “txtCOMARCAS” como nombre del formulario en la macro, en vez de “MainForm”? Es decir, ¿cómo se ponen, en las macros, los nombres de los formularios, tablas y consultas?
Muchas gracias. Saludos.