Hilfe für LibreOffice 24.8
Der Service Datasheet ermöglicht es, den Inhalt von Datenbanktabellen sowie die Ergebnisse von Abfragen und SQL-Anweisungen mithilfe von Base Data View zu visualisieren. Darüber hinaus ermöglicht dieser Dienst Folgendes:
Der Datenansicht benutzerdefinierte Menüs hinzufügen.
Auf Werte an bestimmten Positionen der Datenansicht zugreifen.
Den Cursor in einer bestimmten Zelle der Datenansicht positionieren.
Vor der Verwendung des Dienstes Datasheet muss die Bibliothek ScriptForge geladen oder importiert werden:
Der Dienst Datasheet kann auf zwei verschiedene Arten aufgerufen werden, je nachdem, ob die Datenbankdatei geöffnet ist.
Das folgende Beispiel geht davon aus, dass die Datenbankdatei geöffnet ist, daher kann der Dienst UI verwendet werden, um das Dokument und die Methode OpenTable aus dem Dienst Database abzurufen, der wird verwendet, um eine Dienstinstanz Datasheet zu erhalten.
    Dim ui As Object, oBase As Object, oSheet As Object
    Set ui = CreateScriptService("UI")
    ' Objekt oBase ist eine Instanz des Base-Dienstes
    Set oBase = ui.GetDocument("C:\Documents\myDB.odb")
    ' Object oSheet ist eine Instanz des Dienstes "Datasheet"
    Set oSheet = oBase.OpenTable("Customers")
  Im obigen Beispiel ist es auch möglich, die Methode OpenQuery des Dienstes Base zu verwenden, um eine Instanz Datasheet zu erhalten.
Um den Dienst Datasheet aufzurufen, wenn die Datenbankdatei nicht geöffnet ist, verwenden Sie die Methoden OpenTable, OpenQuery oder OpenSql des Dienstes Database. Das folgende Beispiel verwendet die Methode OpenTable, um eine vorhandene Tabelle in der Datenbankdatei zu öffnen:
    Dim oDatabase As Object, oSheet As Object
    ' Objekt oDatabase ist eine Instanz des Dienstes "Database"
    Set oDatabase = CreateScriptService("Database", "C:\Documents\myDB.odb")
    ' Object oSheet ist eine Instanz des Dienstes "Datasheet"
    Set oSheet = oDatabase.OpenTable("Customers")
  Die obigen Beispiele können wie folgt in Python übersetzt werden:
    from scriptforge import CreateScriptService
    ui = CreateScriptService("UI")
    base_doc = ui.GetDocument(r"C:\Documents\MyFile.odb")
    sheet = base_doc.OpenTable("Customers")
  
    database = CreateScriptService("Database", r"C:\Documents\myDB.odb")
    sheet = database.OpenTable("Customers")
  Die folgenden Eigenschaften sind im Service Datasheet verfügbar:
| Name | schreibgeschützt | Typ | Beschreibung | 
|---|---|---|---|
| ColumnHeaders | Ja | Matrix mit Zeichenfolgen | Gibt eine Matrix mit den Namen der Spaltenüberschriften der Datentabelle zurück. | 
| CurrentColumn | Ja | String | Gibt den aktuell ausgewählten Spaltennamen zurück. | 
| CurrentRow | Ja | Integer | Gibt die Nummer der aktuell ausgewählten Zeile zurück, beginnend bei 1. | 
| DatabaseFileName | Ja | String | Gibt den Dateinamen der Bass-Datei im Format FSO.FileNaming zurück. | 
| Filter | Nein | String | Legt einen Filter fest, der auf die Datentabelle angewendet werden soll, ausgedrückt als Klausel WHERE einer SQL-Abfrage ohne das Schlüsselwort WHERE. Wenn eine leere Zeichenfolge angegeben wird, wird der aktive Filter entfernt. | 
| LastRow | Ja | Integer | Gibt die Anzahl der Zeilen in der Datentabelle zurück. | 
| OrderBy | Nein | String | Legt die Reihenfolge fest, in der Datensätze angezeigt werden, ausgedrückt als Klausel ORDER BY einer SQL-Abfrage ohne das Schlüsselwort ORDER BY. Wenn eine leere Zeichenfolge angegeben wird, wird das aktive OrderBy entfernt. | 
| ParentDatabase | Ja | Objekt | Gibt die Dienstinstanz Database zurück, zu der die Datentabelle gehört. | 
| Source | Ja | String | Gibt eine Zeichenfolge zurück, welche die Datenquelle darstellt, die eine SQL-Anweisung, ein Tabellenname oder ein Abfragename sein kann. | 
| SourceType | Ja | String | Gibt den Typ der Datenquelle zurück, der einer der folgenden Werte sein kann: „SQL“, „TABLE“ oder „QUERY“. | 
| XComponent | Ja | UNO-Objekt | Gibt das UNO-Objekt com.sun.star.lang.XComponent zurück, welches die Datentabelle repräsentiert. | 
| XControlModel | Ja | UNO-Objekt | Gibt das UNO-Objekt com.sun.star.awt.XControl zurück, das die Datentabelle repräsentiert. | 
| XTabControllerModel | Ja | UNO-Objekt | Gibt das UNO-Objekt com.sun.star.awt.XTabControllerModel zurück, das die Datentabelle repräsentiert. | 
| Methodenliste im Dienst "Datasheet" | ||
|---|---|---|
Bringt das Fenster Datenansicht in den Vordergrund, auf das von der Instanz Datasheet verwiesen wird.
svc.Activate()
      oSheet.Activate()
    
      sheet.Activate()
    Schließt das Fenster Datenansicht, auf das von der Instanz Datasheet verwiesen wird.
