Inhoud

# SFDatabases.Datasheet-service

De Datasheet-service maakt het mogelijk om de inhoud van databasetabellen te visualiseren, evenals de resultaten van query's en SQL-statements met behulp van Base's Gegevensweergave. Bovendien maakt deze service het volgende mogelijk:

- Voeg aangepaste menu's toe aan de gegevensweergave.

- Krijg toegang tot waarden op specifieke posities van de gegevensweergave.

- Plaats de cursor in een specifieke cel van de gegevensweergave.

## Serviceaanroep

Voordat u de Datasheet-service gebruikt, moet de ScriptForge-bibliotheek worden geladen of geïmporteerd:

• Basic macro's kunnen de bibliotheek ScriptForge laden met de instructie:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Python scripts kunnen de module scriptforge importeren met:
from scriptforge import CreateScriptService

##### In BASIC

De Datasheet-service kan op twee verschillende manieren worden aangeroepen, afhankelijk van of het databasebestand open is.

In het onderstaande voorbeeld wordt ervan uitgegaan dat het databasebestand open is, vandaar dat de UI-service kan worden gebruikt om het document en de OpenTable-methode op te halen uit de Database-service wordt gebruikt om een Datasheet-service-instantie op te halen.

        Dim ui As Object, oBase As Object, oSheet As Object
        Set ui = CreateScriptService("UI")
        ' Object oBase is een instantie van de Base-service
        Set oBase = ui.GetDocument("C:\Documents\myDB.odb")
        ' Object oSheet is een exemplaar van de Datasheet-service
        Set oSheet = oBase.OpenTable("Customers")

In het bovenstaande voorbeeld is het ook mogelijk om de methode OpenQuery van de Base-service te gebruiken om een Datasheet-instantie te verkrijgen.

Om de Datasheet-service aan te roepen wanneer het databasebestand niet is geopend, gebruikt u de methoden OpenTable, OpenQuery of OpenSql van de Database-service. In het onderstaande voorbeeld wordt de methode OpenTable gebruikt om een bestaande tabel in het databasebestand te openen:

        Dim oDatabase As Object, oSheet As Object
        ' Object oDatabase is een exemplaar van de Database-service
        Set oDatabase = CreateScriptService("Database", "C:\Documents\myDB.odb")
        ' Object oSheet is een exemplaar van de Datasheet-service
        Set oSheet = oDatabase.OpenTable("Customers")

##### In Python

De bovenstaande voorbeelden kunnen als volgt naar Python worden vertaald:

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

## Eigenschappen

De volgende eigenschappen zijn beschikbaar in de Datasheet-service:

Naam | Alleen-lezen | Type | Beschrijving
--- | --- | --- | ---
ColumnHeaders | Ja | Matrix van tekenreeksen | Retourneert een Matrix met de namen van kolomkoppen in het gegevensblad.
CurrentColumn | Ja | String | Retourneert de momenteel geselecteerde kolomnaam.
CurrentRow | Ja | Integer | Retourneert het nummer van de momenteel geselecteerde rij, beginnend bij 1.
DatabaseFileName | Ja | String | Retourneert de bestandsnaam van het basisbestand in de indeling FSO.FileNaming.
Filter | Nee | String | Specificeert een filter dat moet worden toegepast op het gegevensblad, uitgedrukt als de WHERE-clausule van een SQL-query zonder het sleutelwoord WHERE. Als een lege string wordt opgegeven, wordt het actieve Filter verwijderd.
LastRow | Ja | Integer | Retourneert het aantal rijen in het gegevensblad.
OrderBy | Nee | String | Specificeert de volgorde waarin records worden weergegeven, uitgedrukt als de clausule ORDER BY van een SQL-query zonder het sleutelwoord ORDER BY. Als een lege string wordt opgegeven, wordt de actieve OrderBy verwijderd.
ParentDatabase | Ja | Object | Retourneert de Database-service-instantie waartoe het gegevensblad behoort.
Source | Ja | String | Retourneert een tekenreeks die de gegevensbron vertegenwoordigt. Dit kan een SQL-instructie, een tabelnaam of een querynaam zijn.
SourceType | Ja | String | Retourneert het type van de gegevensbron, wat een van de volgende waarden kan zijn: "SQL", "TABLE" of "QUERY".
XComponent | Ja | UNO-object | Retourneert het com.sun.star.lang.XComponent UNO-object dat de datasheet vertegenwoordigt.
XControlModel | Ja | UNO-object | Retourneert het com.sun.star.awt.XControl UNO-object dat het gegevensblad vertegenwoordigt.
XTabControllerModel | Ja | UNO-object | Retourneert het com.sun.star.awt.XTabControllerModel UNO-object dat het gegevensblad vertegenwoordigt.

## Methodes

Lijst met methodes in de Datasheet-service
Activate CloseDatasheet CreateMenu | GetText GetValue GoToCell | RemoveMenu Toolbars

## Activate

Brengt het gegevensweergavevenster naar voren waarnaar wordt verwezen door de instantie Datasheet.

### Syntaxis:

svc.Activate()

### Voorbeeld:

##### In BASIC

          oSheet.Activate()

##### In Python

          sheet.Activate()

## CloseDatasheet

Sluit het gegevensweergavevenster waarnaar wordt verwezen door de instantie Datasheet.

### Syntaxis:

svc.CloseDatasheet()

### Voorbeeld:

##### In BASIC

          oSheet.CloseDatasheet()

##### In Python

          sheet.CloseDatasheet()

## CreateMenu

Creëert een nieuw menu-item in het gegevensweergavevenster en retourneert een SFWidgets.Menu-service-instantie, waarmee menu-items programmatisch kunnen worden toegevoegd.

