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
OpenQuery
OpenTable

PrintOut
SetPrinter



CloseFormDocument

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

warning

Metoda CloseFormDocument je od verze LibreOffice 7.6 označena jako zastaralá. Je sice stále k dispozici, ale v některém z dalších vydání může být ze služby Base odstraněna. Použijte místo ní metodu CloseDocument ze služby FormDocument.


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

warning

Metoda Forms je od verze LibreOffice 7.6 označena jako zastaralá. Je sice stále k dispozici, ale v některém z dalších vydání může být ze služby Base odstraněna. Použijte místo ní metodu Forms ze služby FormDocument.


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. Metoda vrátí instanci služby FormDocument, která odpovídá určenému dokumentu formulářů.

Pokud je dokument již otevřen, aktivuje se a jeho režim se nezmění.

Jestliže určený dokument neexistuje, vrátí se Nothing.

Syntaxe:

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

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:


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


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

    formDoc = doc.OpenFormDocument("myFormDocument")
  

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

OpenQuery

Otevře pro zadaný dotaz okno Pohled na data a vrátí instanci služby Datasheet.

Dotaz lze otevřít v běžném režimu, nebo v režimu návrhu.

Pokud je dotaz již otevřený, jeho okno Pohled na data se stane aktivním.

note

Zavření dokumentu Base způsobí, že se zavře také okno Pohled na data.


Syntaxe:

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

Parametry:

queryname: Název existujícího dotazu jako řetězec, u něhož se rozlišuje velikost písmen.

designmode: Je-li tento argument nastaven na True, dotaz se otevře v režimu návrhu. V opačném případě se otevře v běžném režimu (výchozí = False).

Příklad:

V Basicu

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

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

OpenTable

Otevře okno Pohled na data se zadanou tabulkou a vrátí instanci služby Datasheet.

Tabulku lze otevřít v běžném režimu, nebo v režimu návrhu.

Pokud je tabulka již otevřená, její okno Pohled na data se stane aktivním.

note

Zavření dokumentu Base způsobí, že se zavře také okno Pohled na data.


Syntaxe:

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

Parametry:

tablename: Název existující tabulky jako řetězec, u něhož se rozlišuje velikost písmen.

designmode: Je-li tento argument nastaven na True, tabulka se otevře v režimu návrhu. V opačném případě se otevře v běžném režimu (výchozí = False).

Příklad:

V Basicu

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

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

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.

warning

Metoda PrintOut je od verze LibreOffice 7.6 označena jako zastaralá. Je sice stále k dispozici, ale v některém z dalších vydání může být ze služby Base odstraněna. Použijte místo ní metodu PrintOut ze služby FormDocument.


Syntaxe:

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

Parametry:

formdocument: Platný název dokumentu 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ém 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í.

warning

Metoda SetPrinter je od verze LibreOffice 7.6 označena jako zastaralá. Je sice stále k dispozici, ale v některém z dalších vydání může být ze služby Base odstraněna. Použijte místo ní metodu SetPrinter ze služby FormDocument.


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!