svc.CloseDatasheet()
      oSheet.CloseDatasheet()
    
      sheet.CloseDatasheet()
    Erstellt einen neuen Menüeintrag im Fenster Datenansicht und gibt eine Dienstinstanz SFWidgets.Menu zurück, mit der Menüelemente programmgesteuert hinzugefügt werden können.
Menüs, die mit der Methode CreateMenu hinzugefügt wurden, gehen verloren, sobald das Fenster Datenansicht geschlossen wird.
svc.CreateMenu(menuheader: str, opt before: any, opt submenuchar: str): obj
menuheader: Der Name des neuen Menüs.
before: Dieses Argument kann entweder der Name eines bestehenden Menüeintrags sein, vor dem das neue Menü platziert wird, oder eine Zahl, welche die Position des neuen Menüs ausdrückt. Wenn dieses Argument leer gelassen wird, wird das neue Menü als letzter Eintrag platziert.
submenuchar: Das in Menübäumen verwendete Trennzeichen (Standard = ">")
      Dim oMenu As Object
      Set oMenu = oSheet.CreateMenu("Mein Menü", Before := "Data")
      With oMenu
          .AddItem("Eintrag 1", Command := ".uno:About")
          ' ...
          .Dispose()
      End With
    
      menu = sheet.CreateMenu("Mein Menü", before="Data")
      menu.AddItem("Eintrag 1", command=".uno:About")
      # ...
      menu.Dispose()
    Lesen Sie die Hilfeseite Dienst Menu, um mehr darüber zu erfahren, wie Sie Menü- und Untermenüeinträge erstellen und Befehle zuordnen.
Gibt den Text in einer bestimmten Spalte der aktuellen Zeile zurück.
Diese Methode ändert nicht die Position des Cursors im Fenster Datenansicht.
svc.GetText(column: any): str
column: Der Name der Spalte als Zeichenfolge oder die Spaltenposition (beginnend bei 1). Wenn eine Position angegeben wird, die größer als die Anzahl der Spalten ist, wird die letzte Spalte zurückgegeben.
      oSheet.GetText("FirstName")
    
      sheet.GetText("FirstName")
    Gibt den Wert in einer bestimmten Spalte der aktuellen Zeile als gültigen Basic-Typ zurück.
Folgende Typen können zurückgegeben werden: String, Integer, Long, Single, Double, Date und Null.
Binäre Typen werden als Wert Long zurückgegeben, der die Länge des binären Felds angibt.
Ein Wert Empty wird zurückgegeben, wenn der erforderliche Wert nicht abgerufen werden konnte.
Diese Methode ändert nicht die Position des Cursors im Fenster Datenansicht.
svc.GetValue(column: any): any
column: Der Name der Spalte als Zeichenfolge oder die Spaltenposition (beginnend bei 1). Wenn eine Position angegeben wird, die größer als die Anzahl der Spalten ist, wird die letzte Spalte zurückgegeben.
      oSheet.GetValue("Address")
    
      sheet.GetValue("Address")
    Bewegt den Cursor in die angegebene Zeile und Spalte.
svc.GoToCell(opt row: int, opt column: any): bool
row: Die Zeilennummer als numerischer Wert, beginnend bei 1. Wenn die angeforderte Zeile die Anzahl der vorhandenen Zeilen überschreitet, wird der Cursor in die letzte Zeile verschoben. Wenn dieses Argument nicht angegeben ist, wird die Zeile nicht geändert.
column: Der Name der Spalte als Zeichenfolge oder die Spaltenposition (beginnend bei 1). Wenn die angeforderte Spalte die Anzahl der vorhandenen Spalten überschreitet, wird der Cursor auf die letzte Spalte bewegt. Wenn dieses Argument nicht angegeben ist, wird die Spalte nicht geändert.
      ' Bewegt den Cursor in die Spalte "Nachname" in Zeile 4
      oSheet.GoToCell(4, "Nachname")
      ' Bewegt den Cursor in die dritte Spalte der aktuellen Zeile
      oSheet.GoToCell(Column := 3)
      ' Bewegt den Cursor eine Zeile nach unten und belässt ihn in derselben Spalte
      oSheet.GoToCell(Row := oSheet.CurrentRow + 1)
      ' Springt zur letzten Spalte der letzten Zeile
      Dim LastColumn As Integer : LastColumn = UBound(oSheet.ColumnHeaders) + 1
      oSheet.GoToCell(oSheet.LastRow, LastColumn)
    
      sheet.GoToCell(4, "Nachname")
      sheet.GoToCell(column=3)
      sheet.GoToCell(row=sheet.CurrentRow + 1)
      sheet.GoToCell(sheet.LastRow, len(sheet.ColumnHeaders))
    Entfernt einen Menüeintrag anhand seines Namens aus der Datenansicht.
Diese Methode kann Menüs entfernen, die zur Standard-Benutzeroberfläche gehören, sowie Menüs, die programmgesteuert mit der Methode CreateMenu hinzugefügt wurden. Das Entfernen von Standardmenüs ist nicht dauerhaft und sie werden wieder angezeigt, nachdem das Fenster geschlossen und erneut geöffnet wurde.
svc.RemoveMenu(menuheader: str): bool
menuheader: Der Name des Menüs, das entfernt werden soll, wobei die Groß-/Kleinschreibung beachtet werden muss. Der Name darf keine Tilde ("~") enthalten.
      oSheet.RemoveMenu("Data")
    
      sheet.RemoveMenu("Data")