Inhalte

# Dienst SFDatabases.Datasheet

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.

## Dienstaufruf

Vor der Verwendung des Dienstes Datasheet 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 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")

##### In Python

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

## Eigenschaften

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.

## Methoden

Methodenliste im Dienst "Datasheet"
Activate CloseDatasheet CreateMenu | GetText GetValue GoToCell | RemoveMenu Toolbars

## Activate

Bringt das Fenster Datenansicht in den Vordergrund, auf das von der Instanz Datasheet verwiesen wird.

### Syntax:

svc.Activate()

### Beispiel:

##### In Basic

          oSheet.Activate()

##### In Python

          sheet.Activate()

## CloseDatasheet

Schließt das Fenster Datenansicht, auf das von der Instanz Datasheet verwiesen wird.

### Syntax:

svc.CloseDatasheet()

### Beispiel:

##### In Basic

          oSheet.CloseDatasheet()

##### In Python

          sheet.CloseDatasheet()

## CreateMenu

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.

### Syntax:

svc.CreateMenu(menuheader: str, opt before: any, opt submenuchar: str): obj

### Parameter:

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

### Beispiel:

##### In Basic

          Dim oMenu As Object
          Set oMenu = oSheet.CreateMenu("Mein Menü", Before := "Data")
          With oMenu
              .AddItem("Eintrag 1", Command := ".uno:About")
              ' ...
              .Dispose()
          End With

##### In Python

          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.

## GetText

Gibt den Text in einer bestimmten Spalte der aktuellen Zeile zurück.

Diese Methode ändert nicht die Position des Cursors im Fenster Datenansicht.

### Syntax:

svc.GetText(column: any): str

### Parameter:

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.

### Beispiel:

##### In Basic

          oSheet.GetText("FirstName")

##### In Python

          sheet.GetText("FirstName")

## GetValue

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.

### Syntax:

svc.GetValue(column: any): any

### Parameter:

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.

### Beispiel:

##### In Basic

          oSheet.GetValue("Address")

##### In Python

          sheet.GetValue("Address")

## GoToCell

Bewegt den Cursor in die angegebene Zeile und Spalte.

Diese Methode ändert nicht die Position des Cursors im Fenster Datenansicht.

### Syntax:

svc.GoToCell(opt row: int, opt column: any): bool

### Parameter:

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.

### Beispiel:

##### In Basic

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

##### In Python

          sheet.GoToCell(4, "Nachname")
          sheet.GoToCell(column=3)
          sheet.GoToCell(row=sheet.CurrentRow + 1)
          sheet.GoToCell(sheet.LastRow, len(sheet.ColumnHeaders))

## RemoveMenu

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.

### Syntax:

svc.RemoveMenu(menuheader: str): bool

### Parameter:

menuheader: Der Name des Menüs, das entfernt werden soll, wobei die Groß-/Kleinschreibung beachtet werden muss. Der Name darf keine Tilde ("~") enthalten.

### Beispiel:

##### In Basic

          oSheet.RemoveMenu("Data")

##### In Python

          sheet.RemoveMenu("Data")

### Toolbars

Diese Methode gibt entweder eine Liste der verfügbaren Symbolleistennamen im eigentlichen Dokument oder eine Instanz des Services SFWidgets.Toolbar zurück.

### Syntax:

svc.Toolbars(opt ToolbarName: str): uno
svc.Toolbars(): str[0..]

### Parameter:

ToolbarName: Der übliche Name einer der verfügbaren Symbolleisten.

### Beispiel:

##### In Basic

        Dim oToolbar As Object
        Set oToolbar = oDoc.Toolbars("myToolbar")

##### In Python

        a_list = doc.Toolbars()

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 ScriptForge.UI