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:

tip

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:

note

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

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.

warning

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

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

warning

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.

note

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.

note

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.

note

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.

warning

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.

warning

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

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.


♥ Doe para nosso projeto! ♥