SFDatabases.Datasheet service

Услугата Datasheet позволява визуализиране съдържанието на таблици в база от данни, както и резултатите от заявки и оператори на SQL, посредством прозореца „Изглед с данни“ на Base. Освен това чрез нея е възможно:

Извикване на услугата

Преди да използвате услугата Datasheet, библиотеката ScriptForge трябва да бъде заредена или импортирана:

note

• Макросите на Basic изискват зареждане на библиотеката ScriptForge чрез следния оператор:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Скриптовете на Python изискват импортиране от модула scriptforge:
from scriptforge import CreateScriptService


В Basic

Услугата Datasheet може да бъде извикана по два различни начина според това дали е отворен файл на база от данни.

В примера по-долу се приема, че файлът на базата от данни е отворен, следователно услугата UI може да се използва за извличане на документа, а методът OpenTable от услугата Database – за получаване на екземпляр на услугата Datasheet.


    Dim ui As Object, oBase As Object, oSheet As Object
    Set ui = CreateScriptService("UI")
    ' Обектът oBase е екземпляр на услугата Base.
    Set oBase = ui.GetDocument("C:\Documents\myDB.odb")
    ' Обектът oSheet е екземпляр на услугата Datasheet.
    Set oSheet = oBase.OpenTable("Customers")
  

В горния пример е възможно и да се използва методът OpenQuery от услугата Base, за да се получи екземпляр на услугата Datasheet.

За да извикате услугата Datasheet, когато базата от данни не е отворена, използвайте метода OpenTable, OpenQuery или OpenSql от услугата Database. В примера по-долу е използван методът OpenTable, за да се отвори съществуваща таблица във файла на базата от данни:


    Dim oDatabase As Object, oSheet As Object
    ' Обектът oDatabase е екземпляр на услугата Database.
    Set oDatabase = CreateScriptService("Database", "C:\Documents\myDB.odb")
    ' Обектът oSheet е екземпляр на услугата Datasheet.
    Set oSheet = oDatabase.OpenTable("Customers")
  
В Python

Примерите по-горе могат да бъдат преведени на Python както следва:


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

Свойства

В услугата Datasheet са налични следните свойства:

Име

Само за четене

Тип

Описание

ColumnHeaders

Да

Масив от низове

Връща масив (Array) със заглавията на колоните в листа с данни.

CurrentColumn

Да

String

Връща името на текущо избраната колона.

CurrentRow

Да

Integer

Връща номера на текущо избрания ред, започвайки от 1.

DatabaseFileName

Да

String

Връща името на файла на Base във формата, зададен с FSO.FileNaming.

Filter

Не

String

Указва филтър, който да се приложи върху листа с данни, изразен като клауза WHERE от заявка на SQL без ключовата дума WHERE. Ако е зададен празен низ, активният Filter се премахва.

LastRow

Да

Integer

Връща броя редове в листа с данни.

OrderBy

Не

String

Указва реда, в който да се показват записите, изразен като клауза ORDER BY на заявка на SQL без ключовите думи ORDER BY. Ако е зададен празен низ, активният OrderBy се премахва.

ParentDatabase

Да

Обект

Връща екземпляра на услугата Database, към който принадлежи листът с данни.

Source

Да

String

Връща низ, представящ източника на данни, който може да бъде оператор на SQL, име на таблица или име на заявка.

SourceType

Да

String

Връща типа на източника на данни, който може да бъде една от следните стойности: "SQL", "TABLE" или "QUERY".

XComponent

Да

UNO обект

Връща UNO обекта от типа com.sun.star.lang.XComponent, който представя листа с данни.

XControlModel

Да

UNO обект

Връща UNO обекта от типа com.sun.star.awt.XControl, който представя листа с данни.

XTabControllerModel

Да

UNO обект

Връща UNO обекта от типа com.sun.star.awt.XTabControllerModel, който представя листа с данни.


Методи

Списък с методи на услугата Datasheet

Activate
CloseDatasheet
CreateMenu

GetText
GetValue
GoToCell

RemoveMenu
Toolbars



Activate

Изнася на преден план прозореца на изгледа с данни, сочен от екземпляра на Datasheet.

Синтаксис:

svc.Activate()

Пример:

В Basic

      oSheet.Activate()
    
В Python

      sheet.Activate()
    

CloseDatasheet

Затваря прозореца на изгледа с данни, сочен от екземпляра на Datasheet.

Синтаксис:

svc.CloseDatasheet()

Пример:

В Basic

      oSheet.CloseDatasheet()
    
В Python

      sheet.CloseDatasheet()
    

CreateMenu

Създава ново меню в прозореца на изгледа с данни и връща екземпляр на услугата SFWidgets.Menu, с която може по програмен път да се добавят елементи в меню.

note

