Buenos días:
Tengo un formulario en BASE que obtiene datos de una tabla (Equipo, Marca, Modelo) y necesito crear un botón y asociarle una macro para exportarlo a pdf con el nombre de archivo de valor "Equipo". El formulario tiene un botón de búsqueda por Equipo que devuelve los demás valores. ¿Qué tendría que modificar en el código?
sub PDF
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///C:/temp/Form.pdf"
args1(1).Name = "FilterName"
args1(1).Value = "writer_pdf_Export"
dispatcher.executeDispatch(document, ".uno:ExportDirectToPDF", "", 0, args1())
end sub
Sub sInicio(Event As Object)
With ThisDatabaseDocument.CurrentController
If Not .IsConnected Then .Connect
End With
ThisDatabaseDocument.FormDocuments.GetByName("Formulario").Open
End Sub
Sub BotonBusquedaEquipo(Event As Object)
Dim Form As Object
Form=Event.Source.Model.Parent
Form.Filter="UPPER(""Equipo"") LIKE '%" & UCase(InputBox("Introduzca equipo a buscar:","Búsqueda por equipo","")) & "%'"
Form.Reload
End Sub
Function fNoRegistrosFormulario(Form As Object) As Integer
Dim vNoR As Integer
Dim oClonRS As Object
oClonRS=Form.CreateResultSet()
If oClonRS.Last Then
vNoR=oClonRS.Row + 1
Else
vNoR=0
End If
fNoRegistrosFormulario=vNoR
End Function
Muchas gracias
Última edición por elbudoka el Lun Jul 02, 2018 10:03 am, editado 2 veces en total.
A lo que entiendo que necesitas, que obtener el nombre del Equipo para asignarselo al nombre del archivo pdf. Esto creo que te puede valer. Si no es así, lo mejor es que muestres un pequeño ejemplo de como lo tienes hecho.
Global sEquipo As String
Sub BotonBusquedaEquipo(Event As Object)
Dim Form As Object
Form=Event.Source.Model.Parent
sEquipo = InputBox("Introduzca equipo a buscar:","Búsqueda por equipo","")
Form.Filter="UPPER(""Equipo"") LIKE '%" & UCase(sEquipo) & "%'"
Form.Reload
End Sub
sub PDF
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///C:/temp/" & sEquipo &".pdf"
args1(1).Name = "FilterName"
args1(1).Value = "writer_pdf_Export"
dispatcher.executeDispatch(document, ".uno:ExportDirectToPDF", "", 0, args1())
end sub
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Hola RMG,
Gracias por tu aportación.
No obstante, como lo has resuelto devuelve el valor que se ha introducido en el campo búsqueda (que podría ser incompleto ya que se puede hacer una búsqueda parcial) no el valor del campo que se muestra en el formulario después de hacer la búsqueda. En el ejemplo adjunto, si buscara por Equipo "1" devolvería el valor Equipo "11", no obstante lo exportaría como 1.pdf.
Sub BotonBusquedaEquipo(Event As Object)
Dim Form As Object
Form=Event.Source.Model.Parent
Form.Filter="UPPER(""Equipo"") LIKE '%" & UCase(InputBox("Introduzca equipo a buscar:","Búsqueda por equipo","")) & "%'"
Form.Reload
sEquipo = Form.fmtEquipo.BoundField.Value
End Sub
Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Gracias RMG.
He intentado replicar el comando para obtener otro valor del formulario ("Marca") y concaternarlo al nombre del pdf pero no he tenido éxito.
¿Me lo podría indicar?
Muchas gracias