Macro para abrir relatório com bug. [RESOLVIDO]

1. Macro para abrir relatório com bug. [RESOLVIDO]

Luiz Carlos
luizcarlos18rj

(usa Suse)

Enviado em 25/08/2014 - 10:05h

Oi galera...

Na trabalhosa tentativa de migrar sistemas de cadastros do MsAccess para o Libreoffice basic de dei de frente com os seguintes problemas:

- Ao criar uma macro para abrir um relatório, o mesmo fica "Ad Eternum", processa e nunca abre;

- Estranhamente se previamente eu abrir com duplo click no bd o objeto relatório, uma vez aberto e fechado, a macro funciona normalmente, ela consegue através do evento onclick do botão de pressão abrir o mesmo, mas se eu executar o banco na primeira vez e for direto pressionar o botão, tenta, tenta, tenta abrir e nunca que consegue.

Segue dois códigos diferentes para realizarem a mesma ação ( mas ambos não funcionam a contento):

rem-------------------------------------------------------------------------

`Função apra abrir qualquer relatório

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

rem-------------------------------------------------------------------------

`Função para abrir já um relatório específico

sub OpenReport_rel_microcomputadores( oEv as variant )
sReportName="rel_microcomputadores" ' Nome do Report
OpenReport( getReportsTC, getConnectionTC, sReportName )
end sub
rem-------------------------------------------------------------------------

Código 2

rem-------------------------------------------------------------------------
Function OpenReport( formContainer as variant, oConnection as variant, sFormName as string, optional strMode as string ) as variant
Dim aProp(1) As New com.sun.star.beans.PropertyValue
dim openMode as string

if ismissing( strMode ) then
openMode = "open"
else
openMode = strMode
endif
aProp(0).Name = "ActiveConnection"
aProp(0).Value = oConnection
aProp(1).Name = "OpenMode"
aProp(1).Value = strMode
OpenReport = formContainer.loadComponentFromURL(sFormName,"_blank",0,aProp())
End Function
rem-------------------------------------------------------------------------

Alguém sabe porque isso pode estar acontecendo?



Minha versão do Libre é pt-br Versão: 4.2.5.2


  


2. A gambiarra foi essa

Luiz Carlos
luizcarlos18rj

(usa Suse)

Enviado em 03/09/2014 - 10:25h

Abrir um form qualquer que contem os dados do rel que quero visualizar para "forçar" o acesso a base de dados, uma vez feito isso o relatório abre normalmente.

Coloquei um aviso sobre essa questão no form de seleção de relatórios a ser visualizado, mas alguém tem alguma sugestão de como "forçar" a leitura da base de forma automática, antes de abrir o relatório em questão?

Desde já agradeço...






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts