Formulare oder Berichte aus Formularen läuft nun ohne Probleme. Der nächste Schritt wäre ein STARTER-Formular über denn alle anderen bequem zu erreichen sind. Darin enthalten sind Buttons für sämtliche Formulare und noch dynamisch erzeugte Infos, die dem Benutzer Hinweise geben, welche Aufgaben "dringend" sind. Aber das ist hier nur halb so wichtig.
Nun möchte ich dem Benutzer eine Schaltfläche in der Toolbar von Base einrichten, über die das STARTER-Formular direkt zu erreichen ist. Es wird halt so gewünscht, jeder Klick spart Zeit.
Ich habe nun stundenlang versucht dahinter zu kommen, wie ich es mit einem Macro schaffe ein Formal zu öffnen. Aber die Ergebnisse sind enttäschend.
Fall 1:
Zunächst der Code:
Code: Alles auswählen
Sub openForm1
Dim Context AS Object
Dim Conn As Object
Dim DB As Object
Dim FormDoc As Object
Dim Args(1) As New com.sun.star.beans.PropertyValue
Dim FormName As String
FormName = "STARTER"
Context=CreateUnoService("com.sun.star.sdb.DatabaseContext")
DB=Context.getByName("test_db")
Conn=DB.getconnection("","")
Args(0).Name="ActiveConnection" : Args(0).Value=Conn
Args(1).Name="OpenMode" : Args(1).Value="open"
FormDoc=DB.DatabaseDocument.FormDocuments.loadComponentFromURL(FormName,"_self",2,Args) REM << BASIC-Laufzeitfehler.
FormDoc.CurrentController.Frame.ContainerWindow.setFocus()
End Sub
Meine Vermutung ist, dass das Property "ActiveConnection" nicht ok ist. Kennt sich jemand mit BASIC und Base aus und könnte mir bitte erklären, was da schief läuft?BASIC-Laufzeitfehler.
Es ist eine Exception aufgetreten
Type: com.sun.star.lang.IllegalArgumentException
Message:.
Kann das jemand teste, vielleicht habe nur ich diesen Fehler?!
Fall 2:
Der Code:
Code: Alles auswählen
Sub openForm2
Dim pProp(1) As New com.sun.star.beans.PropertyValue
sURL = ConvertToURL("F:\test_db.odb")
oDoc = starDesktop.loadComponentFromURL(sURL,"_blank",0,Array())
oForms = oDoc.getFormDocuments()
oAConnection = oDoc.DataSource.getConnection("","")
pProp(0).Name = "ActiveConnection"
pProp(0).Value = oAConnection
pProp(1).Name = "OpenMode"
pProp(1).Value = "open" ' OR: openDesign
oFormulario = oForms.loadComponentFromURL("STARTER","_blank",0,pProp())
End Sub
Erstens wird die URL zur Base-Datei absolut angegeben, was nicht akzeptabel ist. Aber schlimmer noch ist, die Tatsache, dass "starDesktop.loadComponentFromURL(...)" eine neue Instanz von Base öffnet und darin dann das Formular. Ein doppeltes Fenster ist überhaupt nicht akzeptabel.
Bitte um Hilfe, ich komme hier überhaupt nicht weiter!
Danke im Voraus und schöne Grüße!
Alex