Služba SFDocuments.Base

Služba Base poskytuje řadu metod a vlastností usnadňujících správu a obsluhu dokumentů LibreOffice Base.

Služba úzce souvisí se službou Dokument, která nabízí obecné metody pro nakládání s dokumenty LibreOffice, a to včetně dokumentů aplikace Base. Služba Base tak službu Document rozšiřuje, nabízí dodatečné metody specifické pro Base, a umožňuje uživatelům:

tip

Další informace o metodách a vlastnostech pro správu dokumentů LibreOffice naleznete na stránce Služba Document.


Volání služby

Před používáním služby Base je nutné načíst či naimportovat knihovnu ScriptForge pomocí:

note

• V makrech Basicu je nutné načíst knihovnu ScriptForge následujícím příkazem:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Ve skriptech Pythonu je nezbytné import z modulu scriptforge:
from scriptforge import CreateScriptService


V Basicu

Službu Base lze volat různými způsoby. Následující část kódu používá metodu CreateBaseDocument ze služby UI pro vytvoření nového souboru aplikace Base.

Ve všech příkladech je objekt oDoc instancí služby Base.


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

Instanci služby Base je možné vytvořit také při otevírání existujícího souboru Base:


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

Pokud je soubor Base již otevřen, je možné vytvořit instanci služby Base přímo:


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

Do Pythonu lze tyto příklady převést následovně:


    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

Použití řetězce "SFDocuments." je v předchozím příkladu volitelné.


Seznam metod služby Base

CloseFormDocument
FormDocuments
Forms

GetDatabase
IsLoaded
OpenFormDocument

PrintOut
SetPrinter


CloseFormDocument

Zavře zadaný dokument formulářů. Při úspěšném uzavření vrátí True.

Syntaxe:

svc.CloseFormDocument(formdocument: str): bool

Parametry:

formdocument: Název objektu FormDocument, který se má zavřít, jako řetězec, u něhož se rozlišuje velikost písmen.

Příklad:

Pokud jsou dokumenty uspořádány ve složkách, je nezbytné při určení názvu dokumentu formulářů uvést název složky, jak ukazují následující příklady:

V Basicu

    oDoc.CloseFormDocument("Folder1/myFormDocument")
  
V Pythonu

    doc.CloseFormDocument('Folder1/myFormDocument')
  

FormDocuments

Vrátí pole s celými názvy (cesta/název) všech dokumentů formulářů v dokumentu Base, a to jako pole řetězců začínající od 0.

Syntaxe:

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

Příklad:

Následující část kódu vypíše názvy všech dokumentů formulářů v aktuálním dokumentu Base.

V Basicu

    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
  
V Pythonu

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

Další informace o dokumentech formulářů naleznete na stránce služby Form.


Forms

V závislosti na předaných parametrech tato metoda vrátí:

Syntaxe:

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

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

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

Parametry:

formdocument: Název platného dokumentu formulářů jako řetězec, u něhož se rozlišuje velikost písmen.

form: Název nebo číslo indexu formuláře uloženého v dokumentu formulářů. Pokud tento argument chybí, metoda vrátí seznam s názvy všech formulářů, které jsou v dokumentu formulářů obsaženy.

note

I když je možné při odkazování na formuláře používat čísla indexů, je to doporučeno pouze tehdy, je-li v dokumentu formuláře pouze jediný formulář. V případě dvou a více formuláře je vhodné dát místo toho přednost názvu formuláře.


Příklad:

První řádek následujícího příkladu vrátí seznam všech formulářů v dokumentu formulářů „myFormDocument“. Druhý řádek vrátí instanci služby Form představující formulář „myForm“.

V Basicu

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

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

GetDatabase

Vrátí instanci služby Database, která umožňuje spouštět SQL příkazy na databázi definované nebo uložené v aktuálním dokumentu Base

Syntaxe:

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

Parametry:

user, password: Nepovinné přihlašovací parametry jako řetězce. Výchozí hodnotou obou parametrů je prázdný řetězec "".

Příklad:

