| <?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> |
| <script:module xmlns:script="http://openoffice.org/2000/script" script:name="forms_ODatabaseForm" script:language="StarBasic"> |
| |
| |
| '************************************************************************* |
| ' |
| ' Licensed to the Apache Software Foundation (ASF) under one |
| ' or more contributor license agreements. See the NOTICE file |
| ' distributed with this work for additional information |
| ' regarding copyright ownership. The ASF licenses this file |
| ' to you under the Apache License, Version 2.0 (the |
| ' "License"); you may not use this file except in compliance |
| ' with the License. You may obtain a copy of the License at |
| ' |
| ' http://www.apache.org/licenses/LICENSE-2.0 |
| ' |
| ' Unless required by applicable law or agreed to in writing, |
| ' software distributed under the License is distributed on an |
| ' "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| ' KIND, either express or implied. See the License for the |
| ' specific language governing permissions and limitations |
| ' under the License. |
| ' |
| '************************************************************************* |
| |
| |
| |
| |
| |
| ' Be sure that all variables are dimensioned: |
| option explicit |
| |
| |
| ' REQUIRED VARIABLES for interface/service tests: |
| |
| ' for XPersistObject |
| Global oPersistInstance As Object |
| |
| ' Required for com.sun.star.lang.XComponent: |
| Global oComponentInstance As Object ' it will be disposed |
| |
| ' Requiered for com.sun.star.container.XNameContainer |
| Global oInstance As Object 'instance to insert |
| |
| ' Required for com.sun.star.sdbc.XResultSet |
| Global cXResultSetFirstRecord as String |
| Global cXResultSetLastRecord as String |
| Global cXResultSetRecord1 as String |
| Global cXResultSetRecord2 as String |
| Global cXResultSet2BeforeLastRecord as String |
| |
| ' Required for com.sun.star.sdbc.XColumnLocate: |
| Global cExistantColumnName As String |
| |
| ' Requiered for com.sun.star.container.XNameReplace |
| Global cNameToReplace As String 'name of instance to be replased |
| Global oReplaceInstance As Object 'instance, that will be inserted |
| 'instead old one |
| |
| Global oIdxReplaceInstance As Object |
| |
| ' Required for com.sun.star.sdbc.XParameters |
| Global paramTypes as Variant |
| |
| ' Required for com.sun.star.sdbc.XRow and com.sun.star.sdbc.XRowUpdate |
| Global rowTypes as Variant |
| Global rowTypesCol as Variant |
| |
| ' Required for com.sun.star.sdbc.XResultSetUpdate |
| Global textColumn As String |
| |
| ' Required for com.sun.star.awt.XTabControllerModel |
| Global XTabControlModel1 As Object |
| Global XTabControlModel2 As Object |
| |
| Global oConnection As Object |
| |
| ' Required for com.sun.star.container.XContainer |
| Global oElementToInsert As Object |
| Global oContainer As Object |
| |
| Sub CreateObj() |
| |
| '************************************************************************* |
| ' COMPONENT: |
| ' forms.ODatabaseForm |
| '************************************************************************* |
| On Error Goto ErrHndl |
| Dim bOK As Boolean |
| Dim oRowSet As Object, facc As Object, dbSource As Object |
| Dim srcFile As String, dstFile As String, dbSrcURL As String |
| Dim oDrawPage As Object, oForms As Object, oForm As Object |
| Dim oShape1 As Object, oShape2 As Object |
| |
| bOK = true |
| |
| ' Copying DB file to temp location |
| srcFile = utils.Path2URL(cTestDocsDir) + "TestDB/testDB.dbf" |
| dstFile = utils.getTempFileURL("TestDB.dbf") |
| dbSrcURL = "sdbc:dbase:" + utils.StrReplace(dstFile, "/testDB.dbf", "") |
| |
| Out.Log("Copying file '" + srcFile + "' to '" + dstFile + "'") |
| facc = createUnoService("com.sun.star.ucb.SimpleFileAccess") |
| if (facc.exists(dstFile)) then facc.kill(dstFile) |
| facc.copy(srcFile, dstFile) |
| |
| dbtools.RegisterDataSource("DBTest", dbSrcURL) |
| |
| ' Creating a form |
| oDoc = utils.createDocument("swriter", cObjectName) |
| |
| oShape1 = toolkittools.addControlToDefaultForm("ComboBox", 1000, 1000, 2000, 1000) |
| oShape2 = toolkittools.addControlToDefaultForm("TextField", 1000, 1000, 2000, 1000) |
| 'get control from document |
| oDrawPage = oDoc.DrawPage |
| oForms = oDrawPage.getForms() |
| |
| oForm = oForms.getByName("Standard") |
| |
| oForms.insertByName("Instance1", oDoc.createInstance("com.sun.star.form.component.Form")) |
| oForms.insertByName("Instance2", oDoc.createInstance("com.sun.star.form.component.Form")) |
| |
| oObj = oForm |
| |
| 'connect to a database |
| oForm.DataSourceName = "DBTest" |
| oForm.Command = "TestDB" |
| oForm.CommandType = com.sun.star.sdb.CommandType.TABLE |
| oForm.Load() |
| |
| oConnection = oForm.ActiveConnection |
| Dim list as Object |
| ' list = createUnoListener("C_", "com.sun.star.lang.XEventListener") |
| ' oConnection.addEventListener(list) |
| |
| 'for XComponent |
| Out.Log("" + oForms.hasByName("Instance1") + "," + oForms.hasByName("Instance2")) |
| oComponentInstance = oForms.getByName("Instance1") |
| oPersistInstance = oForms.getByName("Instance2") |
| |
| 'for XNameContainer, XIndexContainer |
| oInstance = oDoc.createInstance("com.sun.star.form.component.ComboBox") |
| |
| 'for XContainer |
| oElementToInsert = oDoc.createInstance("com.sun.star.form.component.ComboBox") |
| |
| 'for XNameReplace |
| oReplaceInstance = oDoc.createInstance("com.sun.star.form.component.ComboBox") |
| oObj.insertByName(cObjectName + "Replace", oDoc.createInstance("com.sun.star.form.component.ComboBox")) |
| cNameToReplace = cObjectName + "Replace" |
| |
| 'for XIndexReplace |
| oIdxReplaceInstance = oDoc.createInstance("com.sun.star.form.component.ComboBox") |
| |
| cExistantColumnName = "_TEXT" |
| cXResultSetFirstRecord = "text1" |
| cXResultSetLastRecord = "text3" |
| cXResultSetRecord1 = "text1" |
| cXResultSetRecord2 = "text2" |
| cXResultSet2BeforeLastRecord = "text2" |
| |
| ' for XParameters |
| paramTypes = DimArray() |
| ' paramTypes = Array("boolean", "byte", "short", "int", "long", "float", "double", "string", _ |
| ' "bytes", "date", "time", "timestamp", "binarystream", "characterstream", "object", "objectwithinfo", _ |
| ' "ref", "blob", "clob", "array") |
| |
| ' for XRow and XRowUpdate |
| rowTypes = Array("string", "int", "long", "double", "float", "date", "datetm", "boolean") |
| rowTypesCol = Array(1, 2, 3, 4, 5, 6, 7, 9) |
| ' rowTypes = Array("boolean", "byte", "short", "int", "long", "float", "double", "string", _ |
| ' "bytes", "date", "time", "timestamp", "binarystream", "characterstream", "object", "objectwithinfo", _ |
| ' "ref", "blob", "clob", "array") |
| |
| ' Required for com.sun.star.sdbc.XResultSetUpdate |
| textColumn = "_TEXT" |
| |
| ' Required for com.sun.star.awt.XTabControllerModel |
| XTabControlModel1 = oShape1.getControl() |
| XTabControlModel2 = oShape2.getControl() |
| |
| Exit Sub |
| ErrHndl: |
| Test.Exception() |
| End Sub |
| |
| Sub DisposeObj() |
| On Error Goto ErrHndl |
| 'msgbox "Disposing ODatabaseForm" |
| Out.Log("Closing DB connection ...") |
| oConnection.close() |
| |
| Out.Log("Revoking 'DBTest' datasource ...") |
| dbtools.RevokeDB("DBTest") |
| 'msgbox "ODatabaseForm disposed." |
| Exit Sub |
| ErrHndl: |
| Test.Exception() |
| resume next |
| End Sub |
| |
| Sub C_disposing() |
| Out.Log("!!! Connection disposed !!!") |
| ' oConnection.close() |
| End Sub |
| </script:module> |