Contenu

# Service SFDocuments.Base

Le service Base fournit un certain nombre de méthodes et de propriétés pour faciliter la gestion et la manipulation des documents LibreOffice Base.

Ce service est étroitement lié au service Document, qui fournit des méthodes génériques pour gérer les documents LibreOffice, y compris les documents Base. Par conséquent, le service Base étend le service Document et fournit des méthodes supplémentaires spécifiques aux documents Base, permettant aux utilisateurs de :

- Accéder à la base de données contenue dans un document Base.

- Ouvrir les documents de formulaire stockés dans un document Base.

- Vérifier si un document de formulaire à partir d'un document Base est actuellement chargé.

Reportez-vous au service Document pour en savoir plus sur les méthodes et les propriétés qui peuvent être utilisées pour gérer les documents LibreOffice.

## Invocation du service

Avant d'utiliser le service Base, la bibliothèque ScriptForge doit être chargée ou importée :

• Les macros Basic nécessitent de charger la bibliothèque ScriptForge à l'aide de l'instruction suivante :
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Les scripts Python nécessitent un import depuis le module scriptforge :
from scriptforge import CreateScriptService

##### En Basic :

Le service Base peut être appelé de différentes manières. L'extrait de code ci-dessous utilise la méthode CreateBaseDocument du service UI pour créer un nouveau fichier Base.

Notez que dans tous les exemples, l'objet oDoc est une instance du service Base.

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

Le service Base peut également être instancié lors de l'ouverture d'un fichier Base existant, comme indiqué ci-dessous :

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

Si un document Base est déjà ouvert, il est possible d'instancier directement le service Base :

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

##### En Python

Les exemples ci-dessus peuvent également être traduits en Python comme suit :

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

L'utilisation de la sous-chaîne "SFDocuments." dans l'exemple précédent est facultative.

Liste des méthodes dans le service Base
CloseFormDocument FormDocuments Forms GetDatabase | IsLoaded OpenFormDocument OpenQuery OpenTable | PrintOut SetPrinter

## CloseFormDocument

Ferme le document de formulaire donné. Renvoie True si la fermeture réussit.

La méthode CloseFormDocument est obsolète depuis LibreOffice 7.6. Bien qu'elle soit toujours disponible, elle pourra être supprimée du service Base dans une version ultérieure. Utilisez plutôt la méthode CloseDocument du service FormDocument.

### Syntaxe :

svc.CloseFormDocument(formdocument: str): bool

### Paramètres :

formdocument : Le nom du FormDocument à fermer, sous forme de chaîne sensible à la casse.

### Exemple :

Si les documents de formulaire sont organisés en dossiers, il est nécessaire d'inclure le nom du dossier pour spécifier le document de formulaire à ouvrir, comme illustré dans les exemples suivants :

##### En Basic :

        oDoc.CloseFormDocument("Folder1/myFormDocument")

##### En Python

        doc.CloseFormDocument('Folder1/myFormDocument')

## FormDocuments

Renvoie une matrice avec les noms complets (chemin/nom) de tous les documents de formulaire dans le document Base sous la forme d'une matrice de chaînes de base zéro.

### Syntaxe :

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

### Exemple :

L'extrait de code ci-dessous imprime les noms de tous les documents de formulaire dans le document Base actuel.

##### En 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

##### En Python

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

To learn more about form documents, refer to ScriptForge.FormDocument service help page.

## Forms

En fonction des paramètres fournis, cette méthode renverra :