Менютата, добавени с метода CreateMenu, се изгубват веднага щом се затвори прозорецът на изгледа с данни.


Синтаксис:

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

Параметри:

menuheader: името на новото меню.

before: този аргумент може да бъде или име на съществуващо меню, преди което да се вмъкне новото, или число, указващо позицията на новото меню. Ако аргументът е оставен празен, новото меню се добавя последно.

submenuchar: разделителят, използван в дърветата от менюта (подразбира се ">").

Пример:

В Basic

      Dim oMenu As Object
      Set oMenu = oSheet.CreateMenu("Моето меню", Before := "Данни")
      With oMenu
          .AddItem("Елемент 1", Command := ".uno:About")
          ' ...
          .Dispose()
      End With
    
В Python

      menu = sheet.CreateMenu("Моето меню", before="Данни")
      menu.AddItem("Елемент 1", command=".uno:About")
      # ...
      menu.Dispose()
    
tip

Прочетете помощната страница за услугата Menu, за да научите повече относно създаването на менюта и подменюта и асоциирането на команди.


GetText

Връща текста в дадена колона на текущия ред.

note

Този метод не променя позицията на курсора в прозореца на изгледа с данни.


Синтаксис:

svc.GetText(column: any): str

Параметри:

column: името на колоната като низ или позицията на колоната (започвайки от 1). Ако е дадена позиция, по-голяма от броя колони, се връща последната колона.

Пример:

В Basic

      oSheet.GetText("FirstName")
    
В Python

      sheet.GetText("FirstName")
    

GetValue

Връща стойността в дадена колона на текущия ред като валиден тип на Basic.

Типовете, които може да бъдат върнати, са: String, Integer, Long, Single, Double, Date и Null.

За двоичните типове се връща стойност от тип Long, която показва дължината на двоичното поле.

Ако изискваната стойност не може да бъде извлечена, се връща стойност Empty.

note

Този метод не променя позицията на курсора в прозореца на изгледа с данни.


Синтаксис:

svc.GetValue(column: any): any

Параметри:

column: името на колоната като низ или позицията на колоната (започвайки от 1). Ако е дадена позиция, по-голяма от броя колони, се връща последната колона.

Пример:

В Basic

      oSheet.GetValue("Address")
    
В Python

      sheet.GetValue("Address")
    

GoToCell

Премества курсора до зададения ред и колона.

note

Този метод не променя позицията на курсора в прозореца на изгледа с данни.


Синтаксис:

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

Параметри:

row: номерът на ред като числова стойност, започвайки от 1. Ако заявеният номер на ред надхвърля броя съществуващи редове, курсорът се премества върху последния ред. Ако този аргумент не е зададен, редът не се променя.

column: името на колона като стойност от тип String или позицията на колоната (започвайки от 1). Ако заявеният номер на колона надхвърля броя на съществуващите колони, курсорът се премества върху последната колона. Ако този аргумент не е зададен, колоната не се променя.

Пример:

В Basic

      ' Премества курсора в колоната "Фамилно име" на ред 4.
      oSheet.GoToCell(4, "ФамилноИме")
      ' Премества курсора в третата колона на текущия ред.
      oSheet.GoToCell(Column := 3)
      ' Премества курсора с един ред надолу и го оставя в същата колона.
      oSheet.GoToCell(Row := oSheet.CurrentRow + 1)
      ' Премества курсора в последната колона на последния ред.
      Dim LastColumn As Integer : LastColumn = UBound(oSheet.ColumnHeaders) + 1
      oSheet.GoToCell(oSheet.LastRow, LastColumn)
    
В Python

      sheet.GoToCell(4, "ФамилноИме")
      sheet.GoToCell(column=3)
      sheet.GoToCell(row=sheet.CurrentRow + 1)
      sheet.GoToCell(sheet.LastRow, len(sheet.ColumnHeaders))
    

RemoveMenu

Премахва меню от изгледа с данни по името му.

note

Този метод може да премахва менюта, принадлежащи на стандартния потребителски интерфейс, както и менюта, добавени по програмен път чрез метода CreateMenu. Премахването на стандартни менюта е временно и те се появяват отново след затваряне и повторно отваряне на прозореца.


Синтаксис:

svc.RemoveMenu(menuheader: str): bool

Параметри:

menuheader: името на менюто, което да бъде премахнато, със спазване на малки и главни букви. Името не трябва да съдържа знака тилда ("~").

Пример:

В Basic

      oSheet.RemoveMenu("Data")
    
В 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.

Синтаксис:

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

Параметри:

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

Пример:

В Basic

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

    a_list = doc.Toolbars()
  
warning

В ScriptForge всички подпрограми или идентификатори на Basic с префикс „_“ са запазени за вътрешна употреба. Те не са предназначени за използване в макроси на Basic.


Моля, подкрепете ни!