Sumário

# Serviço SFDocuments.Base

O serviço Base oferece vários métodos e propriedades para facilitar o gerenciamento e o manuseio de documentos do LibreOffice Base.

Este serviço está intimamente relacionado ao serviço Document, que fornece métodos genéricos para lidar com documentos do LibreOffice, incluindo documentos Base. Portanto, o serviço Base estende o serviço Document e fornece métodos adicionais que são específicos para documentos Base, permitindo aos usuários:

- Obter acesso ao banco de dados contido num documento Base.

- Abrir documentos de formulário armazenados num documento Base.

- Verificar se um documento de formulário de um documento Base está carregado no momento.

Consulte o serviço Document para saber mais sobre métodos e propriedades que podem ser usado para gerenciar documentos do LibreOffice.

## Invocação do serviço

Antes de usar o serviço Base a biblioteca ScriptForge precisa ser carregada ou importada:

• Macros BASIC precisam carregar a biblioteca ScriptForge usando a seguinte instrução:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Scripts Python exigem uma importação do módulo scriptforge:
from scriptforge import CreateScriptService

##### Em Basic

O serviço Base pode ser chamado de várias maneiras. O trecho de código abaixo usa o método CreateBaseDocument do serviço UI para criar um arquivo Base.

Observe que em todos os exemplos o objeto oDoc é uma instância do serviço Base.

        Dim ui As Object, oDoc As Object
        Set ui = CreateScriptService("UI")
        Set oDoc = ui.CreateBaseDocument("C:\Documents\MyFile.odb")

O serviço Base também pode ser instanciado ao abrir um arquivo Base existente, conforme mostrado abaixo:

        Set oDoc = ui.OpenBaseDocument("C:\Documents\MyFile.odb")

Se um documento Base já estiver aberto, é possível instanciar o serviço Base diretamente:

        Dim oDoc As Object
        Set oDoc = CreateScriptService("SFDocuments.Document", "MyFile.odb")

##### Em Python

Os exemplos acima podem ser traduzidos para Python da seguinte maneira:

        from scriptforge import CreateScriptService
        ui = CreateScriptService("UI")
        doc = ui.CreateBaseDocument(r"C:\Documents\MyFile.odb")

        doc = ui.OpenBaseDocument(r"C:\Documents\MyFile.odb")

        doc = CreateScriptService("SFDocuments.Document", "MyFile.odb")

A utilização da substring "SFDocuments." no exemplo anterior é opcional.

Lista de métodos do serviço Base
CloseFormDocument FormDocuments Forms GetDatabase | IsLoaded OpenFormDocument OpenQuery OpenTable | PrintOut SetPrinter

## CloseFormDocument

Fecha o documento de formulário. Retorna True se o fechamento foi bem sucedido.

O método CloseFormDocument foi descontinuado desde LibreOffice 7.6. Embora ainda esteja disponível, pode ser removido do serviço Base em um lançamento futuro. Em vez disso, use o método CloseDocument do serviço FormDocument.

### Sintaxe:

svc.CloseFormDocument(formdocument: str): bool

### Parâmetros:

formdocument: Nome do FormDocument a ser fechado, como uma string sensível à caixa.

### Exemplo:

Se os documentos do formulário estiverem organizados em pastas, torna-se necessário incluir o nome da pasta para especificar o documento do formulário a ser aberto, conforme ilustrado nos exemplos a seguir:

##### Em Basic

        oDoc.CloseFormDocument("Folder1/myFormDocument")

##### Em Python

        doc.CloseFormDocument('Folder1/myFormDocument')

## FormDocuments

Retorna um array com os nomes completos (caminho / nome) de todos os documentos de formulário no documento Base como um Array de strings com índice começando em zero.

### Sintaxe:

svc.FormDocuments(): str[0..*]

### Exemplo:

O trecho de código abaixo imprime os nomes de todos os documentos de formulário no documento Base atual.

##### Em Basic

        Dim oDoc as Object, myForms as Object, formName as String
        Set oDoc = CreateScriptService("Document", ThisDataBaseDocument)
        Set myForms = oDoc.FormDocuments()
        For Each formName In myForms
            MsgBox formName
        Next formName

##### Em Python

        bas = CreateScriptService("Basic")
        doc = CreateScriptService("Document", bas.ThisDataBaseDocument)
        myForms = doc.FormDocuments()
        for formName in myForms:
            bas.MsgBox(formName)

Para saber mais sobre documentos de formulário, consulte a página de ajuda do serviço Form.

## Forms

Dependendo dos parâmetros fornecidos, este método retornará:

- Um Array começando com índice zero com os nomes de todos os formulários contidos num documento de formulário (se o argumento Form estiver ausente)

