Inhoud
Index 🔎︎

# SFDocuments.Base service

De service Base heeft een aantal methoden en eigenschappen voor het ondersteunen van het beheren en werken met LibreOffice Base-documenten.

Deze service is sterk gerelateerd aan de service Document, die generieke methoden bevat door het werken met LibreOffice documenten, inclusief Base-documenten. Deze service Base is dus eigenlijk een uitbreiding op de service Document en geeft aanvullende methoden die specifiek zijn voor Base-documenten, waarmee gebruiken kunnen:

- Toegang krijgen tot de database in het Base-document.

- Formulieren kunnen openen die opgeslagen zijn in een Base-document.

- Controleren of een formulier van een Base-document al geladen is.

Bekijk de service Document voor meer informatie over de methoden en eigenschappen die gebruikt kunnen worden om te werken met LibreOffice-documenten.

## Service aanroep

Voordat de service Base gebruikt kan worden, moet de bibliotheek ScriptForge eerst worden geladen of geïmporteerd:

• Basic macro's kunnen de bibliotheek ScriptForge laden met de instructie:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Python scripts kunnen de module scriptforge importeren met:
from scriptforge import CreateScriptService

##### In BASIC

De service kan op verschillende manieren worden aangeroepen. Het stukje code hieronder gebruikt de methode CreateBaseDocument van de service UI om een nieuw Base-bestand aan te maken.

NB: In alle voorbeelden is het object oDoc een instantie van de service Base.

        Dim ui As Object, oDoc As Object
        Set ui = CreateScriptService("UI")
        Set oDoc = ui.CreateBaseDocument("C:\Documents\MyFile.odb")

Hier maken we een instantie van de service Base aan, bij het openen van een bestaand Base-bestand:

        Set oDoc = ui.OpenBaseDocument("C:\Documents\MyFile.odb")

Indien het Base-document al geopend is, kan de de instantie van de service Base direct worden aangemaakt:

        Dim oDoc As Object
        Set oDoc = CreateScriptService("SFDocuments.Document", "MyFile.odb")

##### In Python

We zetten de bovenstaande voorbeelden om naar Python:

        from scriptforge import CreateScriptService
        ui = CreateScriptService("UI")
        doc = ui.CreateBaseDocument(r"C:\Documents\MyFile.odb")

        doc = ui.OpenBaseDocument(r"C:\Documents\MyFile.odb")

        doc = CreateScriptService("SFDocuments.Document", "MyFile.odb")

Het gebruik in het vorige voorbeeld van "SFDocuments." is optioneel.

De methoden in de service Base
CloseFormDocument FormDocuments Forms | GetDatabase IsLoaded OpenFormDocument | PrintOut SetPrinter

## CloseFormDocument

Sluit het aangegeven document. Retourneert True als het sluiten lukt.

### Syntaxis:

svc.CloseFormDocument(formdocument: str): bool

### Parameters:

formdocument: De naam van het FormDocument dat gesloten moet worden, dit is een hoofdlettergevoelige tekenreeks.

### Voorbeeld:

Indien formulierdocumenten in mappen zijn georganiseerd, moet de mapnaam zijn toegevoegd aan de opgegeven formdocument, dit geven we aan in deze voorbeelden:

##### In BASIC

        oDoc.CloseFormDocument("Folder1/myFormDocument")

##### In Python

        doc.CloseFormDocument('Folder1/myFormDocument')

## FormDocuments

Retourneert een matrix met de volledige namen (bestandsnaam inclusief pad) van alle formulierdocumenten in het Base-document.

### Syntaxis:

svc.FormDocuments(): str[0..*]

### Voorbeeld:

Met de onderstaande code worden de namen afgedrukt van de formulierdocumenten in het huidige Base-document.

##### In BASIC

        Dim oDoc as Object, myForms as Object, formName as String
        Set oDoc = CreateScriptService("Document", ThisDataBaseDocument)
        Set myForms = oDoc.FormDocuments()
        For Each formName In myForms
            MsgBox formName
        Next formName

##### In Python

        bas = CreateScriptService("Basic")
        doc = CreateScriptService("Document", bas.ThisDataBaseDocument)
        myForms = doc.FormDocuments()
        for formName in myForms:
            bas.MsgBox(formName)

Meer informatie over formulierdocumenten staat in de beschrijving van de service Form.

## Forms

Deze methode retourneert, afhankelijk van de parameters:

- Een matrix met de namen van alle formulieren in een formulierdocument (als er geen argument Form is)

- Een object SFDocuments.Form dat een weergave is van het in het argument Form aangegeven formulier.

### Syntaxis:

svc.Forms(formdocument: str): str[0..*]

svc.Forms(formdocument: str, form: str = ''): svc

svc.Forms(formdocument: str, form: int): svc

### Parameters:

formdocument: De naam van een geldig formulierdocument (hoofdlettergevoelig).

form: De naam of het indexnummer van het formulier opgeslagen in het formulierdocument. Indien dit argument niet wordt meegegeven, geeft de methode een lijst terug met alle formulieren in het formulierdocument.

Wij raden het gebruik van het indexnummer af, zeker als er meer één formulier is.

### Voorbeeld:

De eerste regel in het onderstaande voorbeeld geeft een lijst met alle formulieren in het formulierdocument "myFormDocument". De volgende regel geeft een instantie van de service voor het formulier "myForm".

##### In BASIC

        Dim formsList as Object : formsList = oDoc.Forms("myFormDocument")
        Dim oForm as Object : oForm = oDoc.Forms("myFormDocument", "myForm")

