Contents

# 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:

• Basic macros require to load ScriptForge library using the following statement:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Python scripts require an import from scriptforge module:
from scriptforge import CreateScriptService

##### In Basic

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

##### In Python

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

Brings to front the data view window referred to by the Datasheet instance.

### Syntax:

svc.Activate()

### Example:

##### In Basic

          oSheet.Activate()

##### In Python

          sheet.Activate()

## CloseDatasheet

Closes the data view window referred to by the Datasheet instance.

### Syntax:

svc.CloseDatasheet()

### Example:

##### In Basic

          oSheet.CloseDatasheet()

##### In Python

          sheet.CloseDatasheet()

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

### Syntax:

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

### Parameters:

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

### Example:

##### In Basic

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

##### In Python

          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

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.

### Syntax:

svc.GetText(column: any): str

### Parameters:

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.

### Example:

##### In Basic

          oSheet.GetText("FirstName")

##### In Python

          sheet.GetText("FirstName")

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

### Syntax:

svc.GetValue(column: any): any

### Parameters:

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.

### Example:

##### In Basic

          oSheet.GetValue("Address")

##### In Python

          sheet.GetValue("Address")

## GoToCell

Moves the cursor to the specified row and column.

### Syntax:

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

### Parameters:

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.

### Example:

##### In Basic

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

##### In Python

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

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

### Syntax:

svc.RemoveMenu(menuheader: str): bool

### Parameters:

menuheader: The case-sensitive name of the menu to be removed. The name must not include the tilde ("~") character.

### Example:

##### In Basic

          oSheet.RemoveMenu("Data")

##### In Python

          sheet.RemoveMenu("Data")

### Toolbars

This method returns either a list of the available toolbar names in the actual document or an instance SFWidgets.Toolbar service.

### Syntax:

svc.Toolbars(opt ToolbarName: str): uno
svc.Toolbars(): str[0..]

### Parameters:

ToolbarName: The usual name of one of the available toolbars.

### Example:

##### In Basic

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

##### In Python

        a_list = doc.Toolbars()

All ScriptForge Basic routines or identifiers that are prefixed with an underscore character "_" are reserved for internal use. They are not meant be used in Basic macros or Python scripts.

Related Topics

SFDatabases.Database service

ScriptForge.UI service