Spis treści
Indeks 🔎︎

# Usługa SFDocuments.Base

Usługa Base zapewnia szereg metod i właściwości ułatwiających zarządzanie i obsługę dokumentów LibreOffice Base.

Ta usługa jest ściśle powiązana z usługą Document, która zapewnia ogólne metody obsługi dokumentów LibreOffice, w tym dokumentów Base. W związku z tym usługa Base rozszerza usługę Document i udostępnia dodatkowe metody, specyficzne dla dokumentów Base, umożliwiające użytkownikom:

- Uzyskiwanie dostępu do bazy danych zawartej w dokumencie Base.

- Otwieranie dokumentów formularzy przechowywanych w dokumencie Base.

- Sprawdzanie, czy dokument formularza z dokumentu Base jest aktualnie załadowany.

Zapoznaj się z usługą Document, aby dowiedzieć się więcej o metodach i właściwościach, których można używać do zarządzania dokumentami LibreOffice.

## Wywoływanie usługi

Przed użyciem usługi Base należy załadować lub zaimportować bibliotekę ScriptForge:

• Podstawowe makra wymagają załadowania biblioteki ScriptForge przy użyciu następującej instrukcji:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Skrypty Pythona wymagają importu z modułu scriptforge:
from scriptforge import CreateScriptService

##### W języku Basic

Usługę Base można wywołać na różne sposoby. Poniższy fragment kodu używa metody CreateBaseDocument z usługi UI do utworzenia nowego pliku Base.

Zauważ, że we wszystkich przykładach obiekt oDoc jest instancją usługi Base.

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

Usługę Base można również utworzyć podczas otwierania istniejącego pliku Base, jak pokazano poniżej:

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

Jeśli dokument Base jest już otwarty, możliwe jest bezpośrednie utworzenie instancji usługi Base:

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

##### W języku Python

Powyższe przykłady można przetłumaczyć na język Python w następujący sposób:

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

Użycie podłańcucha "SFDocuments." w poprzednim przykładzie jest opcjonalne.

Lista metod w usłudze Base
CloseFormDocument FormDocuments Forms GetDatabase | IsLoaded OpenFormDocument OpenQuery OpenTable | PrintOut SetPrinter

## CloseFormDocument

Zamyka podany dokument formularza. Zwraca True, jeśli zamknięcie się powiodło.

### Składnia:

svc.CloseFormDocument(formdocument: str): bool

### Parametry:

formdocument: Nazwa FormDocument do zamknięcia jako ciąg z rozróżnianiem wielkości liter.

### Przykład:

Jeśli dokumenty formularza są zorganizowane w folderach, konieczne jest podanie nazwy folderu w celu określenia dokumentu formularza, który ma zostać otwarty, jak pokazano w poniższych przykładach:

##### W języku Basic

        oDoc.CloseFormDocument("Folder1/myFormDocument")

##### W języku Python

        doc.CloseFormDocument('Folder1/myFormDocument')

## FormDocuments

Zwraca tablicę z pełnymi nazwami (ścieżka/nazwa) wszystkich dokumentów formularza w dokumencie Base jako tablicę ciągów liczoną od zera.

### Składnia:

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

### Przykład:

Poniższy fragment kodu wypisuje nazwy wszystkich dokumentów formularzy w bieżącym dokumencie Base.

##### W języku 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

##### W języku Python

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

Aby dowiedzieć się więcej o dokumentach formularzy, zapoznaj się ze stroną pomocy usługi Form.

## Forms

W zależności od podanych parametrów ta metoda zwróci:

- Tablicę liczoną od zera z nazwami wszystkich formularzy zawartych w dokumencie formularza (jeśli nie ma argumentu Form)

- Obiekt SFDocuments.Form reprezentujący formularz określony w argumencie Form.

### Składnia:

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

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

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

### Parametry:

formdocument: nazwa prawidłowego dokumentu formularza jako ciąg z rozróżnianą wielkością liter.

form: nazwa lub numer indeksu formularza przechowywanego w dokumencie formularza. W przypadku braku tego argumentu metoda zwróci listę z nazwami wszystkich formularzy dostępnych w dokumencie formularza.

Chociaż możliwe jest odwoływanie się do formularzy za pomocą numerów indeksów, jest to zalecane tylko wtedy, gdy w dokumencie formularza znajduje się tylko jeden formularz. Jeśli istnieją dwa lub więcej formularzy, lepiej jest zamiast tego użyć nazwy formularza.

### Przykład:

Pierwszy wiersz poniższego przykładu zwraca listę wszystkich formularzy w dokumencie formularza „myFormDocument”. Drugi wiersz zwraca instancję usługi Form reprezentującą formularz „myForm”.

##### W języku Basic

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

##### W języku Python

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

## GetDatabase

Zwraca instancję usługi Database, która umożliwia wykonywanie poleceń SQL na zdefiniowanej bazie danych i/lub przechowywane w bieżącym dokumencie Base

### Składnia:

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

### Parametry:

user, password: opcjonalne parametry logowania jako łańcuchy znaków. Wartością domyślną dla obu parametrów jest pusty ciąg znaków "".

### Przykład:

##### W języku Basic

        Dim myDoc As Object, myDatabase As Object, ui As Object
        Set ui = CreateScriptService("UI")
        Set myDoc = ui.OpenBaseDocument("C:\Documents\myDb.odb")
        ' Poniżej znajduje się nazwa użytkownika i hasło w razie potrzeby
        Set myDatabase = myDoc.GetDatabase()
        ' ... Uruchamiaj kwerendy, instrukcje SQL, ...
        myDatabase.CloseDatabase()
        myDoc.CloseDocument()

