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:

Service invocation

Before using the Datasheet service the ScriptForge library needs to be loaded or imported:

note

• 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


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.

note

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()
    
tip

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.

note

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.

note

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.

note

This method does not change the position of the cursor in the data view window.


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.

note

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

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.


Please support us!