Inhalte

# Dienst SFDocuments.Base

Der Dienst Base bietet eine Reihe von Methoden und Eigenschaften, um die Verwaltung und Handhabung von LibreOffice Base-Dokumenten zu erleichtern.

Dieser Dienst ist eng mit dem Dienst Document verbunden, der generische Methoden zur Handhabung von LibreOffice-Dokumenten, einschließlich Basisdokumenten, bereitstellt. Daher erweitert der Dienst Base den Dienst Document und stellt zusätzliche Methoden bereit, die spezifisch für Base-Dokumente sind und Benutzern Folgendes ermöglichen:

- Zugriff auf die Datenbank erhalten, die in einem Base-Dokument enthalten ist.

- Formulardokumente öffnen, die in einem Base-Dokument gespeichert sind.

- Überprüfen, ob derzeit ein Formulardokument aus einem Base-Dokument geladen ist.

Weitere Informationen zu Methoden und Eigenschaften, die zum Verwalten von LibreOffice-Dokumenten verwendet werden können, finden Sie im Dienst Document.

## Dienstaufruf

Vor der Verwendung des Dienstes Base muss die Bibliothek ScriptForge geladen oder importiert werden:

• Grundlegende Makros erfordern das Laden der Bibliothek ScriptForge mit der folgenden Anweisung:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Python-Skripte erfordern einen Import aus dem Modul scriptforge:
from scriptforge import CreateScriptService

##### In Basic

Der Base-Dienst kann auf verschiedene Arten aufgerufen werden. Der folgende Code-Schnipsel verwendet die Methode CreateBaseDocument des Dienstes UI, um eine neue Base-Datei zu erstellen.

Beachten Sie, dass in allen Beispielen das Objekt oDoc eine Instanz des Dienstes Base ist.

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

Der Dienst Base kann auch instanziiert werden, während eine vorhandene Base-Datei geöffnet wird, wie unten gezeigt:

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

Wenn bereits ein Base-Dokument geöffnet ist, kann der Dienst Base direkt instanziiert werden:

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

##### In Python

Die obigen Beispiele können wie folgt in Python übersetzt werden:

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

Die Verwendung der Teilzeichenfolge "SFDocuments." im vorherigen Beispiel ist optional.

Liste der Methoden im Dienst Base
CloseFormDocument FormDocuments Forms GetDatabase | IsLoaded OpenFormDocument OpenQuery OpenTable | PrintOut SetPrinter

## CloseFormDocument

Schließt das angegebene Formulardokument. Gibt True zurück, wenn das Schließen erfolgreich war.

Die Methode CloseFormDocument ist seit LibreOffice 7.6 veraltet. Obwohl es noch verfügbar ist, wird es möglicherweise in einer zukünftigen Version aus dem Dienst Base entfernt. Verwenden Sie stattdessen die Methode CloseDocument des Dienstes FormDocument.

### Syntax:

svc.CloseFormDocument(formdocument: str): bool

### Parameter:

formdocument: Der Name des Formulardokuments, das geschlossen werden soll, als Zeichenfolge mit Berücksichtigung der Groß- und Kleinschreibung.

### Beispiel:

Wenn Formulardokumente in Ordnern organisiert sind, muss der Ordnername angegeben werden, um das zu öffnende Formulardokument festzulegen, wie in den folgenden Beispielen dargestellt:

##### In Basic

        oDoc.CloseFormDocument("Folder1/myFormDocument")

##### In Python

        doc.CloseFormDocument('Folder1/myFormDocument')

## FormDocuments

Gibt eine Matrix mit den vollständigen Namen (Pfad / Name) aller Formulardokumente im Base-Dokument als nullbasierte Matrix von Zeichenfolgen zurück.

### Syntax:

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

### Beispiel:

Der folgende Code-Schnipsel gibt die Namen aller Formulardokumente im aktuellen Base-Dokument aus.

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

##### In Python

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

Weitere Informationen zu Formulardokumenten finden Sie auf der Hilfeseite des Dienstes Form.

## Forms

Abhängig von den bereitgestellten Parametern gibt diese Methode Folgendes zurück:

- Eine nullbasierte Matrix mit den Namen aller Formulare, die in einem Formulardokument enthalten sind (wenn das Argument Form fehlt)

- Ein Objekt SFDocuments.Form, welches das im Argument Form angegebene Formular darstellt.

