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:

Volání služby

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

note

• 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.

note

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()
    
tip

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.

note

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.

note

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.

note

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


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.

note

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()
  
warning

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.


Podpořte nás!