Indhold

# SFDatabases.Datasheet-tjeneste

Tjenesten Datasheet gør det muligt at visualisere indholdet af databasetabeller og resultater af forespørgsler og SQL-sætninger, med brug af datavisningen i Base. Derudover gør denne tjeneste det muligt at:

- Tilføje brugerdefinerede menuer til datavisningen.

- Tilgå værdier i specifikke positioner af datavisningen.

- Placere markøren i en specifik celle af datavisningen.

## Kald af tjeneste

Før du bruger Datasheet-tjenesten, skal ScriptForge-biblioteket være indlæst eller importeret:

• Basic-makroer kræver, at biblioteket ScriptForge indlæses med følgende udtryk:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Python-scripts kræver import af scriptforge-modulet:
from scriptforge import CreateScriptService

##### I Basic

Tjenesten Datasheet kan kaldes på to forskellige måder, afhængigt af om databasefilen er åben eller ikke.

Eksemplet nedenfor går ud fra, at databasefilen er åben, derfor kan UI-tjenesten bruges til at hente dokumentet, og metoden OpenTable fra Database-tjenesten bruges til at få in instans af Datasheet-tjenesten.

        Dim ui As Object, oBase As Object, oSheet As Object
        Set ui = CreateScriptService("UI")
        ' Objektet oBase er en instans af Base-tjenesten
        Set oBase = ui.GetDocument("C:\Documents\myDB.odb")
        ' Objektet oSheet er en instans af Datasheet-tjenesten
        Set oSheet = oBase.OpenTable("Customers")

I eksemplet ovenfor er det også muligt at bruge metoden OpenQuery fra Base-tjenesten til at få en Datasheet-instans.

For at kalde Datasheet-tjenesten når databasefilen ikke er åben, brug metoderne OpenTable, OpenQuery eller OpenSql fra Database-tjenesten. Eksemplet nedenfor bruger OpenTable-metoden til at åbne en eksisterende tabel i databasefilen:

        Dim oDatabase As Object, oSheet As Object
        ' Objektet oDatabase er en instans af Database-tjenesten
        Set oDatabase = CreateScriptService("Database", "C:\Documents\myDB.odb")
        ' Objektet oSheet er en instans af Datasheet-tjenesten
        Set oSheet = oDatabase.OpenTable("Customers")

##### I Python

Eksemplerne ovenfor kan oversættes til Python således:

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

## Egenskaber

De følgende egenskaber er tilgængelige i tjenesten Datasheet:

Navn | Skrivebeskyttet | Type | Beskrivelse
--- | --- | --- | ---
ColumnHeaders | Ja | Array af strenge | Returnerer et Array med navnene på kolonneoverskrifterne i dataarket.
CurrentColumn | Ja | String | Returnerer det aktuelt valgte kolonnenavn.
CurrentRow | Ja | Integer | Returnerer tallet på den aktuelt valgte række, begyndende med 1.
DatabaseFileName | Ja | String | Returnerer filnavnet på Base-filen i FSO.FileNaming-format.
Filter | Nej | String | Specificerer et filter som skal anvendes på dataarket, på form som en WHERE-delsætning i en SQL-forespørgsel uden nøgleordet WHERE. Hvis der angives en tom streng, så bliver det aktive Filter fjernet.
LastRow | Ja | Integer | Returnerer antallet af rækker i datasættet
OrderBy | Nej | String | Angiver rækkefølgen for visning af dataposterne, på form som en ORDER BY-delsætning fra en SQL-forespørgsel, uden nøgleordet ORDER BY. Hvis der angives en tom streng, så fjernes den aktive OrderBy.
ParentDatabase | Ja | Objekt | Returnerer den instans af Database-tjenesten, som dataarket tilhører.
Source | Ja | String | Returnerer en streng som repræsenterer datakilden, hvilket kan være et SQL-udtryk, et tabelnavn eller et forespørgselsnavn.
SourceType | Ja | String | Returner typen af datakilden, hvilket kan være en af de følgende værdier: "SQL", "TABLE" eller "QUERY" (forespørgsel).
XComponent | Ja | UNO-objekt | Returnerer det com.sun.star.lang.XComponent UNO-objekt, som repræsenterer dataarket.
XControlModel | Ja | UNO-objekt | Returnerer det com.sun.star.awt.XControl UNO-objekt, som repræsenterer dataarket.
XTabControllerModel | Ja | UNO-objekt | Returnerer det com.sun.star.awt.XTabControllerModel UNO-objekt, som repræsenterer dataarket.

## Metoder

Liste over metoder i tjenesten Datasheet
Activate CloseDatasheet CreateMenu | GetText GetValue GoToCell | RemoveMenu Toolbars

## Activate

Sætter datavisningsvinduet, som refereres til at Datasheet-instansen, i forgrunden.

### Syntaks:

svc.Activate()

### Eksempel:

##### I Basic

          oSheet.Activate()

##### I Python

          sheet.Activate()

## CloseDatasheet

Lukker det datavisningsvindue, som refereres til at Datasheet-instansen.

### Syntaks:

svc.CloseDatasheet()

### Eksempel:

##### I Basic

          oSheet.CloseDatasheet()

##### I Python

          sheet.CloseDatasheet()

## CreateMenu

