LibreOffice 25.2 Súgó
The Datasheet service allows to visualize the contents of database tables as well as the results of queries and SQL statements using Base's Data View. Additionally, this service allows to:
Add custom menus to the data view.
Access values in specific positions of the data view.
Position the cursor in a specific cell of the data view.
Before using the Datasheet service the ScriptForge library needs to be loaded or imported:
The Datasheet service can be invoked in two different ways depending on whether the database file is open.
Az alábbi példa úgy tekinti, hogy az adatbázisfájl nyitva van, ezért a UI szolgáltatás használható a dokumentum lekérdezésére, és az OpenTable metódus a Database szolgáltatásból egy Datasheet szolgáltatáspéldány lekérdezésére szolgál.
    Dim ui As Object, oBase As Object, oSheet As Object
    Set ui = CreateScriptService("UI")
    ' Object oBase is an instance of the Base service
    Set oBase = ui.GetDocument("C:\Documents\myDB.odb")
    ' Object oSheet is an instance of the Datasheet service
    Set oSheet = oBase.OpenTable("Customers")
  In the example above it is also possible to use the method OpenQuery from the Base service to get a Datasheet instance.
A Database szolgáltatás meghívásához, ha az adatbázisfájl nincs megnyitva, használja az OpenTable, OpenQuery vagy OpenSql metódusokat a Database szolgáltatásból. Az alábbi példa az OpenTable metódust használja az adatbázisfájlban meglévő táblázat megnyitásához:
    Dim oDatabase As Object, oSheet As Object
    ' Object oDatabase is an instance of the Database service
    Set oDatabase = CreateScriptService("Database", "C:\Documents\myDB.odb")
    ' Object oSheet is an instance of the Datasheet service
    Set oSheet = oDatabase.OpenTable("Customers")
  The examples above can be translated to Python as follows:
    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")
  The following properties are available in the Datasheet service:
| Név | Csak olvasásra | Típus | Leírás | 
|---|---|---|---|
| ColumnHeaders | Igen | Karakterláncok tömbje | Returns an Array with the names of column headers in the datasheet. | 
| CurrentColumn | Igen | String | Returns the currently selected column name. | 
| CurrentRow | Igen | Integer | Returns the number of the currently selected row, starting at 1. | 
| DatabaseFileName | Igen | String | Returns the file name of the Base file in FSO.FileNaming format. | 
| Filter | Nem | String | Megadja az adatlapra alkalmazandó szűrőt, amelyet egy SQL-lekérdezés WHERE záradékaként fejez ki a WHERE kulcsszó nélkül. Ha üres karakterláncot ad meg, akkor az aktív Filter eltávolításra kerül. | 
| LastRow | Igen | Integer | Returns the number of rows in the datasheet. | 
| OrderBy | Nem | String | Megadja a rekordok megjelenítési sorrendjét, az ORDER BY kulcsszó nélküli SQL-lekérdezés ORDER BY záradékaként kifejezve. Ha üres karakterláncot ad meg, akkor az aktív OrderBy megszűnik. | 
| ParentDatabase | Igen | Objektum | Returns the Database service instance to which the datasheet belongs. | 
| Source | Igen | String | Returns a String that represents the data source, which can be a SQL statement, a table name or a query name. | 
| SourceType | Igen | String | Returns the type of the data source, which can be one of the following values: "SQL", "TABLE" or "QUERY". | 
| XComponent | Igen | UNO objektum | Returns the com.sun.star.lang.XComponent UNO object that represents the datasheet. | 
| XControlModel | Igen | UNO objektum | Returns the com.sun.star.awt.XControl UNO object that represents the datasheet. | 
| XTabControllerModel | Igen | UNO objektum | Returns the com.sun.star.awt.XTabControllerModel UNO object that represents the datasheet. | 
| List of Methods in the Datasheet Service | ||
|---|---|---|
Brings to front the data view window referred to by the Datasheet instance.
svc.Activate()
      oSheet.Activate()
    
      sheet.Activate()
    Closes the data view window referred to by the Datasheet instance.
svc.CloseDatasheet()
      oSheet.CloseDatasheet()
    
      sheet.CloseDatasheet()
    Creates a new menu entry in the data view window and returns a SFWidgets.Menu service instance, with which menu items can be programmatically added.
Menus added using the CreateMenu method are lost as soon as the data view window is closed.
svc.CreateMenu(menuheader: str, opt before: any, opt submenuchar: str): obj
menuheader: The name of the new menu.
előtte: Ez az argumentum lehet egy meglévő menüpont neve, amely elé az új menü kerül, vagy egy szám, amely az új menü pozícióját fejezi ki. Ha ez az argumentum üresen marad, az új menü az utolsó bejegyzésként kerül elhelyezésre.
submenuchar: The delimiter used in menu trees (Default = ">")
      Dim oMenu As Object
      Set oMenu = oSheet.CreateMenu("My Menu", Before := "Data")
      With oMenu
          .AddItem("Item 1", Command := ".uno:About")
          ' ...
          .Dispose()
      End With
    
      menu = sheet.CreateMenu("My Menu", before="Data")
      menu.AddItem("Item 1", command=".uno:About")
      # ...
      menu.Dispose()
    Read the Menu service help page to learn more about how to create menu and submenu entries and associate commands.
Returns the text in a given column of the current row.
This method does not change the position of the cursor in the data view window.
svc.GetText(column: any): str
column: The name of the column as a String or the column position (starting at 1). If a position greater than the number of columns is given, the last column is returned.
      oSheet.GetText("FirstName")
    
      sheet.GetText("FirstName")
    Returns the value in a given column of the current row as a valid Basic type.
The types that can be returned are: String, Integer, Long, Single, Double, Date and Null.
Binary types are returned as a Long value indicating the length of the binary field.
An Empty value is returned if the required value could not be retrieved.
This method does not change the position of the cursor in the data view window.
svc.GetValue(column: any): any
column: The name of the column as a String or the column position (starting at 1). If a position greater than the number of columns is given, the last column is returned.
      oSheet.GetValue("Address")
    
      sheet.GetValue("Address")
    Moves the cursor to the specified row and column.
svc.GoToCell(opt row: int, opt column: any): bool
sor: A sorszám numerikus értékként, 1-től kezdődően. Ha a kért sor meghaladja a meglévő sorok számát, a kurzor az utolsó sorba kerül. Ha ez az argumentum nincs megadva, akkor a sor nem változik.
oszlop: Az oszlop neve String-ként vagy az oszlop pozíciója (1-től kezdődően). Ha a kért oszlop meghaladja a meglévő oszlopok számát, a kurzor az utolsó oszlopra kerül. Ha ez az argumentum nincs megadva, akkor az oszlop nem változik.
      ' Moves the cursor to the column "LastName" in row 4
      oSheet.GoToCell(4, "LastName")
      ' Moves the cursor to the third column of the current row
      oSheet.GoToCell(Column := 3)
      ' Moves cursor one row down leaving it in the same column
      oSheet.GoToCell(Row := oSheet.CurrentRow + 1)
      ' Moves to the last column of the last row
      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))
    Removes a menu entry from the data view by its name.
Ez a módszer eltávolíthatja a standard felhasználói felülethez tartozó menüket, valamint a CreateMenu módszerrel programozottan hozzáadott menüket. A szabványos menük eltávolítása nem végleges, és az ablak bezárása és újbóli megnyitása után újra megjelennek.
svc.RemoveMenu(menuheader: str): bool
menuheader: The case-sensitive name of the menu to be removed. The name must not include the tilde ("~") character.
      oSheet.RemoveMenu("Data")
    
      sheet.RemoveMenu("Data")