Spis treści

# Usługa SFDatabases.Datasheet

Usługa Datasheet pozwala na wizualizację zawartości tabel bazy danych oraz wyników kwerend i instrukcji SQL za pomocą widoku danych Base. Dodatkowo usługa ta umożliwia:

- Dodaj niestandardowe menu do widoku danych.

- Dostęp do wartości w określonych pozycjach widoku danych.

- Ustaw kursor w określonej komórce widoku danych.

## Wywoływanie usługi

Przed skorzystaniem z usługi Datasheet należy załadować lub zaimportować bibliotekę ScriptForge:

• Podstawowe makra wymagają załadowania biblioteki ScriptForge przy użyciu następującej instrukcji:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Skrypty Pythona wymagają importu z modułu scriptforge:
from scriptforge import CreateScriptService

##### W języku Basic

Usługę Datasheet można wywołać na dwa różne sposoby, w zależności od tego, czy plik bazy danych jest otwarty.

Poniższy przykład uwzględnia, że plik bazy danych jest otwarty, dlatego do pobrania dokumentu można użyć usługi UI, a metoda OpenTable z usługi Database służy do uzyskania instancji usługi Datasheet.

        Dim ui As Object, oBase As Object, oSheet As Object
        Set ui = CreateScriptService("UI")
        ' Obiekt oBase jest instancją usługi Base
        Set oBase = ui.GetDocument("C:\Documents\myDB.odb")
        ' Obiekt oSheet jest instancją usługi Datasheet
        Set oSheet = oBase.OpenTable("Customers")

W powyższym przykładzie możliwe jest również użycie metody OpenQuery z usługi Base w celu uzyskania instancji Datasheet.

Aby wywołać usługę Datasheet, gdy plik bazy danych nie jest otwarty, użyj metod OpenTable, OpenQuery lub OpenSql z usługę Database. Poniższy przykład wykorzystuje metodę OpenTable do otwarcia istniejącej tabeli w pliku bazy danych:

        Dim oDatabase As Object, oSheet As Object
        ' Obiekt oDatabase jest instancją usługi Database
        Set oDatabase = CreateScriptService("Database", "C:\Documents\myDB.odb")
        ' Obiekt oSheet jest instancją usługi Datasheet
        Set oSheet = oDatabase.OpenTable("Customers")

##### W języku Python

Powyższe przykłady można przetłumaczyć na język Python w następujący sposób:

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

## Właściwości

W usłudze Datasheet dostępne są następujące właściwości:

Nazwa | Tylko do odczytu | Typ | Opis
--- | --- | --- | ---
ColumnHeaders | Tak | Tablica ciągów | Zwraca Array z nazwami główek kolumn w arkuszu danych.
CurrentColumn | Tak | String | Zwraca aktualnie wybraną nazwę kolumny.
CurrentRow | Tak | Integer | Zwraca numer aktualnie wybranego wiersza, zaczynając od 1.
DatabaseFileName | Tak | String | Zwraca nazwę pliku Base w formacie FSO.FileNaming.
Filter | Nie | String | Określa filtr, który ma zostać zastosowany do arkusza danych wyrażonego jako klauzula WHERE kwerendy SQL bez słowa kluczowego WHERE. Jeśli podany zostanie pusty ciąg znaków, aktywny Filter zostanie usunięty.
IsAlive | Tak | Boolean | True, gdy arkusz danych nie został zamknięty (np. przez czynność użytkownika).
LastRow | Tak | Integer | Zwraca liczbę wierszy w arkuszu danych.
MenuHeaders | Tak | String array | Zwraca listę zawierającą nazwy menu obecne na pasku menu.
OrderBy | Nie | String | Określa kolejność wyświetlania rekordów wyrażoną jako klauzula ORDER BY kwerendy SQL bez słowa kluczowego ORDER BY. Jeśli zostanie podany pusty ciąg znaków, aktywny element OrderBy zostanie usunięty.
ParentDatabase | Tak | Obiekt | Zwraca instancję usługi Database, do której należy arkusz danych.
Source | Tak | String | Zwraca ciąg reprezentujący źródło danych, którym może być instrukcja SQL, nazwa tabeli lub nazwa kwerendy.
SourceType | Tak | String | Zwraca typ źródła danych, który może mieć jedną z następujących wartości: „SQL”, „TABLE” lub „QUERY”.
XComponent | Tak | Obiekt UNO | Zwraca obiekt UNO com.sun.star.lang.XComponent, który reprezentuje arkusz danych.
XControlModel | Tak | Obiekt UNO | Zwraca obiekt UNO com.sun.star.awt.XControl, który reprezentuje arkusz danych.
XTabControllerModel | Tak | Obiekt UNO | Zwraca obiekt UNO com.sun.star.awt.XTabControllerModel, który reprezentuje arkusz danych.

## Metody

Lista metod w usłudze Datasheet
Activate CloseDatasheet CreateMenu | GetText GetValue GoToCell | RemoveMenu Toolbars

## Activate

Przenosi na pierwszy plan okno widoku danych, do którego odnosi się instancja Datasheet.

### Składnia:

svc.Activate()

### Przykład:

##### W języku Basic

          oSheet.Activate()

##### W języku Python

          sheet.Activate()

## CloseDatasheet

Zamyka okno widoku danych, do którego odnosi się instancja Datasheet.

### Składnia:

svc.CloseDatasheet()

### Przykład:

##### W języku Basic

          oSheet.CloseDatasheet()

##### W języku Python

          sheet.CloseDatasheet()

## CreateMenu

