Съдържание

# Услуга SFDatabases.Datasheet

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

- да се добавят потребителски менюта в изгледа с данни

- да се осъществява достъп до данните в конкретни позиции от изгледа с данни

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

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

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

• Макросите на 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, с която може по програмен път да се добавят елементи в меню.

Менютата, добавени с метода 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()

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

## GetText

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

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

### Синтаксис:

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.

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

### Синтаксис:

svc.GetValue(column: any): any

### Параметри:

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

### Пример:

##### В Basic

          oSheet.GetValue("Address")

##### В Python

          sheet.GetValue("Address")

## GoToCell

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

### Синтаксис:

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

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

Този метод може да премахва менюта, принадлежащи на стандартния потребителски интерфейс, както и менюта, добавени по програмен път чрез метода 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()

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

Теми, свързани с показаната

Услуга SFDatabases.Database

ScriptForge.UI service

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