- Um objeto SFDocuments.Form representando o formulário especificado no argumento Form.

O método Forms foi descontinuado desde LibreOffice 7.6. Embora ainda esteja disponível, pode ser removido do serviço Base em um lançamento futuro. Em vez disso, use o método Forms do serviço FormDocument.

### Sintaxe:

svc.Forms(formdocument: str): str[0..*]

svc.Forms(formdocument: str, form: str = ''): svc

svc.Forms(formdocument: str, form: int): svc

### Parâmetros:

formdocument: O nome de um documento de formulário válido como uma string que diferencia maiúsculas de minúsculas.

form: O nome ou número de índice do formulário armazenado no documento de formulário. Se este argumento estiver ausente, o método retornará uma lista com os nomes de todos os formulários disponíveis no documento do formulário.

Embora seja possível usar números de índice para se referir a formulários, isso só é recomendado quando houver apenas um formulário no documento de formulário. Se houver dois ou mais formulários, é preferível usar o nome do formulário.

### Exemplo:

A primeira linha do exemplo abaixo retorna uma lista de todos os formulários no documento de formulário "myFormDocument". A segunda linha retorna uma instância do serviço Form que representa o formulário "myForm".

##### Em Basic

        Dim formsList as Object : formsList = oDoc.Forms("myFormDocument")
        Dim oForm as Object : oForm = oDoc.Forms("myFormDocument", "myForm")

##### Em Python

        formsList = doc.Forms("myFormDocument")
        form = doc.Forms("myFormDocument", "myForm")

## GetDatabase

Retorna uma instância doserviço Database que permite a execução de comandos SQL no banco de dados definido e / ou armazenado no documento Base atual

### Sintaxe:

svc.GetDatabase(user: str = '', password: str = ''): svc

### Parâmetros:

usuário, senha: Parâmetros de login opcionais como strings. O valor padrão para ambos os parâmetros é uma string vazia "".

### Exemplo:

##### Em Basic

        Dim myDoc As Object, myDatabase As Object, ui As Object
        Set ui = CreateScriptService("UI")
        Set myDoc = ui.OpenBaseDocument("C:\Documents\myDb.odb")
        ' Nome de usuário e senha são informados abaixo, se necessário
        Set myDatabase = myDoc.GetDatabase()
        ' ... Executar consultas, comandos SQL, etc...
        myDatabase.CloseDatabase()
        myDoc.CloseDocument()

##### Em Python

        ui = CreateScriptService("UI")
        myDoc = ui.OpenBaseDocument(r"C:\Documents\myDb.odb")
        myDatabase = myDoc.GetDatabase()
        # ... Executar consultas, comandos SQL, ...
        myDatabase.CloseDatabase()
        myDoc.CloseDocument()

## IsLoaded

Retorna True se o FormDocument especificado estiver aberto no momento.

### Sintaxe:

svc.IsLoaded(formdocument: str): bool

### Parâmetros:

formdocument: O nome de um FormDocument a ser verificado, como uma string que diferencia maiúsculas de minúsculas.

### Exemplo:

##### Em Basic

        If Not oDoc.IsLoaded("myFormDocument") Then
            oDoc.OpenFormDocument("myFormDocument")
        End If

##### Em Python

        if not doc.IsLoaded("myFormDocument"):
            doc.OpenFormDocument("myFormDocument")

## OpenFormDocument

Abre o FormDocument especificado, tanto no modo normal, quanto no modo de design. Este método retorna uma instância de serviço FormDocument de acordo com o tipo de documento de formulário.

Se um documento de formulário já estiver aberto, ele é ativado sem alterar o seu modo.

Se o documento de formulário especificado não existir, então retorna Nothing.

### Sintaxe:

svc.OpenFormDocument(formdocument: str, designmode: bool = False): svc

### Parâmetros:

formDocument: O nome do FormDocument a ser aberto, como uma string que diferencia maiúsculas de minúsculas.

designmode: Se este argumento for True, o FormDocument será aberto no modo de design.

### Exemplo:

##### Em Basic

A maioria dos documentos de formulário são armazenados na raiz do documento Base e podem ser abertos simplesmente usando seus nomes, como no exemplo abaixo:

        Dim oFormDoc As Object
        oFormDoc = oDoc.OpenFormDocument("myFormDocument")

Se os documentos do formulário estiverem organizados em pastas, torna-se necessário incluir o nome da pasta para especificar o documento do formulário a ser aberto, conforme ilustrado no exemplo a seguir:

        oFormDoc = oDoc.OpenFormDocument("myFolder/myFormDocument")

##### Em Python

        formDoc = doc.OpenFormDocument("myFormDocument")

        formDoc = doc.OpenFormDocument("myFolder/myFormDocument")