Opretter et nyt menuelement i datavisningsvinduet og returnerer en instans af SFWidgets.Menu, som menuelementer programmeringsmæssigt kan tilføjes med.

Menuer tilføjet med CreateMenu-metoden går tabt, så snart datavisningsvinduet lukkes.

### Syntaks:

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

### Parametre:

menuheader: Navne på den nye menu.

before: Dette argument kan enten være navnet på et eksisterende menuelement, som den nye menu vil blive placeret før, eller argumentet kan være et tal, som udtrykker placeringen af den nye menu. Hvis dette argument står tomt, bliver den nye menu placeret som det sidste element.

submenuchar: Skilletegnet brug i menu-træer (standard = ">")

### Eksempel:

##### I Basic

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

##### I Python

          menu = sheet.CreateMenu("Min menu", before="Data")
          menu.AddItem("Item 1", command=".uno:Om")
          # ...
          menu.Dispose()

Læs hjælpesiden Menu-tjeneste for at lære mere om, hvordan du opretter menuer og undermenuer og tilknytter kommandoer.

## GetText

Returnerer teksten i en given kolonne fra den aktuelle række.

Denne metode ændrer ikke markørens placering i datavisningsvinduet.

### Syntaks:

svc.GetText(column: any): str

### Parametre:

column: Navnet på kolonnen som en streng eller en kolonneposition (begyndende med 1). Hvis en position er større end antallet af kolonner, returneres den sidste kolonne.

### Eksempel:

##### I Basic

          oSheet.GetText("FirstName")

##### I Python

          sheet.GetText("FirstName")

## GetValue

Returnerer værdien en en given kolonne fra den aktuelle række som en gyldig Basic-type.

Følgende typer kan blive returneret: String, Integer, Long, Single, Double, Date og Null.

Binære typer returneres som en Long-værdi, der angiver længden på det binære felt.

Værdien Empty returneres, hvis den krævede værdi ikke kunne hentes.

Denne metode ændrer ikke markørens placering i datavisningsvinduet.

### Syntaks:

svc.GetValue(column: any): any

### Parametre:

column: Navnet på kolonnen som en streng eller en kolonneposition (begyndende med 1). Hvis en position er større end antallet af kolonner, returneres den sidste kolonne.

### Eksempel:

##### I Basic

          oSheet.GetValue("Address")

##### I Python

          sheet.GetValue("Address")

## GoToCell

Flytter markøren til den angivne række og kolonne.

### Syntaks:

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

### Parametre:

row: Rækkenummeret som en talværdi, begyndende med 1. Hvis det forespurgte rækkenummer overskrider antallet af eksisterende rækker, bliver markøren flyttet til den sidste række. Hvis dette argument ikke er angivet, bliver rækken ikke ændret.

column: Navnet på kolonnen som en String eller kolonnenummeret (begyndende med 1). Hvis det forespurgte kolonnenummer overskrider antallet af eksisterende kolonner, bliver markøren flyttet til den sidste kolonne. Hvis dette argument ikke er angivet, bliver kolonnen ikke ændret.

### Eksempel:

##### I Basic

          ' Flytter markøren til kolonnen "Efternavn" i række 4
          oSheet.GoToCell(4, "Efternavn")
          ' Flytter markøren til den tredje kolonne i den aktuelle række
          oSheet.GoToCell(Column := 3)
          ' Flytter markøren en række ned i den samme kolonne
          oSheet.GoToCell(Row := oSheet.CurrentRow + 1)
          ' Flytter til den sidste kolonne i den sidste række
          Dim LastColumn As Integer : LastColumn = UBound(oSheet.ColumnHeaders) + 1
          oSheet.GoToCell(oSheet.LastRow, LastColumn)

##### I Python

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

## RemoveMenu

Fjerner et menuelement fra datavisningen ud fra navnet.

Denne kommando kan fjerne menuer som tilhører standard-brugerfladen, så vel som menuer der blev programmeringsmæssigt tilføjet med CreateMenu-metoden. Fjernelse af standardmenuer er ikke permanent, og de vil dukke op igen efter at vinduet er blevet lukket og åbnet igen.

### Syntaks:

svc.RemoveMenu(menuheader: str): bool

### Parametre:

menuheader: Navnet på menuen, der skal fjernes, med forskel på store og små bogstaver. Navne må ikke indeholde tilde-tegnet ("~").

### Eksempel:

##### I Basic

          oSheet.RemoveMenu("Data")

##### I Python

          sheet.RemoveMenu("Data")

### Toolbars

Denne metode returnerer enten en liste med navne på de tilgængelige værktøjslinjer i det aktuelle dokument, eller en instans af SFWidgets.Toolbar-tjenesten.

### Syntaks:

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

### Parametre:

ToolbarName: Det sædvanlige navn på en af de tilgængelige værktøjslinjer.

### Eksempel:

##### I Basic

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

##### I Python

        a_list = doc.Toolbars()

Alle ScriptForge Basic-rutiner eller identifikatorer, der indledes med et understregstegn "_" er reserveret til internt brug. Det er ikke meningen, at de skal bruges i Basic-makroer eller Python-scripts.

Relaterede emner

Tjenesten SFDatabases.Database

Tjenesten ScriptForge.UI (brugerflade)