SFDocumenten.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:

tip

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:

note

• 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")
  
note

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


De methoden 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.

warning

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

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


Forms

Deze methode retourneert, afhankelijk van de parameters:

warning

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.

note

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.

note

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.

note

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.

warning

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.

warning

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')
  
warning

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


Help ons, alstublieft!