Obsah

# Služba SFDatabases.Datasheet

Služba Datasheet umožňuje vizualizovat obsah databázových tabulek a výsledků dotazů a SQL příkazů pomocí Pohledu na data aplikace Base. Kromě toho lze pomocí této služby:

- Přidávat k pohledu na data vlastní nabídky.

- Přistupovat v pohledu na data k hodnotám na zadaném umístění.

- Umisťovat kurzor na zadané buňky pohledu na data.

## Volání služby

Před používáním služby Datasheet je nutné načíst či naimportovat knihovnu ScriptForge pomocí:

• V makrech Basicu je nutné načíst knihovnu ScriptForge následujícím příkazem:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Ve skriptech Pythonu je nezbytné import z modulu scriptforge:
from scriptforge import CreateScriptService

##### V Basicu

Instanci služby Datasheet lze vytvořit dvěma různými způsoby závisejícími na tom, zda je databázový soubor otevřen.

V následujícím příkladu se předpokládá, že je databázový soubor otevřen, a tudíž je možné získat pomocí služby UI dokument a pomocí metody OpenTable ze služby Database poté instanci služby Datasheet.

        Dim ui As Object, oBase As Object, oSheet As Object
        Set ui = CreateScriptService("UI")
        ' Objekt oBase je instancí služby Base
        Set oBase = ui.GetDocument("C:\Documents\myDB.odb")
        ' Objekt oSheet je instancí služby Datasheet
        Set oSheet = oBase.OpenTable("Customers")

Ve výše uvedeném příkladu je také možné získat instanci služby Datasheet pomocí metody OpenQuery ze služby Base.

Chcete-li vytvořit instanci služby Datasheet v případě, že databázový soubor otevřen není, použijte metodu OpenTable, OpenQuery nebo OpenSql ze služby Database. V následujícím příkladu je k otevření existující tabulky databázového souboru použita metoda OpenTable:

        Dim oDatabase As Object, oSheet As Object
        ' Objekt oDatabase je instancí služby Database
        Set oDatabase = CreateScriptService("Database", "C:\Documents\myDB.odb")
        ' Objekt oSheet je instancí služby Datasheet
        Set oSheet = oDatabase.OpenTable("Customers")

##### V Pythonu

Do Pythonu lze tyto příklady převést následovně:

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

## Vlastnosti

Ve službě Datasheet jsou k dispozici následující vlastnosti:

Název | Pouze pro čtení | Typ | Popis
--- | --- | --- | ---
ColumnHeaders | ano | pole řetězců (String) | Vrátí pole (Array) s názvy záhlaví sloupců datového listu.
CurrentColumn | ano | String | Vrátí název aktuálně vybraného sloupce.
CurrentRow | ano | Integer | Vrátí číslo aktuálně vybraného řádku (začínající od 1).
DatabaseFileName | ano | String | Vrátí název souboru aplikace Base ve formátu FSO.FileNaming.
Filter | ne | String | Určuje filtr, který se má použít na datový list. Filtr je vyjádřen jako klauzule WHERE SQL příkazu bez klíčového slova WHERE. Je-li zadán prázdný řetězec, aktivní filtr se odstraní.
LastRow | ano | Integer | Vrátí počet řádků datového listu.
OrderBy | ne | String | Určuje pořadí, v němž mají být záznamy zobrazeny. Pořadí je vyjádřeno jako klauzule ORDER BY SQL příkazu bez klíčového slova ORDER BY. Je-li zadán prázdný řetězec, aktivní pořadí se odstraní.
ParentDatabase | ano | objekt | Vrátí instanci služby Database, ke které datový list náleží.
Source | ano | String | Vrátí řetězec představující zdroj dat, kterým může být SQL příkaz, název tabulky nebo název dotazu.
SourceType | ano | String | Vrátí typ zdroje dat, kterým je jedna z následujících hodnot: "SQL", "TABLE" či "QUERY".
XComponent | ano | objekt UNO | Vrátí objekt UNO com.sun.star.lang.XComponent, který představuje datový list.
XControlModel | ano | objekt UNO | Vrátí objekt UNOcom.sun.star.awt.XControl, který představuje datový list.
XTabControllerModel | ano | objekt UNO | Vrátí objekt UNO com.sun.star.awt.XTabControllerModel, který představuje datový list.

## Metody

Seznam metod služby Datasheet
Activate CloseDatasheet CreateMenu | GetText GetValue GoToCell | RemoveMenu Toolbars

## Activate

Přenese okno s pohledem na data, na které odkazuje instance služby Datasheet, do popředí.

### Syntaxe:

svc.Activate()

### Příklad:

##### V Basicu

          oSheet.Activate()

##### V Pythonu

          sheet.Activate()

## CloseDatasheet

Uzavře okno s pohledem na data, na které odkazuje instance služby Datasheet.

### Syntaxe:

svc.CloseDatasheet()

### Příklad:

##### V Basicu

          oSheet.CloseDatasheet()

##### V Pythonu

          sheet.CloseDatasheet()

## CreateMenu

Vytvoří v okně pohledu na data novou položku nabídky a vrátí instanci služby SFWidgets.Menu, pomocí které lze položky nabídky skriptem přidávat.

