Oi galera, meu dilema é o seguinte:
Quando eu crio uma consulta e um relatório baseado nela, se eu abri-los clicando direto no objeto, abre, tá tudo ok, mas ao criar macros que abrem o relatório através de um botão por exemplo, se o relatório abrir direto o Libreoffice “trava”, ou seja, abre o LibreOffice Write ( é ele que exibe os relatórios do Base ) com tela totalmente em branco e fica assim “ad eternum”, notei que tem que “conectar”, abrir a consulta em que o relatório se baseia “na mão” para abrir uma conexão antes, para que assim que o relatório for aberto ele possa puxar os dados e abrir normalmente.
Para tentar corrigir isso eu criei nos formulários um controle de tabela ( Grid ) baseado em consultas qe geram esses relatórios e ao clicar no botão imprimir, uso sql dentro da macro para atualizar o grid, para ver se ao fazer essa conexão para atualizar os dados, o relatório abriria normalmente, e a princípio funcionou.
Mas se eu Reiniciar o pc e entrar de novo no Base, abrir o form e clicar direto em imprimir, mesmo ele atualizando o subform com a grid, trava tudo de novo na hora em que o Write é carregado.
ou seja, se eu previamente abrir as conexões as consultas tudo funciona, mas se for a primeira vez que uso o libre trava pq?
segue as macros:
1 - 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
2 - Macro para abrir forms específicos:
sub OpenForm_frm_menu( oev as variant ) Dim Form1, cons_subtab, oConsulta As Object Set Form1=Forms("frm_menu") Set cons_subtab = Form1.Controls("Controle de tabela 1") oConsulta = ThisDatabaseDocument.DataSource.QueryDefinitions.getByName ("cons_software_falta_licenca") oConsulta.Command = "SELECT `nome` AS `nome`, `label_original` AS `label_original`, `label_backup` AS `label_backup`, `total_licencas_adquiridas` AS `total_licencas_adquiridas`, `licencas_restantes` AS `licencas_restantes`, `tipo` AS `tipo`, `versao` AS `versao`, `midia` AS `midia`, `fornecedor` AS `fornecedor`, `usuario` AS `usuario`, `proprietario` AS `proprietario`, `documentacao` AS `documentacao`, `plataforma` AS `plataforma`, `aplicabilidade` AS `aplicabilidade`, `manuais` AS `manuais`, `data_criacao` AS `data_criacao`, `data_cadastro` AS `data_cadastro`, `finalidade` AS `finalidade`, `obs` AS `obs` FROM `c06`.`tab_software` AS `tab_software` WHERE `licencas_restantes` < '0' ORDER BY `licencas_restantes` DESC" Form1.Requery end sub
3 - Macro para abrir reports específicos:
sub OpenReport_rel_licenca_falta( oEv as variant ) sReportName="rel_licenca_falta" ' Mude aqui o nome do seu Report OpenReport( getReportsTC, getConnectionTC, sReportName ) end sub
Alguém aki pode me dizer como faço para abrir a conexão com a consulta ( embora já faço isso ), para abrir o relatório sem bug? Só adianta clicando nas consultas nas janelas dos objetos, mas se deixar tudo por macro na primeira vez que usa o LibreOffice Base fica em branco…
Desde já agradeço.