Ich habe folgenden Code-Block, der perfekt für OpenOffice SDK funktioniert, um Seriendruck-Funktionalität zu automatisieren.Seriendruck mit Libre Office mit .net
Public Function runQueryOnDataSource(ByVal nameOfdDtaource As String, ByVal query As String) As Boolean
strLog = strLog + vbCrLf + Now.ToString() + ": runQueryOnDataSource nameOfdDtaource:" + nameOfdDtaource + ",query:" + query + "-Started"
Dim oDB As Object, oBase As Object
Dim oStatement As Object
Dim rSQL As String
Dim oRequete As Object
Dim oServiceManager As Object, CreateUnoService As Object
Try
'Creation instance Open office
oServiceManager = CreateObject("com.sun.star.ServiceManager")
CreateUnoService = oServiceManager.createInstance("com.sun.star.sdb.DatabaseContext")
mxMSFactory = (uno.util.Bootstrap.bootstrap()).getServiceManager()
oDB = CreateUnoService.getByName(nameOfdDtaource) 'oDB=XDataSource
'Connection
oBase = oDB.getConnection("", "") 'oBase=XConnection
oStatement = oBase.createStatement 'XStatement
'rSQL = "SELECT * FROM ""26_MailMergeResult_DEMO"
rSQL = query
oRequete = oStatement.execute(rSQL)
Return True
Catch ex As Exception
strLog = strLog + vbCrLf + Now.ToString() + ": Exception" + ex.ToString()
Throw ex
Finally
oDB = Nothing
oBase.Close()
oBase.Dispose()
End Try
strLog = strLog + vbCrLf + Now.ToString() + ": runQueryOnDataSource-Finished"
Return True
End Function
Above-Code verwendet wird, um Daten in die Datasource mit libre office.But nun bereits registriert einfügen, wenn ich versuche, es zu benutzen, Zeile oServiceManager = CreateObject("com.sun.star.ServiceManager")
erzeugt Fehler „Fehler beim Erstellen der ActiveX-Objekt“. Hat jemand eine Idee, wie ich das beheben kann.
Ich habe folgende Modifikation vorgenommen dem obigen code.'m_xContext uno.util.Bootstrap.bootstrap =() = mxMSFactory Direct (m_xContext.getServiceManager(), XMultiServiceFactory) databaseContext = mxMSFactory.createInstance ("com.sun .star.sdb.DatabaseContext ") Dim databaseNames Als container.XNameAccess = DirectCast (databaseContext, container.XNameAccess) oDB = databaseNames.getByName (nameOfdDtaource)'. Jetzt bekomme ich den Laufzeitfehler "Öffentliches Mitglied 'getConnection' vom Typ 'Any' not found." –
Ein Wenn ich 'oDB = databaseNames.getByName (nameOfdDtaource) in oDB = DirectCast (databaseNames.getByName (nameOfdDtaource), XDat aSource)' I get "Wert des Typs 'Any' kann nicht in 'XDataSource' konvertiert werden". –