## OpenQuery

Abre a janela de exibição de dados da consulta especificada e retorna uma instância de serviço da Datasheet.

A consulta pode ser aberta no modo normal ou de edição.

Se a consulta já estiver aberta, sua janela de Exibição de dados torna-se ativa.

Ao fechar o arquivo Base também fechará a janela de Exibição de dados.

### Sintaxe:

svc.OpenQuery(queryname: str, designmode: bool = False): obj

### Parâmetros:

queryname: o nome de uma consulta existente como uma string que diferencia maiúsculas de minúsculas.

designmode: Se esse argumento for configurado como True a consulta é aberta no modo de edição. Caso contrário será aberta no modo normal. (Padrão = False).

### Exemplo:

##### Em Basic

          oDoc.OpenQuery("MyQuery", DesignMode := True)

##### Em Python

          doc.OpenQuery("MyQuery", designmode=True)

## OpenTable

Abre a janela Exibição de dados da tabela especificada e retorna uma instância do serviço Datasheet.

A tabela pode ser aberta tanto no modo normal quanto do modo de edição.

Se a tabela já estiver aberta, sua janela Exibição de dados será ativada.

Fechar o documento Base fará com que a janela de exibição de dados também seja fechada.

### Sintaxe:

svc.OpenTable(tablename: str, designmode: bool = False): obj

### Parâmetros:

tablename: O nome de uma tabela existente como uma String que diferencia maiúsculas de minúsculas.

designmode: Se esse argumento for configurado como True a tabela é aberta no modo de edição. Caso contrário é aberta no modo normal. (Padrão = False).

### Exemplo:

##### Em Basic

          oDoc.OpenTable("MyTable", DesignMode = False)

##### Em Python

          doc.OpenTable("MyTable", designmode=False)

## PrintOut

Este método envia o conteúdo de um dado documento de formulário à impressora padrão ou à impressora definida pelo método SetPrinter().

Retorna True se a impressão do documento foi bem-sucedida.

O método PrintOut foi descontinuado desde LibreOffice 7.6. Embora ainda esteja disponível, pode ser removido do serviço Base em um lançamento futuro. Em vez disso, use o método PrintOut do serviço FormDocument.

### Sintaxe:

svc.PrintOut(opt formdocument: str, pages: str = "", copies: num = 1): bool

### Parâmetros:

formdocument: Um nome válido de documento de formulário informada como uma string sensível à caixa. O documento de formulário deve estar aberto. O documento de formulário é ativado pelo método.

pages: String contendo as páginas a serem impressas, da mesma forma como é feita a definição usando a interface do usuário. Por exemplo: "1-4;10;15-18". O valor padrão é a impressão de todas as páginas.

copies: Número de cópias. O padrão é 1.

### Exemplo:

##### Em Basic

        If oDoc.PrintOut("myForm", "1-4;10;15-18", Copies := 2) Then
            ' ...
        End If

##### Em Python

        if doc.PrintOut('myForm', copies=3, pages='45-88'):
            # ...

## SetPrinter

Define as opções de impressora para um documento de formulário. O documento de formulário deve estar aberto.

Retorna True se bem-sucedida.

O método SetPrinter foi descontinuado desde LibreOffice 7.6. Embora ainda esteja disponível, pode ser removido do serviço Base em um lançamento futuro. Em vez disso, use o método SetPrinter do serviço Document.

### Sintaxe:

svc.SetPrinter(opt formdocument: str, opt printer: str, opt orientation: str, paperformat: str): bool

### Parâmetros:

formdocument: Um nome válido de documento de formulário como uma string sensível à caixa.

printer: Nome da fila de impressão para a qual a impressão será enviada. Se ausente, a impressora padrão é usada.

orientation: Pode ser PORTRAIT ou LANDSCAPE. Se ausente, a orientação não é alterada e o valor definido nas configurações da impressora será usado.

paperformat: especifica o formato do papel como um valor de string que pode ser A3, A4, A5, LETTER , LEGAL ou TABLOID. Deixado inalterado quando ausente.

### Exemplo:

##### Em Basic

        oDoc.SetPrinter("myForm", Orientation := "PORTRAIT")

##### Em Python

        doc.SetPrinter('myForm', paperformat='TABLOID')

Todas as rotinas ou identificadores do ScriptForge em Basic que possuem o caractere "_" como prefixo são reservadas para uso interno. Elas não devem ser usadas em macros escritas em Basic ou em Python.

Tópicos relacionados

Serviço SFDatabases.Database

Serviço SFDocuments.Document

Serviço SFDocuments.Form

Serviço ScriptForge.UI