Inhoud

# SFDocumenten.Base -service

De service Base heeft een aantal methodes 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 methodes 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 methodes 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 methodes 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 methodes in de service Base
CloseFormDocument FormDocuments Forms GetDatabase | IsLoaded OpenFormDocument OpenQuery OpenTable | PrintOut SetPrinter

## CloseFormDocument

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

De methode CloseFormDocument is verouderd sinds LibreOffice 7.6. Hoewel het nog steeds beschikbaar is, kan het in een toekomstige release uit de Base-service worden verwijderd. Gebruik in plaats daarvan de methode CloseDocument uit de service FormDocument.

### 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)

Voor meer informatie over formulierdocumenten raadpleegt u de helppagina van ScriptForge.FormDocument-service .

## 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.

De methode Forms is verouderd sinds LibreOffice 7.6. Hoewel het nog steeds beschikbaar is, kan het in een toekomstige release uit de Base-service worden verwijderd. Gebruik in plaats daarvan de methode Forms uit de service FormDocument.

### 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 opgegeven FormDocument in de normale modus of in de ontwerpmodus. Deze methode retourneert een service-instantie FormDocument die overeenkomt met het opgegeven formulierdocument.

Als het formulierdocument al geopend is, wordt het geactiveerd zonder de modus te wijzigen.

Als het opgegeven formulierdocument niet bestaat, wordt Niets geretourneerd.

### Syntaxis:

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

### 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:

        Dim oFormDoc As Object
        oFormDoc = 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:

        oFormDoc = oDoc.OpenFormDocument("myFolder/myFormDocument")

##### In Python

        formDoc = doc.OpenFormDocument("myFormDocument")

        formDoc = doc.OpenFormDocument("myFolder/myFormDocument")

## OpenQuery

Opent het venster Gegevensweergave van de opgegeven query en retourneert een instantie van de Datasheet-service.

De query kan worden geopend in de normale modus of in de ontwerpmodus.

Als de query al open is, wordt het venster Gegevensweergave actief gemaakt.

Als u het Base-document sluit, wordt het venster Gegevensweergave ook gesloten.

### Syntaxis:

svc.OpenQuery(queryname: str, designmode: bool = False): obj

### Parameters:

queryname: De naam van een bestaande query als een hoofdlettergevoelige tekenreekstekenreeks.

designmode: Als dit argument is ingesteld op True, wordt de query geopend in de ontwerpmodus. Anders wordt het geopend in de normale modus (standaard = False).

### Voorbeeld:

##### In BASIC

          oDoc.OpenQuery("MyQuery", DesignMode := True)

##### In Python

          doc.OpenQuery("MyQuery", designmode=True)

## OpenTable

Opent het venster Gegevensweergave van de gespecificeerde tabel en retourneert een instantie van de Datasheet-service.

De tabel kan worden geopend in de normale modus of in de ontwerpmodus.

Als de tabel al open is, wordt het venster Gegevensweergave actief gemaakt.

Als u het Base-document sluit, wordt ook het venster Gegevensweergave gesloten.

### Syntaxis:

svc.OpenTable(tablename: str, designmode: bool = False): obj

### Parameters:

tablename: De naam van een bestaande tabel als een hoofdlettergevoelige tekenreeks.

designmode: Als dit argument is ingesteld op True wordt de tabel geopend in de ontwerpmodus. Anders wordt het geopend in de normale modus (standaard = False).

### Voorbeeld:

##### In BASIC

          oDoc.OpenTable("MyTable", DesignMode = False)

##### In Python

          doc.OpenTable("MyTable", designmode=False)

## 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.

De methode PrintOut is verouderd sinds LibreOffice 7.6. Hoewel het nog steeds beschikbaar is, kan het in een toekomstige release uit de Base-service worden verwijderd. Gebruik in plaats daarvan de methode PrintOut van de service FormDocument.

### 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.

De methode SetPrinter is verouderd sinds LibreOffice 7.6. Hoewel het nog steeds beschikbaar is, kan het in een toekomstige release uit de Base-service worden verwijderd. Gebruik in plaats daarvan de methode SetPrinter van de service Document.

### 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