Die Methode Forms ist seit LibreOffice 7.6 veraltet. Obwohl es noch verfügbar ist, wird es möglicherweise in einer zukünftigen Version aus dem Dienst Base entfernt. Verwenden Sie stattdessen die Methode Forms des Dienstes FormDocument.

### Syntax:

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

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

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

### Parameter:

formdocument: Der Name eines gültigen Formulardokuments als Zeichenfolge mit Berücksichtigung der Groß- und Kleinschreibung.

form: Der Name oder die Indexnummer des im Formulardokument gespeicherten Formulars. Fehlt dieses Argument, gibt die Methode eine Liste mit den Namen aller im Formulardokument verfügbaren Formulare zurück.

Obwohl es möglich ist, auf Formulare mit Indexnummern zu verweisen, wird dies nur empfohlen, wenn es nur ein Formular im Formulardokument gibt. Wenn es zwei oder mehr Formulare gibt, ist es besser, stattdessen den Formularnamen zu verwenden.

### Beispiel:

Die erste Zeile des folgenden Beispiels gibt eine Liste aller Formulare im Formulardokument "myFormDocument" zurück. Die zweite Zeile gibt eine Instanz des Dienstes Form zurück, die das Formular „myForm“ darstellt.

##### In Basic

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

##### In Python

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

## GetDatabase

Gibt eine Instanz des Dienstes Database zurück, welcher die Ausführung von SQL-Befehlen auf der im aktuellen Basisdokument definierten und/oder gespeicherten Datenbank ermöglicht

### Syntax:

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

### Parameter:

user, password: Optionale Login-Parameter als Zeichenfolgen. Der Standardwert für beide Parameter ist eine leere Zeichenfolge "".

### Beispiel:

##### In Basic

        Dim myDoc As Object, myDatabase As Object, ui As Object
        Set ui = CreateScriptService("UI")
        Set myDoc = ui.OpenBaseDocument("C:\Documents\myDb.odb")
        ' Benutzer und Kennwort werden unten angegeben, falls erforderlich
        Set myDatabase = myDoc.GetDatabase()
        ' … Ausführung von Abfragen, SQL-Anweisungen, …
        myDatabase.CloseDatabase()
        myDoc.CloseDocument()

##### In Python

        ui = CreateScriptService("UI")
        myDoc = ui.OpenBaseDocument(r"C:\Documents\myDb.odb")
        myDatabase = myDoc.GetDatabase()
        # … Ausführen von Abfragen, SQL-Anweisungen, …
        myDatabase.CloseDatabase()
        myDoc.CloseDocument()

## IsLoaded

Gibt True zurück, wenn das angegebene FormDocument derzeit geöffnet ist.

### Syntax:

svc.IsLoaded(formdocument: str): bool

### Parameter:

formdocument: Der Name eines zu prüfenden FormDocument, als Groß-/Kleinschreibung beachtende Zeichenfolge.

### Beispiel:

##### In Basic

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

##### In Python

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

## OpenFormDocument

Öffnet das angegebene FormDocument entweder im normalen oder im Designmodus. Diese Methode gibt eine Dienstinstanz FormDocument zurück, die dem angegebenen Formulardokument entspricht.

Wenn das Formulardokument bereits geöffnet ist, wird es aktiviert, ohne seinen Modus zu ändern.

Wenn das angegebene Formulardokument nicht existiert, wird Nothing zurückgegeben.

### Syntax:

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

### Parameter:

formDocument: Der Name des zu öffnenden FormDocument als Groß- und Kleinschreibung berücksichtigende Zeichenfolge.

designmode: Wenn dieses Argument True ist, wird das FormDocument im Designmodus geöffnet.

### Beispiel:

##### In Basic

Die meisten Formulardokumente werden im Stammverzeichnis des Base-Dokuments gespeichert und können einfach anhand ihres Namens geöffnet werden, wie im folgenden Beispiel:

        Dim oFormDoc As Object
        oFormDoc = oDoc.OpenFormDocument("myFormDocument")

Wenn Formulardokumente in Ordnern organisiert sind, muss der Ordnername angegeben werden, um das zu öffnende Formulardokument festzulegen, wie im folgenden Beispiel dargestellt:

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

##### In Python

        formDoc = doc.OpenFormDocument("myFormDocument")

        formDoc = doc.OpenFormDocument("myFolder/myFormDocument")

## OpenQuery

Öffnet das Datenansicht-Fenster der angegebenen Abfrage und gibt eine Instanz des Datenblatt-Dienstes zurück.

