[Risolto] Aprire Rapporti da Formulari

Discussioni sulle caratteristiche di database
Rispondi
cecchinotto
Messaggi: 4
Iscritto il: giovedì 25 novembre 2010, 18:10

[Risolto] Aprire Rapporti da Formulari

Messaggio da cecchinotto »

Ciao, ho utilizzato la seguente Macro per poter aprire un rapporto con tasto in un formulario:

Sub Main
nometuoreport="articoliProva"
ApriReportPernome(nometuoreport)
End Sub
'________________________________________________
Sub ApriReportPernome(nome)
pip = thisComponent.Parent.getReportDocuments
Dim ReportPropArgs(1) As New com.sun.star.beans.PropertyValue
ReportPropArgs(0).Name = "ActiveConnection"
ReportPropArgs(0).Value=thisComponent.Drawpage.Forms(0).ActiveConnection
ReportPropArgs(1).Name = "OpenMode"
ReportPropArgs(1).Value = "open"
penReport1 = pip.loadComponentFromURL(nome,"_blank",8,ReportPropArgs())
End Sub


dove al posto di nometuoreport va inserito il nome del rapporto, ma la riga

pip = thisComponent.Parent.getReportDocuments

mi da il seguente errore :
Proprietà o metodo non trovati: Parent

Qualcuno sa come rimediare?
Grazie
Ciao
Ultima modifica di cecchinotto il giovedì 9 dicembre 2010, 10:14, modificato 1 volta in totale.
r.vanoni
Messaggi: 35
Iscritto il: lunedì 29 novembre 2010, 15:40

Re: Aprire Rapporti da Formulari

Messaggio da r.vanoni »

Io ho inserito questa macro per richiamare il Rapporto da un Formulario. Ho notato che se la macro è attivata da un pulsante creato sul formulario funziona benissimo mentre se la chiami da Strumenti>Macro>Esegui macro etc.. non funziona evidenziando il messaggio di errore Proprietà o metodo non trovati:Parent. Come dice Martello che cito: "Io ho fatto le prove lanciandola direttamente dal documento .odb. Lanciandola da un formulario thisComponent potrebbe non essere riferita al documento .odb ma al documento formulario stesso e quindi potrebbe non andare."
Se il tuo problema è risolto aggiungi Risolto! al titolo.
Ciao Riccardo

Codice: Seleziona tutto

REM istruzioni per aprire un rapporto presente nel file.odb DA PULSANTE PRESENTE NEL FORMULARIO
REM attenzione funziona solo se la macro è chiamata da un pulsante creato nel formulario

Sub Apri_rapporto
nometuoreport="metti_il _nome_del_rapporto"
ApriReportPernome(nometuoreport)
End Sub
'________________________________________________
Sub ApriReportPernome(nome)
pip = thisComponent.Parent.getReportDocuments
Dim ReportPropArgs(1) As New com.sun.star.beans.PropertyValue
ReportPropArgs(0).Name = "ActiveConnection"
ReportPropArgs(0).Value=thisComponent.Drawpage.Forms(0).ActiveConnection
ReportPropArgs(1).Name = "OpenMode"
ReportPropArgs(1).Value = "open"
penReport1 = pip.loadComponentFromURL(nome,"_blank",8,ReportPropArgs())
End Sub
Windows 10 - Apache OpenOffice 4.1.8
r.vanoni
Messaggi: 35
Iscritto il: lunedì 29 novembre 2010, 15:40

Re: Aprire Rapporti da Formulari

Messaggio da r.vanoni »

In alternativa ho trovato anche questa macro che funziona sempre se attivata da un pulsante sul formulario:
Ringrazio Augusto Scatolini e il suo progetto biblioteca dal quale ho copiato questo codice
indirizzo web http://www.comunecampagnano.it/gnu/bibl ... /index.htm

Codice: Seleziona tutto

REM procedura alternativa---------------------------------------------------------------------- 

sub nome_macro( oEv as variant ) 
OpenReport( getReportsTC, getConnectionTC, "nome_tuo_rapporto" ) 
end sub 

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 ----------------------------------------------------------------------------------------------
Ciao e buon lavoro
Windows 10 - Apache OpenOffice 4.1.8
cecchinotto
Messaggi: 4
Iscritto il: giovedì 25 novembre 2010, 18:10

Re: Aprire Rapporti da Formulari

Messaggio da cecchinotto »

Grazie mille, ho risolto con il secondo metodo che hai consigliato. Il primo mi da errore nell'ultima riga
penReport1 = pip.loadComponentFromURL(nome,"_blank",8,ReportPropArgs())

Grazie Ancora
Ciao

edit:
questa macro non funziona se si vogliono aprire più report, almeno io non ci sono ruscito, sono arrivato a modificare le variabili ma mi compaiono altri errori
in alternativa c'è questa

sub rep_case
ThisDatabaseDocument.reportDocuments.getbyname("case").open
end sub
Openoffice 3.2.1 su Debian
Rispondi