Pomoc LibreOffice 24.8
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.
Przed skorzystaniem z usługi Datasheet należy załadować lub zaimportować bibliotekę ScriptForge:
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")
  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 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. | 
| LastRow | Tak | Integer | Zwraca liczbę wierszy w arkuszu danych. | 
| 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. | 
| Lista metod w usłudze Datasheet | ||
|---|---|---|
Przenosi na pierwszy plan okno widoku danych, do którego odnosi się instancja Datasheet.
svc.Activate()
      oSheet.Activate()
    
      sheet.Activate()
    Zamyka okno widoku danych, do którego odnosi się instancja Datasheet.
svc.CloseDatasheet()
      oSheet.CloseDatasheet()
    
      sheet.CloseDatasheet()
    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.
svc.CreateMenu(menuheader: str, opt before: any, opt submenuchar: str): obj
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 = ">")
      Dim oMenu As Object
      Set oMenu = oSheet.CreateMenu("Moje menu", Before := "Data")
      With oMenu
          .AddItem("Element 1", Command := ".uno:About")
          ' ...
          .Dispose()
      End With
    
      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ń.
Zwraca tekst w danej kolumnie bieżącego wiersza.
Metoda ta nie powoduje zmiany położenia kursora w oknie podglądu danych.
svc.GetText(column: any): str
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.
      oSheet.GetText("FirstName")
    
      sheet.GetText("FirstName")
    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.
svc.GetValue(column: any): any
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.
      oSheet.GetValue("Address")
    
      sheet.GetValue("Address")
    Przesuwa kursor do określonego wiersza i kolumny.
svc.GoToCell(opt row: int, opt column: any): bool
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.
      ' 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)
    
      sheet.GoToCell(4, "LastName")
      sheet.GoToCell(column=3)
      sheet.GoToCell(row=sheet.CurrentRow + 1)
      sheet.GoToCell(sheet.LastRow, len(sheet.ColumnHeaders))
    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.
svc.RemoveMenu(menuheader: str): bool
menuheader: nazwa menu, które ma zostać usunięte, uwzględnia wielkość liter. Nazwa nie może zawierać znaku tyldy („~”).
      oSheet.RemoveMenu("Data")
    
      sheet.RemoveMenu("Data")