##### W języku Python

        ui = CreateScriptService("UI")
        myDoc = ui.OpenBaseDocument(r"C:\Documents\myDb.odb")
        myDatabase = myDoc.GetDatabase()
        #   ... Uruchamiaj kwerendy, instrukcje SQL, ...
        myDatabase.CloseDatabase()
        myDoc.CloseDocument()

## IsLoaded

Zwraca True, jeśli określony FormDocument jest aktualnie otwarty.

### Składnia:

svc.IsLoaded(formdocument: str): bool

### Parametry:

formdocument: nazwa FormDocument do sprawdzenia jako ciąg z rozróżnianiem wielkości liter.

### Przykład:

##### W języku Basic

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

##### W języku Python

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

## OpenFormDocument

Otwiera określony FormDocument w trybie normalnym lub projektu.

Jeśli dokument formularza jest już otwarty, jest on aktywowany bez zmiany jego trybu. Metoda zwraca wartość True, jeśli można było otworzyć dokument formularza.

### Składnia:

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

### Parametry:

formDocument: nazwa FormDocument do otwarcia jako ciąg z rozróżnianiem wielkości liter.

designmode: jeśli ten argument ma wartość True, FormDocument zostanie otwarty w trybie projektu.

### Przykład:

##### W języku Basic

Większość dokumentów formularzy jest przechowywana w katalogu głównym dokumentu Base i można je otwierać, używając ich nazw, jak w poniższym przykładzie:

        oDoc.OpenFormDocument("myFormDocument")

Jeśli dokumenty formularza są zorganizowane w folderach, konieczne staje się uwzględnienie nazwy folderu w celu określenia dokumentu formularza, który ma zostać otwarty, jak pokazano w poniższym przykładzie:

        oDoc.OpenFormDocument("myFolder/myFormDocument")

##### W języku Python

        doc.OpenFormDocument("myFormDocument")

        doc.OpenFormDocument("myFolder/myFormDocument")

## OpenQuery

Otwiera okno Widok danych określonej kwerendy i zwraca instancję usługi Datasheet.

Kwerendę można otworzyć w trybie normalnym lub projektu.

Jeśli kwerenda jest już otwarta, jej okno Widok danych zostanie uaktywnione.

Zamknięcie dokumentu Base spowoduje również zamknięcie okna Widok danych.

### Składnia:

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

### Parametry:

queryname: nazwa istniejącej kwerendy jako ciąg tekstowy z rozróżnianiem wielkości liter.

designmode: jeśli ten argument jest ustawiony na True, kwerenda jest otwierana w trybie projektu. W przeciwnym razie jest otwierana w trybie normalnym (domyślnie = False).

### Przykład:

##### W języku Basic

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

##### W języku Python

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

## OpenTable

Otwiera okno Widok danych określonej tabeli i zwraca instancję usługi Datasheet.

Tabelę można otworzyć w trybie normalnym lub projektu.

Jeśli tabela jest już otwarta, jej okno Widok danych zostanie uaktywnione.

Zamknięcie dokumentu Base spowoduje również zamknięcie okna Widok danych.

### Składnia:

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

### Parametry:

tablename: nazwa istniejącej tabeli jako ciąg tekstowy z rozróżnianiem wielkości liter.

designmode: jeśli ten argument jest ustawiony na True, tabela jest otwierana w trybie projektu. W przeciwnym razie jest otwierana w trybie normalnym (domyślnie = False).

### Przykład:

##### W języku Basic

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

##### W języku Python

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

## PrintOut

Ta metoda wysyła zawartość podanego dokumentu formularza do drukarki domyślnej lub drukarki zdefiniowanej metodą SetPrinter().

Zwraca True, jeśli dokument został pomyślnie wydrukowany.

### Składnia:

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

### Parametry:

formdocument: prawidłowa nazwa formularza dokumentu jako ciąg z rozróżnianiem wielkości liter. Dokument formularza musi być otwarty, ta metoda go aktywuje.

pages: strony do wydrukowania jako ciąg, tak jak w interfejsie użytkownika. Przykład: "1-4;10;15-18". Domyślnie są to wszystkie strony.

copies: liczba kopii. Wartość domyślna to 1.

### Przykład:

##### W języku Basic

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

##### W języku Python

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

## SetPrinter

Ustawianie opcji drukarki dla dokumentu formularza. Dokument formularza musi być otwarty.

Zwraca True, gdy się powiedzie.

### Składnia:

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

### Parametry:

formdocument: prawidłowa nazwa formularza dokumentu jako ciąg z rozróżnianiem wielkości liter.

printer: nazwa kolejki drukarki, do której chcesz drukować. W przypadku nieobecności ustawiana jest drukarka domyślna.

orientation: albo PORTRAIT, albo LANDSCAPE. W przypadku braku pozostawione bez zmian w odniesieniu do ustawień drukarki.

paperformat: określa format papieru jako wartość ciągu, która może wynosić A3, A4, A5, LETTER, LEGAL lub TABLOID. Pozostawiony bez zmian w przypadku nieobecności.

### Przykład:

##### W języku Basic

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

##### W języku Python

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

Wszystkie podstawowe procedury lub identyfikatory ScriptForge poprzedzone znakiem podkreślenia „_” są zarezerwowane do użytku wewnętrznego. Nie należy ich używać w makrach Basic ani skryptach Pythona.

Tematy pokrewne

Usługa SFDatabases.Database

Usługa SFDocuments.Document

Usługa SFDocuments.Form

Usługa ScriptForge.UI