SFDatabases.Datasheet service /text/sbasic/shared/03/sf_datasheet.xhp
Datasheet service

SFDatabases.Datasheet service

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.

Service invocation

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. The example below considers that the database file is open, hence the UI service can be used to retrieve the document and the OpenTable method from the Database service is used to get a Datasheet service instance. 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. To invoke the Datasheet service when the database file is not open, use the OpenTable, OpenQuery or OpenSql methods from the Database service. The example below uses the OpenTable method to open an existing table in the database file: 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")

Properties

The following properties are available in the Datasheet service:
Name Read-only Type Description ColumnHeaders Yes Array of Strings Returns an Array with the names of column headers in the datasheet. CurrentColumn Yes String Returns the currently selected column name. CurrentRow Yes Integer Returns the number of the currently selected row, starting at 1. DatabaseFileName Yes String Returns the file name of the Base file in FSO.FileNaming format. Filter No String Specifies a filter to be applied to the datasheet expressed as the WHERE clause of a SQL query without the WHERE keyword. If an empty string is specified then the active Filter is removed. LastRow Yes Integer Returns the number of rows in the datasheet. OrderBy No String Specifies the order in which records are shown expressed as the ORDER BY clause of a SQL query without the ORDER BY keyword. If an empty string is specified then the active OrderBy is removed. ParentDatabase Yes Object Returns the Database service instance to which the datasheet belongs. Source Yes String Returns a String that represents the data source, which can be a SQL statement, a table name or a query name. SourceType Yes String Returns the type of the data source, which can be one of the following values: "SQL", "TABLE" or "QUERY". XComponent Yes UNO Object Returns the com.sun.star.lang.XComponent UNO object that represents the datasheet. XControlModel Yes UNO Object Returns the com.sun.star.awt.XControl UNO object that represents the datasheet. XTabControllerModel Yes UNO Object Returns the com.sun.star.awt.XTabControllerModel UNO object that represents the datasheet.

Methods

List of Methods in the Datasheet Service Activate
CloseDatasheet
CreateMenu
GetText
GetValue
GoToCell
RemoveMenu
Toolbars

Activate -------------------------------------------------------------------------------------------- Datasheet service;Activate

Activate

Brings to front the data view window referred to by the Datasheet instance. svc.Activate() oSheet.Activate() sheet.Activate()
CloseDatasheet -------------------------------------------------------------------------------------- Datasheet service;CloseDatasheet

CloseDatasheet

Closes the data view window referred to by the Datasheet instance. svc.CloseDatasheet() oSheet.CloseDatasheet() sheet.CloseDatasheet()
CreateMenu ------------------------------------------------------------------------------------------ Datasheet service;CreateMenu

CreateMenu

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. before: This argument can be either the name of an existing menu entry before which the new menu will be placed or a number expressing the position of the new menu. If this argument is left blank the new menu is placed as the last entry. 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.
GetText --------------------------------------------------------------------------------------------- Datasheet service;GetText

GetText

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")
GetValue -------------------------------------------------------------------------------------------- Datasheet service;GetValue

GetValue

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")
GoToCell -------------------------------------------------------------------------------------------- Datasheet service;GoToCell

GoToCell

Moves the cursor to the specified row and column. svc.GoToCell(opt row: int, opt column: any): bool row: The row number as a numeric value starting at 1. If the requested row exceeds the number of existing rows, the cursor is moved to the last row. If this argument is not specified, then the row is not changed. column: The name of the column as a String or the column position (starting at 1). If the requested column exceeds the number of existing columns, the cursor is moved to the last column. If this argument is not specified, then the column is not changed. ' 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))
RemoveMenu ------------------------------------------------------------------------------------------ Datasheet service;RemoveMenu

RemoveMenu

Removes a menu entry from the data view by its name. This method can remove menus that belong to the standard user interface as well as menus that were programmatically added with the CreateMenu method. The removal of standard menus is not permanent and they will reappear after the window is closed and reopened. 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")
Toolbars -------------------------------------------------------------------------------------------------------------------------- Datasheet service;Toolbars