- Une matrice de base zéro avec les noms de tous les formulaires contenus dans un document de formulaire (si l'argument Form est absent)

- Un objet SFDocuments.Form représentant le formulaire spécifié dans l'argument Form.

La méthode Forms est obsolète depuis LibreOffice 7.6. Bien qu'elle soit toujours disponible, elle pourra être supprimée du service Base dans une version ultérieure. Utilisez plutôt la méthode Forms du service FormDocument.

### Syntaxe :

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

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

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

### Paramètres :

formdocument : Le nom d'un document de formulaire valide sous forme de chaîne sensible à la casse.

form: le nom ou le numéro d'index du formulaire stocké dans le document de formulaire. Si cet argument est absent, la méthode renverra une liste avec les noms de tous les formulaires disponibles dans le document de formulaire.

Bien qu'il soit possible d'utiliser des numéros d'index pour faire référence à des formulaires, cela n'est recommandé que lorsqu'il n'y a qu'un seul formulaire dans le document de formulaire. S'il y a deux formulaires ou plus, il est préférable d'utiliser le nom du formulaire à la place.

### Exemple :

La première ligne de l'exemple ci-dessous renvoie une liste de tous les formulaires du document de formulaire « myFormDocument ». La deuxième ligne renvoie une instance du service Form représentant le formulaire « myForm ».

##### En Basic :

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

##### En Python

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

## GetDatabase

Renvoie une instance du service Database qui permet l'exécution de commandes SQL sur la base de données définie et/ou stockée dans le document Base actif

### Syntaxe :

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

### Paramètres :

user, password: paramètres de connexion facultatifs sous forme de chaînes. La valeur par défaut des deux paramètres est une chaîne vide "".

### Exemple :

##### En Basic :

        Dim myDoc As Object, myDatabase As Object, ui As Object
        Set ui = CreateScriptService("UI")
        Set myDoc = ui.OpenBaseDocument("C:\Documents\myDb.odb")
        ' L'utilisateur et le mot de passe sont fournis ci-dessous, si nécessaire
        Set myDatabase = myDoc.GetDatabase()
        '   ... requêtes Run, instruction SQL, ...
        myDatabase.CloseDatabase()
        myDoc.CloseDocument()

##### En Python

        ui = CreateScriptService("UI")
        myDoc = ui.OpenBaseDocument(r"C:\Documents\myDb.odb")
        myDatabase = myDoc.GetDatabase()
        #   ... requêtes Run, instructions SQL, ...
        myDatabase.CloseDatabase()
        myDoc.CloseDocument()

## IsLoaded

Renvoie True si le FormDocument spécifié est actuellement ouvert.

### Syntaxe :

svc.IsLoaded(formdocument: str): bool

### Paramètres :

formdocument : le nom d'un FormDocument à vérifier, en tant que chaîne sensible à la casse.

### Exemple :

##### En Basic :

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

##### En Python

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

## OpenFormDocument

Ouvre le FormDocument spécifié en mode normal ou en mode conception. Cette méthode renvoie une instance de service FormDocument correspondant au document de formulaire spécifié.

Si le document formulaire est déjà ouvert, il est activé sans changer de mode.

Si le document de formulaire spécifié n'existe pas, alors Rien est renvoyé.

### Syntaxe :

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

### Paramètres :

formDocument : Le nom du FormDocument à ouvrir, sous forme de chaîne sensible à la casse.

designmode : si cet argument est True, le FormDocument sera ouvert en mode ébauche.

### Exemple :

##### En Basic :

La plupart des formulaires sont stockés à la racine du document Base et peuvent être ouverts simplement en utilisant leurs noms, comme dans l'exemple ci-dessous :

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

Si les documents de formulaire sont organisés en dossiers, il devient nécessaire d'inclure le nom du dossier pour spécifier le document de formulaire à ouvrir, comme illustré dans l'exemple suivant :

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

##### En Python

        formDoc = doc.OpenFormDocument("myFormDocument")

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

## OpenQuery

Ouvre la fenêtre Affichage des données de la requête spécifiée et renvoie une instance du service Datasheet.

La requête peut être ouverte en mode normal ou en mode conception.

Si la requête est déjà ouverte, sa fenêtre d'affichage des données sera rendue active.

La fermeture du document de base entraînera également la fermeture de la fenêtre Affichage des données.

### Syntaxe :

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

### Paramètres :

queryname : le nom d'une requête existante sous forme de chaîne sensible à la casse.

designmode : si cet argument est défini sur True, la requête est ouverte en mode conception. Sinon, elle est ouverte en mode normal (par défaut = False).

### Exemple :

##### En Basic :

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

##### En Python

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

## OpenTable

Ouvre la fenêtre Affichage des données de la table spécifiée et renvoie une instance du service Datasheet.

La table peut être ouverte en mode normal ou en mode conception.

Si la table est déjà ouverte, sa fenêtre Affichage des données sera rendue active.

La fermeture du document Base entraînera également la fermeture de la fenêtre Affichage des données.

### Syntaxe :

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

### Paramètres :

tablename : le nom d'une table existante sous la forme d'une chaîne sensible à la casse.

designmode : si cet argument est défini sur True, la table est ouverte en mode conception. Sinon, il est ouvert en mode normal (par défaut = False).

### Exemple :

##### En Basic :

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

##### En Python

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

## PrintOut

Cette méthode envoie le contenu du document de formulaire donné à une imprimante par défaut ou à une imprimante définie par la méthode SetPrinter().

Renvoie True si le document a été imprimé avec succès.

La méthode PrintOut est obsolète depuis LibreOffice 7.6. Bien qu'elle soit toujours disponible, elle pourra être supprimée du service Base dans une version ultérieure. Utilisez plutôt la méthode PrintOut du service FormDocument.

### Syntaxe :

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

### Paramètres :

formdocument : un nom de formulaire de document valide sous forme de chaîne sensible à la casse. Le document de formulaire doit être ouvert. Il est activé par la méthode.

pages : les pages à imprimer sous forme de chaîne, comme dans l'interface utilisateur. Exemple : "1-4;10;15-18". La valeur par défaut est toutes les pages.

copies : le nombre de copies. La valeur par défaut est 1.

### Exemple :

##### En Basic :

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

##### En Python

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

## SetPrinter

Définissez les options d'impression pour un document de formulaire. Le document de formulaire doit être ouvert.

Renvoie True en cas de succès.

La méthode SetPrinter est obsolète depuis LibreOffice 7.6. Bien qu'elle soit toujours disponible, elle pourra être supprimée du service Base dans une version ultérieure. Utilisez plutôt la méthode SetPrinter du service Document.

### Syntaxe :

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

### Paramètres :

formdocument : un nom de formulaire de document valide sous forme de chaîne sensible à la casse.

printer : le nom de la file d'attente d'impression vers laquelle imprimer. En cas d'absence, l'imprimante par défaut est définie.

orientation : soit PORTRAIT ou PAYSAGE. Lorsque le paramètre est absent, reste inchangé par rapport aux paramètres de l'imprimante.

paperformat : spécifie le format du papier sous la forme d'une valeur de chaîne qui peut être soit A3, A4, A5, LETTER, LEGAL ou TABLOID. Reste inchangé en cas d'absence.

### Exemple :

##### En Basic :

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

##### En Python

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

Toutes les routines ou identifiants de base ScriptForge qui sont préfixés par un caractère de soulignement "_" sont réservés à un usage interne. Ils ne sont pas destinés à être utilisés dans des macros de base ou des scripts Python.

Rubriques connexes

SFDatabases.Database

Service SFDocuments.Document

SFDocuments. Service Form

Service ScriptForge.UI