Obsah
Rejstřík 🔎︎

# 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

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

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.

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

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

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

ScriptForge.UI service