Tworzy nową pozycję menu w oknie widoku danych i zwraca instancję usługi SFWidgets.Menu, za pomocą której można programowo dodawać elementy menu.

Menu dodane metodą CreateMenu zostaną utracone w momencie zamknięcia okna podglądu danych.

### Składnia:

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

### Parametry:

menuheader: nazwa nowego menu.

before: argumentem tym może być albo nazwa istniejącej pozycji menu, przed którą zostanie umieszczone nowe menu, albo liczba wyrażająca pozycję nowego menu. Jeśli ten argument pozostanie pusty, nowe menu zostanie umieszczone jako ostatnia pozycja.

submenuchar: separator używany w drzewach menu (domyślnie = ">")

### Przykład:

##### W języku Basic

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

##### W języku Python

          menu = sheet.CreateMenu("Moje menu", before="Data")
          menu.AddItem("Element 1", command=".uno:About")
          # ...
          menu.Dispose()

Przeczytaj stronę pomocy Usługa Menu, aby dowiedzieć się więcej na temat tworzenia wpisów menu i podmenu oraz kojarzenia poleceń.

## GetText

Zwraca tekst w danej kolumnie bieżącego wiersza.

Metoda ta nie powoduje zmiany położenia kursora w oknie podglądu danych.

### Składnia:

svc.GetText(column: any): str

### Parametry:

column: nazwa kolumny jako ciąg lub pozycja kolumny (zaczynając od 1). Jeżeli podana zostanie pozycja większa niż liczba kolumn, zwracana jest ostatnia kolumna.

### Przykład:

##### W języku Basic

          oSheet.GetText("FirstName")

##### W języku Python

          sheet.GetText("FirstName")

## GetValue

Zwraca wartość w danej kolumnie bieżącego wiersza jako prawidłowy typ Basic.

Typy, które mogą zostać zwrócone to: String, Integer, Long, Single, Double, Date i Null.

Typy binarne są zwracane jako wartość Long wskazująca długość pola binarnego.

Jeśli nie można było pobrać wymaganej wartości, zwracana jest wartość Empty.

Metoda ta nie powoduje zmiany położenia kursora w oknie podglądu danych.

### Składnia:

svc.GetValue(column: any): any

### Parametry:

column: nazwa kolumny jako ciąg lub pozycja kolumny (zaczynając od 1). Jeżeli podana zostanie pozycja większa niż liczba kolumn, zwracana jest ostatnia kolumna.

### Przykład:

##### W języku Basic

          oSheet.GetValue("Address")

##### W języku Python

          sheet.GetValue("Address")

## GoToCell

Przesuwa kursor do określonego wiersza i kolumny.

### Składnia:

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

### Parametry:

row: numer wiersza jako wartość liczbowa rozpoczynająca się od 1. Jeśli żądany wiersz przekracza liczbę istniejących wierszy, kursor zostanie przeniesiony do ostatniego wiersza. Jeśli ten argument nie zostanie określony, wiersz nie zostanie zmieniony.

column: nazwa kolumny jako String lub pozycja kolumny (zaczynając od 1). Jeśli żądana kolumna przekracza liczbę istniejących kolumn, kursor zostanie przesunięty do ostatniej kolumny. Jeśli ten argument nie zostanie określony, kolumna nie zostanie zmieniona.

### Przykład:

##### W języku Basic

          ' Przesuwa kursor do kolumny "LastName" w wierszu 4
          oSheet.GoToCell(4, "LastName")
          ' Przenosi kursor do trzeciej kolumny bieżącego wiersza
          oSheet.GoToCell(Column := 3)
          ' Przesuwa kursor o jeden wiersz w dół, pozostawiając go w tej samej kolumnie
          oSheet.GoToCell(Row := oSheet.CurrentRow + 1)
          ' Przechodzi do ostatniej kolumny ostatniego wiersza
          Dim LastColumn As Integer : LastColumn = UBound(oSheet.ColumnHeaders) + 1
          oSheet.GoToCell(oSheet.LastRow, LastColumn)

##### W języku Python

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

## RemoveMenu

Usuwa pozycję menu z widoku danych według jej nazwy.

Ta metoda może usunąć menu należące do standardowego interfejsu użytkownika, a także menu dodane programowo za pomocą metody CreateMenu. Usunięcie standardowych menu nie jest trwałe i pojawią się one ponownie po zamknięciu i ponownym otwarciu okna.

### Składnia:

svc.RemoveMenu(menuheader: str): bool

### Parametry:

menuheader: nazwa menu, które ma zostać usunięte, uwzględnia wielkość liter. Nazwa nie może zawierać znaku tyldy („~”).

### Przykład:

##### W języku Basic

          oSheet.RemoveMenu("Data")

##### W języku Python

          sheet.RemoveMenu("Data")

### Toolbars

Ta metoda zwraca listę dostępnych nazw pasków narzędzi w rzeczywistym dokumencie lub instancję usługi SFWidgets.Toolbar.

### Składnia:

svc.Toolbars(opt toolbarname: str): svc
svc.Toolbars(): str[0..]

### Parametry:

toolbarname: zwykła nazwa jednego z dostępnych pasków narzędzi.

### Przykład:

##### W języku Basic

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

##### W języku Python

        a_list = doc.Toolbars()

Wszystkie podstawowe procedury lub identyfikatory ScriptForge poprzedzone znakiem podkreślenia „_” są zarezerwowane do użytku wewnętrznego. Nie należy ich używać w makrach Basic ani skryptach Pythona.

Tematy pokrewne

Usługa SFDatabases.Database

Usługa ScriptForge.UI

Prosimy o wsparcie!