Die Abfrage kann entweder im normalen oder Erstellungsmodus geöffnet werden.

Wenn die Abfrage bereits geöffnet ist, wird das Fenster Datenansicht aktiv.

Das Schließen des Basisdokuments führt ebenfalls zum Schließen des Datenansicht-Fensters.

### Syntax:

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

### Parameter:

queryname: Der Name einer bestehenden Abfrage als Zeichenfolge unter Beachtung der Groß- und Kleinschreibung.

designmode: Wenn dieses Argument auf True gesetzt ist, wird die Abfrage im Designmodus geöffnet. Andernfalls wird sie im normalen Modus geöffnet (Standard = False).

### Beispiel:

##### In Basic

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

##### In Python

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

## OpenTable

Öffnet das Fenster Datenansicht der angegebenen Tabelle und gibt eine Instanz des Dienstes Datasheet zurück.

Die Tabelle kann entweder im Normal- oder Designmodus geöffnet werden.

Wenn die Tabelle bereits geöffnet ist, wird ihr Fenster Datenansicht aktiv gemacht.

Durch das Schließen des Base-Dokuments wird auch das Fenster Datenansicht geschlossen.

### Syntax:

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

### Parameter:

tablename: Der Name einer bestehenden Tabelle als Zeichenfolge unter Beachtung der Groß- und Kleinschreibung.

designmode: Wenn dieses Argument auf True gesetzt ist, wird die Tabelle im Designmodus geöffnet. Andernfalls wird es im normalen Modus geöffnet (Standard = False).

### Beispiel:

##### In Basic

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

##### In Python

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

## PrintOut

Diese Methode sendet den Inhalt des angegebenen Formulardokuments an einen Standarddrucker oder einen durch die Methode SetPrinter() definierten Drucker.

Gibt True zurück, wenn das Dokument erfolgreich gedruckt wurde.

Die Methode PrintOut ist seit LibreOffice 7.6 veraltet. Obwohl es noch verfügbar ist, wird es möglicherweise in einer zukünftigen Version aus dem Dienst Base entfernt. Verwenden Sie stattdessen die Methode PrintOut des Dienstes FormDocument.

### Syntax:

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

### Parameter:

formdocument: Ein gültiger Name des Dokumentformulars als Zeichenfolge mit Beachtung der Groß- und Kleinschreibung. Das Formulardokument muss geöffnet sein. Es wird durch die Methode aktiviert.

pages: Die Seiten, die gedruckt werden sollen, als Zeichenfolge wie in der Benutzeroberfläche. Beispiel: "1-4;10;15-18". Standard ist alle Seiten.

copies: Die Anzahl der Kopien. Standard ist 1.

### Beispiel:

##### In Basic

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

##### In Python

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

## SetPrinter

Legen Sie die Druckeroptionen für ein Formulardokument fest. Das Formulardokument muss geöffnet sein.

Gibt bei Erfolg True zurück.

Die Methode SetPrinter ist seit LibreOffice 7.6 veraltet. Obwohl es noch verfügbar ist, wird es möglicherweise in einer zukünftigen Version aus dem Dienst Base entfernt. Verwenden Sie stattdessen die Methode SetPrinter aus dem Dienst Document.

### Syntax:

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

### Parameter:

formdocument: Ein gültiger Name des Dokumentformulars als Zeichenfolge mit Beachtung der Groß- und Kleinschreibung.

printer: Der Name der Druckerwarteschlange, auf der gedruckt werden soll. Bei Fehlen wird der Standarddrucker verwendet.

orientation: Entweder PORTRAIT oder LANDSCAPE. Wenn nicht vorhanden, wird in Bezug auf die Druckereinstellungen unverändert belassen.

paperformat: Legt das Papierformat als Zeichenfolge fest, der entweder A3, A4, A5, LETTER, LEGAL oder TABLOID sein kann. Bleibt bei Abwesenheit unverändert.

### Beispiel:

##### In Basic

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

##### In Python

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

Alle ScriptForge Basic-Routinen oder Bezeichner, denen ein Unterstrich "_" vorangestellt ist, sind für den internen Gebrauch reserviert. Sie sind nicht für die Verwendung in Basic-Makros oder Python-Skripten vorgesehen.

Verwandte Themen

Dienst SFDatabases.Database

Dienst SFDocuments.Document

Dienst SFDocuments.Form

Dienst ScriptForge.UI