' Tests um Abfrage zu öffnen
Option Explicit
Global oDBDok as Object ' Datenbankobjekt
Global oDBVer as Object ' Datenbankverbindung
Sub sub_004
Dim sDBUrl as String ' URL der Datenbank
Dim oBaseContext
sDBUrl = ConvertToUrl(".............\db-V01_00.odb")
oBaseContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
oDBDok = oBaseContext.getByName(sDBUrl)
oDBVer = oDBDok.getConnection("", "")
OeffneView("Abfrage_Adressen_Bauteil_Daten")
'DisplayMethods(oDBdok, "P")
End Sub
Function OeffneView(sFormName as string) as variant
Dim args(1) As New com.sun.star.sdb.Queries
Dim oForm as Object
args(0).Name = "ActiveConnection"
args(0).Value = oDBVer
args(1).Name = "OpenMode"
args(1).Value = "open"
oForm = oDBCon.loadComponentFromURL(sFormName,"_blank",0,args())
End Function
So geht es nicht!
Fehler: ungültige Objektreverenz
Hat jemand ein Beispiel oder kann mir meinen Fehler erklären?
Meine Lösung ist, erstellen eines Formulars aus der Abfrage.
Zum ändern des Abfrage-Ergebnisses wird der SQL der Abfrage überschrieben und dann das Formular geöffnet.
REM ***** BASIC *****
' Tests um Abfrage zu öffnen
Option Explicit
Global oDBDok as Object ' Datenbankobjekt
Global oDBVer as Object ' Datenbankverbindung
Global oDBCon as Object
Sub sub_004
Dim sDBUrl as String ' URL der Datenbank
Dim oBaseContext as Object
Dim oDBQueries as Object
sDBUrl = ConvertToUrl("...............\db-V01_00.odb")
oBaseContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
oDBDok = oBaseContext.getByName(sDBUrl)
oDBVer = oDBDok.getConnection("", "")
oDBCon = oDBDok.DataBaseDocument.getFormDocuments()
oDBQueries = oDBVer.Queries(1)
Dim SQL as String
SQL = "SELECT ""Bauteil"".""Beschreibung"", ...... ""Adressen"".""ID"" = 6 ORDER BY ""Adressen"".""Kundennummer"" ASC, ""Bauteil"".""Beschreibung"" ASC"
oDBQueries.command =SQL
OeffneView("Abfrage_Adressen_Bauteil_Daten")
End Sub
Function OeffneView(sFormName as string) as variant
Dim args(1) As New com.sun.star.beans.PropertyValue
Dim oForm as Object
args(0).Name = "ActiveConnection"
args(0).Value = oDBVer
args(1).Name = "OpenMode"
args(1).Value = "open"
oForm = oDBCon.loadComponentFromURL(sFormName,"_blank",0,args())
End Function