V Basicu

    Dim myDoc As Object, myDatabase As Object, ui As Object
    Set ui = CreateScriptService("UI")
    Set myDoc = ui.OpenBaseDocument("C:\Documents\myDb.odb")
    ' Níže jsou uvedeny uživatel a heslo, jsou-li potřeba
    Set myDatabase = myDoc.GetDatabase()
    '   ... Spouštění dotazů, SQL příkazů, ...
    myDatabase.CloseDatabase()
    myDoc.CloseDocument()
  
V Pythonu

    ui = CreateScriptService("UI")
    myDoc = ui.OpenBaseDocument(r"C:\Documents\myDb.odb")
    myDatabase = myDoc.GetDatabase()
    # ... Spouštění dotazů, SQL příkazů, ...
    myDatabase.CloseDatabase()
    myDoc.CloseDocument()
  

IsLoaded

Vrátí True, pokud je určený FormDocument aktuálně otevřený.

Syntaxe:

svc.IsLoaded(formdocument: str): bool

Parametry:

formdocument: Název objektu FormDocument, který se má zkontrolovat, jako řetězec, u něhož se rozlišuje velikost písmen.

Příklad:

V Basicu

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

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

OpenFormDocument

Otevře určený FormDocument v běžném režimu nebo v režimu návrhu.

Pokud je dokument již otevřen, aktivuje se a jeho režim se nezmění. Metoda vrátí True, pokud dokument mohl být otevřen.

Syntaxe:

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

Parametry:

formdocument: Název objektu FormDocument, který se má otevřít, jako řetězec, u něhož se rozlišuje velikost písmen.

designmode: Je-li tento argument True, FormDocument bude otevřen v režimu návrhu.

Příklad:

V Basicu

Většina dokumentů formulářů je uložena v kořeni dokumentu Base, a proto je lze otevřít pouze pomocí názvu, tak jako v následujícím příkladu:


    oDoc.OpenFormDocument("myFormDocument")
  

Pokud jsou dokumenty uspořádány ve složkách, je nezbytné při určení názvu dokumentu formulářů uvést název složky, jak ukazují následující příklady:


    oDoc.OpenFormDocument("myFolder/myFormDocument")
  
V Pythonu

    doc.OpenFormDocument("myFormDocument")
  

    doc.OpenFormDocument("myFolder/myFormDocument")
  

PrintOut

Tato metoda odešle obsah daného dokumentu formulářů na výchozí tiskárnu nebo na tiskárnu určenou metodou SetPrinter().

Vrátí True, pokud byl dokument úspěšně vytištěn.

Syntaxe:

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

Parametry:

formdocument: Platný název dokumentů formulářů jako řetězec, u něhož se rozlišuje velikost písmen. Dokument formulářů musí být otevřen, aktivuje jej tato metoda.

pages: Stránky, které se mají vytisknout, jako řetězec podobný tomu, který se zadává v uživatelské rozhraní, například: "1-4;10;15-18". Výchozí jsou všechny stránky.

copies: Počet kopií. Výchozí je 1.

Příklad:

V Basicu

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

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

SetPrinter

Určuje možnosti tiskárny pro dokument formulářů. Tento dokument musí být otevřený.

Vrátí True v případě úspěšného nastavení.

Syntaxe:

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

Parametry:

formdocument: Platný název dokumentu formulářů jako řetězec, u něhož se rozlišuje velikost písmen.

printer: Název tiskové fronty, do níž se má úloha zařadit. Není-li zadán, nastaví se výchozí tiskárna.

orientation: Buď PORTRAIT (na výšku), nebo LANDSCAPE (na šířku). Není-li zadáno, ponechá se nastavení tiskárny.

paperformat: Určuje formát papíru jako řetězec, kterým může být A3, A4, A5, LETTER, LEGAL or TABLOID. Není-li zadáno, nastavení se nezmění.

Příklad:

V Basicu

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

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

Všechny procedury nebo identifikátory knihovny ScriptForge, které jsou uvozeny podtržítkem "_", jsou určeny pro interní použití. Není zamýšleno je používat v makrech Basicu nebo skriptech Pythonu.


Podpořte nás!