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:

tip

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:

note

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

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.

warning

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

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:

warning

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.

note

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.

note

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.

note

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.

warning

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.

warning

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

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.


Prosimy o wsparcie!