Menu's die zijn toegevoegd met de methode CreateMenu gaan verloren zodra het gegevensweergavevenster wordt gesloten.

### Syntaxis:

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

### Parameters:

menuheader: De naam van het nieuwe menu.

before: Dit argument kan de naam zijn van een bestaand menu-item waarvoor het nieuwe menu wordt geplaatst of een getal dat de positie van het nieuwe menu aangeeft. Als dit argument leeg wordt gelaten, wordt het nieuwe menu als laatste item geplaatst.

submenuchar: Het scheidingsteken dat wordt gebruikt in menustructuren (standaard = ">")

### Voorbeeld:

##### In BASIC

          Dim oMenu As Object
          Set oMenu = oSheet.CreateMenu("My Menu", Before := "Data")
          With oMenu
              .AddItem("Item 1", Command := ".uno:About")
              ' ...
              .Dispose()
          End With

##### In Python

          menu = sheet.CreateMenu("My Menu", before="Data")
          menu.AddItem("Item 1", command=".uno:About")
          # ...
          menu.Dispose()

Lees de helppagina van Menuservice voor meer informatie over het maken van menu- en submenu-items en het koppelen van opdrachten.

## GetText

Retourneert de tekst in een bepaalde kolom van de huidige rij.

Deze methode verandert de positie van de cursor in het gegevensweergavevenster niet.

### Syntaxis:

svc.GetText(column: any): str

### Parameters:

column: De naam van de kolom als een tekenreeks of de kolompositie (beginnend bij 1). Als een positie groter dan het aantal kolommen wordt opgegeven, wordt de laatste kolom geretourneerd.

### Voorbeeld:

##### In BASIC

          oSheet.GetText("FirstName")

##### In Python

          sheet.GetText("FirstName")

## GetValue

Retourneert de waarde in een bepaalde kolom van de huidige rij als een geldig basistype.

De soorten die kunnen worden geretourneerd zijn: String, Integer, Long, Single, Double, Date en Null.

Binaire types worden geretourneerd als een Long-waarde die de lengte van het binaire veld aangeeft.

Er wordt een waarde Empty geretourneerd als de vereiste waarde niet kon worden opgehaald.

Deze methode verandert de positie van de cursor in het gegevensweergavevenster niet.

### Syntaxis:

svc.GetValue(column: any): any

### Parameters:

column: De naam van de kolom als een tekenreeks of de kolompositie (beginnend bij 1). Als een positie groter dan het aantal kolommen wordt opgegeven, wordt de laatste kolom geretourneerd.

### Voorbeeld:

##### In BASIC

          oSheet.GetValue("Address")

##### In Python

          sheet.GetValue("Address")

## GoToCell

Verplaatst de cursor naar de opgegeven rij en kolom.

Deze methode verandert de positie van de cursor in het gegevensweergavevenster niet.

### Syntaxis:

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

### Parameters:

row: Het rijnummer als een numerieke waarde beginnend bij 1. Als de gevraagde rij het aantal bestaande rijen overschrijdt, wordt de cursor verplaatst naar de laatste rij. Als dit argument niet wordt opgegeven, wordt de rij niet gewijzigd.

column: De naam van de kolom als een String of de kolompositie (beginnend bij 1). Als de gevraagde kolom het aantal bestaande kolommen overschrijdt, wordt de cursor verplaatst naar de laatste kolom. Als dit argument niet wordt opgegeven, wordt de kolom niet gewijzigd.

### Voorbeeld:

##### In BASIC

          ' Verplaatst de cursor naar de kolom "Achternaam" in rij 4
          oSheet.GoToCell(4, "Achternaam")
          ' Verplaatst de cursor naar de derde kolom van de huidige rij
          oSheet.GoToCell(Column := 3)
          ' Verplaatst de cursor één rij naar beneden en laat deze in dezelfde kolom staan
          oSheet.GoToCell(Row := oSheet.CurrentRow + 1)
          ' Gaat naar de laatste kolom van de laatste rij
          Dim LastColumn As Integer : LastColumn = UBound(oSheet.ColumnHeaders) + 1
          oSheet.GoToCell(oSheet.LastRow, LastColumn)

##### In Python

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

## RemoveMenu

Verwijdert een menu-item uit de gegevensweergave op naam.

Deze methode kan menu's verwijderen die behoren tot de standaard gebruikersinterface, evenals menu's die programmatisch zijn toegevoegd met de methode CreateMenu. Het verwijderen van standaardmenu's is niet permanent en ze zullen opnieuw verschijnen nadat het venster is gesloten en opnieuw is geopend.

### Syntaxis:

svc.RemoveMenu(menuheader: str): bool

### Parameters:

menuheader: De hoofdlettergevoelige naam van het menu dat moet worden verwijderd. De naam mag geen tilde ("~") karakter bevatten.

### Voorbeeld:

##### In BASIC

          oSheet.RemoveMenu("Data")

##### In Python

          sheet.RemoveMenu("Data")

### Toolbars

Deze methode retourneert een lijst met de beschikbare werkbalknamen in het daadwerkelijke document of een exemplaar SFWidgets.Toolbar-service.

### Syntaxis:

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

### Parameters:

ToolbarName: De gebruikelijke naam van een van de beschikbare werkbalken.

### Voorbeeld:

##### In BASIC

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

##### In Python

        a_list = doc.Toolbars()

Alle ScriptForge Basic-routines of variabelen die beginnen met een underscore "_" zijn voor intern gebruik. Gebruik deze niet in een Basic of Python-macro.

Verwante onderwerpen

SFDatabases.Database-service

Service ScriptForge.UI