Obsah

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

- Získat přístup k databázi obsažené v dokumentu Base.

- Otevřít dokument formulářů uložený v dokumentu Base.

- Zkontrolovat, zda je dokument formulářů z dokumentu Base aktuálně načten.

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

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

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.

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)

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

- Pole začínající od 0 s názvy všech formulářů obsažených v dokumentu formulářů (pokud chybí argument Form)

- Objekt SFDocuments.Form představující formuláře uvedený v argumentu Form.

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.

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.

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.

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.

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

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

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.

Související témata

Služba SFDatabases.Database

Služba SFDocuments.Document

Služba SFDocuments.Form

Služba ScriptForge.UI