Muy buenas a todos, espero que alguien me pueda ayudar a resolver lo siguiente:
Quiero crear un formulario que finalmente acabe teniendo la apariencia de un documento en pdf.
En ese formulario hay varios campos a rellenar, y mi idea es que, al seleccionar uno principal de tipo lista desplegable, en el que aparece una lista con nombres de personas, automáticamente se autorellenen varios campos de tipo cuadro de texto. En esos campos, dependientes del primero, aparecerían por ejemplo su DNI, su puesto de trabajo, su colectivo laboral, etc.
Me imagino que tendré que tirar de una base de datos, que ya la tengo preparada, pero no sé cuál es el procedimiento para conseguir esto, si es que se puede llevar a cabo.
Adjunto una imagen del formulario par que veáis cómo es.
Me parece más un trabajo para hacer en Calc, y sin macros.
Podrias intentarlo mediante el siguiente procedimiento:
En Writer de LibreOffice Writer activa la Barra de controles de formulario, Ver —> Barras de herramientas —> Controles de formulario.
Acontinuación inserta una lista desplegable, y añade los campos de texto que quieres completar automáticamente con la información.
Ahora, deberías conectar el Formulario a tu Base de Datos, Herramientas —> Base de datos —> Orígenes de datos… y registra tu base de datos. Selecciona el control de la lista desplegable y conz clic derecho accede a Propiedades del control, en la pestaña Datos, selecciona la base de datos registrada, selecciona la tabla o consulta que contiene los nombres para la lista desplegable.
Para que se autorellenen los otros campos al seleccionar el nombre, deberías crear una macro, algo así como:
Sub AutorrellenarCampos(oEvent)
Dim oForm As Object
Dim sNombre As String
Dim oDatos As Object
oForm = oEvent.Source.Model.Parent ' Obtiene el formulario principal
sNombre = oForm.getByName("NombreDesplegable").Text ' Obtiene el nombre seleccionado
' Conecta a la base de datos y busca el registro correspondiente
oDatos = ThisComponent.DataBaseForms.getByName("MiFormulario")
oDatos.Filter = "Nombre = '" & sNombre & "'"
oDatos.Reload()
' Autorrellena los campos de texto con los datos asociados
oForm.getByName("CampoTexto1").Text = oDatos.getByName("CampoBaseDeDatos1").Text
oForm.getByName("CampoTexto2").Text = oDatos.getByName("CampoBaseDeDatos2").Text
End Sub
Una vez creada la macro, en la lista desplegable selecciona Asignar macro... y asigna la macro creada al evento de cambio de valor del control de la lista desplegable.
Una vez funcionamiento la creación del formulario debes exportarlo como PDF interactivo Archivo ---> Exportar como ---> Exportar como PDF..., con la opción Crear formulario PDF activa.