Tem como fazer isso sim…
Vc deve criar o form dentro dele uma combobox ou controle onde terá o critério que defina um valor a ser filtrado, e também inserir um subform com uma grid (controle de tabela ) baseado numa consulta onde esse “critério” irá filtrar os registros exibidos, aí uma vez que vc selecione um valor na combo e a grid exiba os resultados da consulta, vc pode criar um botão com uma instrução de abrir relatório baseado nessa consulta.
Na prática vc vai abrir o form escolher um filtro para consulta através da combo e ao imprimir o relatório, ele se baseará na consulta já filtrada.
Segue a macro, adapte a sua necessidade…
Sub filtrar 'nome da macro
Declaração de variáveis
Dim Form1, SubForm_1, oConsulta, cmb_combo, cons_subtab, As Object, sSQL As String
'Associar controles dos forms ( principal e subform ) as varáveis
' Nome do form principal
Set Form1=Forms("frm_principal")
' Trata o subform como um controle (nome do subform )
Set SubForm_1 = Form1.Controls("Subform")
' declara a grid (controle de tabela ) que fica dentro do subform
Set cons_subtab = SubForm_1.form.Controls("Controle_de_tabela_1")
' declara o controle combobox do form principal
Set cmb_combo=Form1.Controls("cmb_principal")
' declara a consulta que será a origem dos dados do grid ( controle de tabela ) do subform associado ao form principal
oConsulta = ThisDatabaseDocument.DataSource.QueryDefinitions.getByName ("cons_subtab_pesquisa")
'filtra a consulta pelo valor do campo do registro selecionado na combobox e mais a frente atualiza o form
sSQL = "SELECT FROM `tab_minha tabela` WHERE `meu_campo` = (' " & cmb_combo.Value & " ');"
' executa ainstrução SQL
RunSQL(sSQL)
' após a atualização a combo fica em branco para uma nova operação se desejável
cmb_combo.Value=""
' Atualiza o formulário e seus controles
Form1.Requery
macro para configurar aberturas de relatórios:
REM Macro generica para abrir qualquer report ( relatótio )
function getConnectionTC() as variant
getConnectionTC = thisComponent.Drawpage.Forms(0).ActiveConnection
end function
function OpenReport( reportContainer as variant, oConnection as variant, sReportName as string) as variant
Dim aProp(1) As New com.sun.star.beans.PropertyValue
aProp(0).Name = "ActiveConnection"
aProp(0).Value = oConnection
aProp(1).Name = "OpenMode"
aProp(1).Value = "open"
OpenReport=reportContainer.loadComponentFromURL(sReportName,"_blank",0,aProp())
end function
function getReportsTC() as variant
getReportsTC = thisComponent.Parent.getReportDocuments
end function
Macro para abrir o relatório específico
sub OpenReport_rel_licenca_sw( oEv as variant )
sReportName="rel_licenca_sw" ' Mude aqui o nome do seu Report
OpenReport( getReportsTC, getConnectionTC, sReportName )
end sub
Espero ter ajudado