다음 코드 블록은 OpenOffice SDK에서 편지 병합 기능을 자동화하기 위해 완벽하게 작동합니다. 코드 위편지함을 사용하여 Libre Office와 병합합니다.
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
는 내가 그것을 사용하려고 지금 때 이미 무료 무료 office.But에 등록 된 데이터 소스에 데이터를 삽입하는 데 사용됩니다, 라인 oServiceManager = CreateObject("com.sun.star.ServiceManager")
오류 "오류 만들기 ActiveX 객체"를 생성합니다. 누구나 아이디어가 있습니까, 어떻게 수정합니까?
나는 위의 code.'m_xContext = uno.util.Bootstrap.bootstrap() mxMSFactory = DirectCast (m_xContext.getServiceManager(), XMultiServiceFactory) databaseContext = mxMSFactory.createInstance ("이 com.sun에 다음과 같은 수정을 수행 한 .star.sdb.DatabaseContext ") Dim databaseNames As container.XNameAccess = DirectCast (databaseContext, container.XNameAccess) oDB = 데이터베이스 이름 .getByName (nameOfdDtaource)'. 이제 런타임 오류가 발생합니다 "공용 멤버 'getConnection'형식의 '모든'찾을 수 없습니다." –
만약'oDB = databaseNames.getByName (nameOfdDource)을 oDB = DirectCast (databaseOnder.getByName (nameOfdDtaource), XDat aSource)로 변경하면 'Any'타입의 값을 'XDataSource'로 변환 할 수 없습니다. –