Jakmile se okno s pohledem na data zavře, nabídky přidaný metodou CreateMenu se ztratí.

### Syntaxe:

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

### Parametry:

menuheader: Název nové nabídky.

before: Tímto argumentem je buď název stávající položky nabídky, před kterou bude nová nabídka umístěna, nebo číslo vyjadřující pozici nové nabídky. Je-li ponechán prázdný, nová nabídka se umístí jako poslední položka.

submenuchar: Oddělovač použitý v hierarchii nabídek (výchozí = ">")

### Příklad:

##### V Basicu

          Dim oMenu As Object
          Set oMenu = oSheet.CreateMenu("Moje nabídka", Before := "Data")
          With oMenu
              .AddItem("Položka 1", Command := ".uno:About")
              ' ...
              .Dispose()
          End With

##### V Pythonu

          menu = sheet.CreateMenu("Moje nabídka", before="Data")
          menu.AddItem("Položka 1", command=".uno:About")
          # ...
          menu.Dispose()

Další informace o vytváření nabídek a podnabídek a souvisejících příkazech naleznete na stránce nápovědy služba Menu.

## GetText

Vrátí text ze zadaného sloupce aktuálního řádku.

Tato metoda nezmění pozici kurzoru v okně pohledu na data.

### Syntaxe:

svc.GetText(column: any): str

### Parametry:

column: Název sloupce jako řetězec nebo pozice sloupce (začínající od 1). Pokud je pozice větší než počet sloupců, použije se poslední sloupec.

### Příklad:

##### V Basicu

          oSheet.GetText("FirstName")

##### V Pythonu

          sheet.GetText("FirstName")

## GetValue

Vrátí hodnotu ze zadaného sloupce aktuálního řádku jako platný typ jazyka Basic.

Vracenými typy jsou: String, Integer, Long, Single, Double, Date a Null.

Binární typy jsou vraceny jako hodnota Long udávající délku binárního pole.

Pokud požadovanou hodnotu nelze získat, vrátí se hodnota Empty.

Tato metoda nezmění pozici kurzoru v okně pohledu na data.

### Syntaxe:

svc.GetValue(column: any): any

### Parametry:

column: Název sloupce jako řetězec nebo pozice sloupce (začínající od 1). Pokud je pozice větší než počet sloupců, použije se poslední sloupec.

### Příklad:

##### V Basicu

          oSheet.GetValue("Address")

##### V Pythonu

          sheet.GetValue("Address")

## GoToCell

Přesune kurzor na zadaný řádek a sloupec.

### Syntaxe:

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

### Parametry:

row: Číslo řádku jako číselná hodnota začínající od 1. Pokud je požadované číslo větší než počet řádků, kurzor se přesune na poslední z nich. Není-li tento argument zadán, řádek se nezmění.

column: Název sloupce jako řetězec (String) nebo pozice sloupce (začínající od 1). Pokud je pozice větší než počet sloupců, kurzor se přesune na poslední z nich. Není-li tento argument zadán, sloupec se nezmění.

### Příklad:

##### V Basicu

          ' Přesune kurzor na sloupec "PosledniNazev" v řádku 4
          oSheet.GoToCell(4, "PosledniNazev")
          ' Přesune kurzor na třetí sloupec aktuálního řádku
          oSheet.GoToCell(Column := 3)
          ' Přesune kurzor ve stejném sloupci o řádek níž
          oSheet.GoToCell(Row := oSheet.CurrentRow + 1)
          ' Přesune kurzor na poslední sloupec posledního řádku
          Dim LastColumn As Integer : LastColumn = UBound(oSheet.ColumnHeaders) + 1
          oSheet.GoToCell(oSheet.LastRow, LastColumn)

##### V Pythonu

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

## RemoveMenu

Odstraní z pohledu na data položku nabídky, a to podle jejího názvu.

Touto metodou lze odstranit jak nabídky, které jsou součástí standardního uživatelského rozhraní, tak ty, které byly přidány ve skriptu pomocí metody CreateMenu. Odstranění standardních nabídek není trvalé a zruší se tehdy, když je okno zavřeno a znovu otevřeno.

### Syntaxe:

svc.RemoveMenu(menuheader: str): bool

### Parametry:

menuheader: Název nabídky, která se má odstranit. V názvu se rozlišuje velikost písmen. Název nesmí obsahovat znak vlnovky ("~").

### Příklad:

##### V Basicu

          oSheet.RemoveMenu("Data")

##### V Pythonu

          sheet.RemoveMenu("Data")

### Toolbars

Tato metoda vrátí buď seznam názvů všech nástrojových lišt dostupných v aktuálním dokumentu, nebo instanci služby SFWidgets.Toolbar.

### Syntaxe:

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

### Parametry:

ToolbarName: Obvyklý název některé z dostupných nástrojových lišt.

### Příklad:

##### V Basicu

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

##### V Pythonu

        a_list = doc.Toolbars()

Všechny procedury nebo identifikátory knihovny ScriptForge, které jsou uvozeny podtržítkem "_", jsou určeny pro interní použití. Není zamýšleno je používat v makrech Basicu nebo skriptech Pythonu.

Související témata

Služba SFDatabases.Database

Služba ScriptForge.UI