Spis treści

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

Metoda CloseFormDocument jest przestarzała od wersji 7.6 LibreOffice. Chociaż jest nadal dostępna, może zostać usunięta z usługi Base w przyszłej wersji. Zamiast tego użyj metody CloseDocument z usługi FormDocument.

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

Metoda Forms jest przestarzała od wersji 7.6 LibreOffice. Chociaż jest nadal dostępna, może zostać usunięta z usługi Base w przyszłej wersji. Zamiast tego użyj metody Forms z usługi FormDocument.

### 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śloną FormDocument w trybie normalnym lub w trybie projektowania. Ta metoda zwraca instancję usługi FormDocument odpowiadającą określonemu dokumentowi formularza.

Jeżeli dokument formularza jest już otwarty, zostaje on aktywowany bez zmiany jego trybu.

Jeśli określony dokument formularza nie istnieje, zwracane jest Nothing.

### Składnia:

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

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

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

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

##### W języku Python

        formDoc = doc.OpenFormDocument("myFormDocument")

        formDoc = 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.

Metoda PrintOut jest przestarzała od wersji 7.6 LibreOffice. Chociaż jest nadal dostępna, może zostać usunięta z usługi Base w przyszłej wersji. Zamiast tego użyj metody PrintOut z usługi FormDocument.

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

Metoda SetPrinter jest przestarzała od wersji 7.6 LibreOffice. Chociaż jest nadal dostępna, może zostać usunięta z usługi Base w przyszłej wersji. Zamiast tego użyj metody SetPrinter z usługi Document.

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