V Base nejde volat formuláře a sestavy odkazem, jako v Calku což je škoda. Ani z jiné aplikace jsem nenašel postup, jak vyvolat formulář v Base bez makra. Ve své aplikaci používám na volání formuláře a sestavy následující makra:
Sub OpenReport(sName)
'Otevre nahled sestavy
oContexto = CreateUnoService("com.sun.star.sdb.DatabaseContext")
oFonte = oContexto.getRegisteredObject("FAKTURY") 'registrovana databaze
oReports = oFonte.DatabaseDocument.ReportDocuments
oAConnection = oFonte.getConnection("","")
dim pProp(1) as new com.sun.star.beans.PropertyValue
pProp(0).Name = "ActiveConnection"
pProp(0).Value = oAConnection
pProp(1).Name = "OpenMode"
pProp(1).Value = "open"
oReport = oReports.loadComponentFromURL(sName,"_blank",0,pProp()) 'nahled sestavy
end sub
Sub OpenForm(sName)
'Otevre formular
oContexto = CreateUnoService("com.sun.star.sdb.DatabaseContext")
oFonte = oContexto.getRegisteredObject("FAKTURY")
oForms = oFonte.DatabaseDocument.FormDocuments
oAConnection = oFonte.getConnection("","")
Dim pProp(1) As New com.sun.star.beans.PropertyValue
pProp(0).Name = "ActiveConnection"
pProp(0).Value = oAConnection
pProp(1).Name = "OpenMode"
pProp(1).Value = "open"
oForm = oForms.loadComponentFromURL(sName, "_blank", 0, pProp())
End Sub
Databáze musí být zaregistrovaná a při volání procedury se za sName dosadí jméno formuláře (sestavy). Pokud formuláře organizujete do skupin (adresářů), tak musí být dosazena kompletní cesta. Pozor, původní formulář, do kterého se vrátíte po zavření volaného formuláře je nejprve potřeba obnovit před dalším zpracováním dat.