REM ***** Database Test ***** const cMessageDatabaseService = "Database Service" const cMessageDatabaseOpen = "Open Database" const cMessageDatabaseInsert = "Insert record into Database" const cMessageDatabaseDelete = "Delete record from Database" const cMessageDatabaseSeek = "Read other record from Database" const cMessageDatabaseClose = "Close Database" Sub TestDB (FilterType as Integer) Dim oDBConnection as Object, oDataSource as Object, oDBContext as Object Dim sDBName as String, sTable as String, sCurrentMessage as String Dim nRowCount as Integer, nCurrentAction as Integer Dim bResult as Boolean Const sTestString = "Automatical Test" On Local Error GoTo DBERROR nCurrentAction = cLogfileFailed FileChannel% = OpenLogDat (GetLogFileName(FilterType)) nCurrentAction = cDBService sCurrentMessage = cMessageDatabaseService + " " + cUnoDatabaseContext oDBContext = CreateUnoService(cUnoDatabaseContext) sDBName=oDBContext.ElementNames(0) 'Names of Databases nCurrentAction = cDBOpen sCurrentMessage = cMessageDatabaseOpen oDataSource = oDBContext.GetByName(sDBName) sTable=oDataSource.Tables.ElementNames(0) oDBConnection = oDBContext.GetByName(sDBName).GetConnection("","") LogState (not IsNull (oDBConnection), "Database "+ cMessageDatabaseOpen, FileChannel) LogState (not IsNull (oDBConnection), "Database "+ cMessageDatabaseOpen, MainFileChannel) SetStatus (FilterType, cDBOpen, not IsNull (oDBConnection)) if (IsNull(oDBConnection)) then Close #FileChannel% Exit Sub End If ' Database is open now nCurrentAction = cDBService sCurrentMessage = cMessageDatabaseService + " " + cUnoRowSet oRowSet = createUnoService(cUnoRowSet) if (IsNull(oRowSet)) then LogState (not IsNull (oRowSet), "Database "+ cMessageDatabaseService + " " + cUnoRowSet, FileChannel) LogState (not IsNull (oRowSet), "Database "+ cMessageDatabaseService + " " + cUnoRowSet, MainFileChannel) SetStatus (FilterType, cDBService, not IsNull (oRowSet)) Exit Sub else LogState (not IsNull (oRowSet), "Database "+ cMessageDatabaseService, FileChannel) LogState (not IsNull (oRowSet), "Database "+ cMessageDatabaseService, MainFileChannel) SetStatus (FilterType, cDBService, not IsNull (oRowSet)) End If nCurrentAction = cDBInsert sCurrentMessage = cMessageDatabaseInsert oRowSet.ActiveConnection = oDBConnection oRowSet.CommandType = com.sun.star.sdb.CommandType.COMMAND oRowSet.Command = "SELECT * FROM " + sTable oRowSet.execute() oRowSet.moveToInsertRow oRowSet.updateString(5, sTestString) oRowSet.insertRow() nRowCount=oRowSet.RowCount oRowSet.moveToCurrentRow() bResult = (oRowSet.getString(5) = sTestString) LogState (bResult, "Database "+ cMessageDatabaseInsert, FileChannel) LogState (bResult, "Database "+ cMessageDatabaseInsert, MainFileChannel) SetStatus (FilterType, cDBInsert, bResult) 'delete only if insert passed if (bResult) Then nCurrentAction = cDBDelete sCurrentMessage = cMessageDatabaseDelete oRowSet.deleteRow() bResult = (nRowCount - oRowSet.RowCount = 0) if ( bResult ) Then oRowSet.next() bResult = (nRowCount - oRowSet.RowCount = 1) End If LogState (bResult, "Database "+ cMessageDatabaseDelete, FileChannel) LogState (bResult, "Database "+ cMessageDatabaseDelete, MainFileChannel) SetStatus (FilterType, cDBDelete, bResult) End If ' read other record nCurrentAction = cDBSeek sCurrentMessage = cMessageDatabaseSeek oRowSet.first() bResult = not (oRowSet.getString(5) = sTestString) LogState (bResult, "Database "+ cMessageDatabaseSeek, FileChannel) LogState (bResult, "Database "+ cMessageDatabaseSeek, MainFileChannel) SetStatus (FilterType, cDBSeek, bResult) nCurrentAction = cDBClose sCurrentMessage = cMessageDatabaseClose oDBConnection.Dispose() LogState (True, "Database "+ cMessageDatabaseClose, FileChannel) LogState (True, "Database "+ cMessageDatabaseClose, MainFileChannel) SetStatus (FilterType, cDBClose, True) Print #FileChannel, "---" Close #FileChannel% Exit Sub ' Without error DBERROR: If (nCurrentAction = cLogfileFailed) then SetStatus (FilterType, cDBOpen, False) Exit Sub else LogState (False, "Database "+ sCurrentMessage, FileChannel) LogState (False, "Database "+ sCurrentMessage, MainFileChannel) SetStatus (FilterType, nCurrentAction, False) Close #FileChannel% End If Exit Sub ' With error End Sub