##### In Python

        formsList = doc.Forms("myFormDocument")
        form = doc.Forms("myFormDocument", "myForm")

## GetDatabase

Retourneert een instantie van de service Database waarmee de uitvoering van de SQL-commando's op de databases die in het huidige Base-document zijn gedefinieerd of opgeslagen, mogelijk is.

### Syntaxis:

svc.GetDatabase(user: str = '', password: str = ''): svc

### Parameters:

user, password: Optionele parameters, tekenreeksen, om in te loggen. De standaardwaarde is voor beide "".

### Voorbeeld:

##### In BASIC

        Dim myDoc As Object, myDatabase As Object, ui As Object
        Set ui = CreateScriptService("UI")
        Set myDoc = ui.OpenBaseDocument("C:\Documents\myDb.odb")
        ' User en password worden indien ze nodig zijn, hieronder meegegeven
        Set myDatabase = myDoc.GetDatabase()
        '   ... SQL-statements uitvoeren
        myDatabase.CloseDatabase()
        myDoc.CloseDocument()

##### In Python

        ui = CreateScriptService("UI")
        myDoc = ui.OpenBaseDocument(r"C:\Documents\myDb.odb")
        myDatabase = myDoc.GetDatabase()
        #   ... SQL-statements uitvoeren
        myDatabase.CloseDatabase()
        myDoc.CloseDocument()

## IsLoaded

Retourneert True als het aangegeven FormDocument geopend is.

### Syntaxis:

svc.IsLoaded(formdocument: str): bool

### Parameters:

formdocument: De naam van het te controleren FormDocument, een hoofdlettergevoelige tekenreeks.

### Voorbeeld:

##### In BASIC

        If Not oDoc.IsLoaded("myFormDocument") Then
            oDoc.OpenFormDocument("myFormDocument")
        End If

##### In Python

        if not doc.IsLoaded("myFormDocument"):
            doc.OpenFormDocument("myFormDocument")

## OpenFormDocument

Opent het aangegeven FormDocument, of in de normale of in de ontwerpmodus.

Als het formulierdocument al geopend is dan wordt het geactiveerd zonder dat de modes wordt gewijzigd. De methode retourneert True als het formulierdocument kon worden geopend.

### Syntaxis:

svc.OpenFormDocument(formdocument: str, designmode: bool = False): bool

### Parameters:

formDocument: De naam van het formulierdocument dat geopend moet worden, een hoofdlettergevoelige tekenreeks

designmode: Als dit argument True is, dan wordt het FormDocument geopend n de ontwerpmodus.

### Voorbeeld:

##### In BASIC

De meeste formulierdocumenten worden opgeslagen in de root van het Base-document. Ze worden geopend door de naam te gebruiken, zoals we in dit voorbeeld aangeven:

        oDoc.OpenFormDocument("myFormDocument")

Indien de formulierdocumenten georganiseerd zijn in mappen, is het noodzakelijk om de mapnaam op te nemen in de naam van het formulierdocument bij het openen. Voorbeeld:

        oDoc.OpenFormDocument("myFolder/myFormDocument")

##### In Python

        doc.OpenFormDocument("myFormDocument")

        doc.OpenFormDocument("myFolder/myFormDocument")

## PrintOut

Deze methode stuurt de inhoud van het aangegeven formulierdocument naar de standaardprinter die gedefinieerd is met de methode SetPrinter.

Retourneert True als het document is afgedrukt.

### Syntaxis:

svc.PrintOut(opt formdocument: str, pages: str = "", copies: num = 1): bool

### Parameters:

formdocument:Een geldige naam van een geopend formulierdocument, een hoofdlettergevoelige tekenreeks. Het wordt geactiveerd door de methode.

pages: De te printen pagina's in de vorm van een tekenreeks. Voorbeeld: "1-4;10;15-18". Standaardwaarde is alle pagina's.

copies: Het aantal afdrukken. Standaardwaarde is 1.

### Voorbeeld:

##### In BASIC

        If oDoc.PrintOut("myForm", "1-4;10;15-18", Copies := 2) Then
            ' ...
        End If

##### In Python

        if doc.PrintOut('myForm', copies=3, pages='45-88'):
            # ...

## SetPrinter

Definieert de afdrukopties van een formulierdocument. Het formulierdocument moet geopend zijn.

Retourneert True indien het afdrukken is gelukt.

### Syntaxis:

svc.SetPrinter(opt formdocument: str, opt printer: str, opt orientation: str, paperformat: str): bool

### Parameters:

formdocument: Een geldige naam van een formulierdocument, een hoofdlettergevoelige tekenreeks.

printer: De naam van de printerwachtrij waarnaar moet worden afgedrukt. Indien afwezig is de standaardprinter ingesteld.

orientation: Ofwel PORTRAIT of LANDSCAPE. Blijft onveranderd indien afwezig, met betrekking tot de printerinstellingen.

paperformat: Specificeert het papierformaat als een tekenreekswaarde die A3, A4, A5, LETTER, LEGAL of TABLOID kan zijn. Blijft onveranderd indien afwezig.

### Voorbeeld:

##### In BASIC

        oDoc.SetPrinter("myForm", Orientation := "PORTRAIT")

##### In Python

        doc.SetPrinter('myForm', paperformat='TABLOID')

Alle ScriptForge Basic-routines of variabelen die beginnen met een underscore "_" zijn voor intern gebruik. Gebruik deze niet in een Basic of Python-macro.

Verwante onderwerpen

SFDatabases.Database-service

SFDocuments.Document-service

SFDocuments.Form-service

Service ScriptForge.UI