Hilfe für LibreOffice 24.8
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.
Vor der Verwendung des Dienstes Base muss die Bibliothek ScriptForge geladen oder importiert werden:
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")
  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 | ||
|---|---|---|
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.
svc.CloseFormDocument(formdocument: str): bool
formdocument: Der Name des Formulardokuments, das geschlossen werden soll, als Zeichenfolge mit Berücksichtigung der Groß- und Kleinschreibung.
Wenn Formulardokumente in Ordnern organisiert sind, muss der Ordnername angegeben werden, um das zu öffnende Formulardokument festzulegen, wie in den folgenden Beispielen dargestellt:
    oDoc.CloseFormDocument("Folder1/myFormDocument")
  
    doc.CloseFormDocument('Folder1/myFormDocument')
  Gibt eine Matrix mit den vollständigen Namen (Pfad / Name) aller Formulardokumente im Base-Dokument als nullbasierte Matrix von Zeichenfolgen zurück.
svc.FormDocuments(): str[0..*]
Der folgende Code-Schnipsel gibt die Namen aller Formulardokumente im aktuellen Base-Dokument aus.
    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
  
    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 ScriptForge.FormDocument.
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.
svc.Forms(formdocument: str): str[0..*]
svc.Forms(formdocument: str, form: str = ''): svc
svc.Forms(formdocument: str, form: int): svc
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.
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.
    Dim formsList as Object : formsList = oDoc.Forms("myFormDocument")
    Dim oForm as Object : oForm = oDoc.Forms("myFormDocument", "myForm")
  
    formsList = doc.Forms("myFormDocument")
    form = doc.Forms("myFormDocument", "myForm")
  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
svc.GetDatabase(user: str = '', password: str = ''): svc
user, password: Optionale Login-Parameter als Zeichenfolgen. Der Standardwert für beide Parameter ist eine leere Zeichenfolge "".
    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()
  
    ui = CreateScriptService("UI")
    myDoc = ui.OpenBaseDocument(r"C:\Documents\myDb.odb")
    myDatabase = myDoc.GetDatabase()
    # … Ausführen von Abfragen, SQL-Anweisungen, …
    myDatabase.CloseDatabase()
    myDoc.CloseDocument()
  Gibt True zurück, wenn das angegebene FormDocument derzeit geöffnet ist.
svc.IsLoaded(formdocument: str): bool
formdocument: Der Name eines zu prüfenden FormDocument, als Groß-/Kleinschreibung beachtende Zeichenfolge.
    If Not oDoc.IsLoaded("myFormDocument") Then
        oDoc.OpenFormDocument("myFormDocument")
    End If
  
    if not doc.IsLoaded("myFormDocument"):
        doc.OpenFormDocument("myFormDocument")
  Ö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.
svc.OpenFormDocument(formdocument: str, designmode: bool = False): svc
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.
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")
  
    formDoc = doc.OpenFormDocument("myFormDocument")
  
    formDoc = doc.OpenFormDocument("myFolder/myFormDocument")
  Ö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.
svc.OpenQuery(queryname: str, designmode: bool = False): obj
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).
      oDoc.OpenQuery("MyQuery", DesignMode := True)
    
      doc.OpenQuery("MyQuery", designmode=True)
    Ö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.
svc.OpenTable(tablename: str, designmode: bool = False): obj
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).
      oDoc.OpenTable("MyTable", DesignMode = False)
    
      doc.OpenTable("MyTable", designmode=False)
    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.
svc.PrintOut(opt formdocument: str, pages: str = "", copies: num = 1): bool
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.
    If oDoc.PrintOut("myForm", "1-4;10;15-18", Copies := 2) Then
        ' ...
    End If
  
    if doc.PrintOut('myForm', copies=3, pages='45-88'):
        # ...
  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.
svc.SetPrinter(opt formdocument: str, opt printer: str, opt orientation: str, paperformat: str): bool
formdocument: Ein gültiger Name des Dokumentformulars als Zeichenfolge mit Beachtung der Groß- und Kleinschreibung.
    oDoc.SetPrinter("myForm", Orientation := "PORTRAIT")
  
    doc.SetPrinter('myForm', paperformat='TABLOID')