Contenu
Index 🔎︎

# Service SFDatabases.Datasheet

Le service Datasheet permet de visualiser le contenu des tables de la base de données ainsi que les résultats des requêtes et des instructions SQL à l'aide de la vue de données de Base. De plus, ce service permet de :

- Ajouter des menus personnalisés à la vue des données.

- Accéder aux valeurs dans des positions spécifiques de la vue des données.

- Positionner le curseur dans une cellule spécifique de la vue des données.

## Invocation du service

Avant d'utiliser le service Datasheet, 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 Datasheet peut être appelé de deux manières différentes selon que le fichier de base de données est ouvert ou non.

L'exemple ci-dessous considère que le fichier de base de données est ouvert, donc le service UI peut être utilisé pour récupérer le document et la méthode OpenTable du service Database est utilisé pour obtenir une instance de service Datasheet.

        Dim ui As Object, oBase As Object, oSheet As Object
        Set ui = CreateScriptService("UI")
        ' L'objet oBase est une instance du service Base
        Set oBase = ui.GetDocument("C:\Documents\myDB.odb")
        ' L'objet oSheet est une instance du service Datasheet
        Set oSheet = oBase.OpenTable("Customers")

Dans l'exemple ci-dessus, il est également possible d'utiliser la méthode OpenQuery du service Base pour obtenir une instance Datasheet.

Pour invoquer le service Datasheet lorsque le fichier de base de données n'est pas ouvert, utilisez les méthodes OpenTable, OpenQuery ou OpenSql à partir de le service Database. L'exemple ci-dessous utilise la méthode OpenTable pour ouvrir une table existante dans le fichier de base de données :

        Dim oDatabase As Object, oSheet As Object
        ' L'objet oDatabase est une instance du service Database
        Set oDatabase = CreateScriptService("Database", "C:\Documents\myDB.odb")
        ' L'objet oSheet est une instance du service Datasheet
        Set oSheet = oDatabase.OpenTable("Customers")

##### En Python

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

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

## Propriétés

Les propriétés suivantes sont disponibles dans le service Datasheet :

Nom | Lecture seule | Type | Description
--- | --- | --- | ---
ColumnHeaders | Oui | Matrice de chaînes | Renvoie un Array avec les noms des en-têtes de colonne dans la feuille de données.
CurrentColumn | Oui | String | Renvoie le nom de la colonne actuellement sélectionnée.
CurrentRow | Oui | Integer | Renvoie le numéro de la ligne actuellement sélectionnée, en commençant à 1.
DatabaseFileName | Oui | String | Renvoie le nom de fichier du fichier Base au format FSO.FileNaming.
Filter | Non | String | Spécifie un filtre à appliquer à la feuille de données exprimé sous la forme de la clause WHERE d'une requête SQL sans le mot clé WHERE. Si une chaîne vide est spécifiée, le Filtre actif est supprimé.
LastRow | Oui | Integer | Renvoie le nombre de lignes dans la feuille de données.
OrderBy | Non | String | Spécifie l'ordre dans lequel les enregistrements sont affichés sous la forme de la clause ORDER BY d'une requête SQL sans le mot clé ORDER BY. Si une chaîne vide est spécifiée, le OrderBy actif est supprimé.
ParentDatabase | Oui | Objet | Renvoie l'instance de service Database à laquelle appartient la feuille de données.
Source | Oui | String | Renvoie une chaîne qui représente la source de données, qui peut être une instruction SQL, un nom de table ou un nom de requête.
SourceType | Oui | String | Renvoie le type de la source de données, qui peut être l'une des valeurs suivantes : "SQL", "TABLE" ou "QUERY".
XComponent | Oui | Objet UNO | Renvoie l'objet UNO com.sun.star.lang.XComponent qui représente la feuille de données.
XControlModel | Oui | Objet UNO | Renvoie l'objet UNO com.sun.star.awt.XControl qui représente la feuille de données
XTabControllerModel | Oui | Objet UNO | Renvoie l'objet UNO com.sun.star.awt.XTabControllerModel qui représente la feuille de données.

## Méthodes

Liste des méthodes dans le service Datasheet
Activate CloseDatasheet CreateMenu | GetText GetValue | GoToCell RemoveMenu

## Activate

Amène au premier plan la fenêtre d'affichage des données référencée par l'instance Datasheet.

### Syntaxe :

svc.Activate()

### Exemple :

##### En Basic :

          oSheet.Activate()

##### En Python

          sheet.Activate()

## CloseDatasheet

Ferme la fenêtre d'affichage des données référencée par l'instance Datasheet.

### Syntaxe :

svc.CloseDatasheet()

### Exemple :

##### En Basic :

          oSheet.CloseDatasheet()

##### En Python

          sheet.CloseDatasheet()

## CreateMenu

Crée une nouvelle entrée de menu dans la fenêtre d'affichage des données et renvoie une instance de service SFWidgets.Menu, par laquelle des éléments de menu peuvent être ajoutés par programmation.

Les menus ajoutés à l'aide de la méthode CreateMenu sont perdus dès que la fenêtre d'affichage des données est fermée.

### Syntaxe :

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

### Paramètres :

menuheader : le nom du nouveau menu.

before : cet argument peut être soit le nom d'une entrée de menu existante devant laquelle le nouveau menu sera placé, soit un nombre exprimant la position du nouveau menu. Si cet argument est laissé vide, le nouveau menu est placé comme dernière entrée.

submenuchar : Le délimiteur utilisé dans les arborescences de menu (par défaut = ">")

### Exemple :

##### En Basic :

          Dim oMenu As Object
          Set oMenu = oSheet.CreateMenu("My Menu", Before := "Data")
          With oMenu
              .AddItem("Item 1", Command := ".uno:About")
              ' ...
              .Dispose()
          End With

##### En Python

          menu = sheet.CreateMenu("My Menu", before="Data")
          menu.AddItem("Item 1", command=".uno:About")
          # ...
          menu.Dispose()

Lisez la page d'aide Service de menu pour en savoir plus sur la création d'entrées de menu et de sous-menu et sur les commandes associées.

## GetText

Renvoie le texte d'une colonne donnée de la ligne actuelle.

Cette méthode ne modifie pas la position du curseur dans la fenêtre d'affichage des données.

### Syntaxe :

svc.GetText(column: any): str

### Paramètres :

column : le nom de la colonne sous forme de chaîne ou la position de la colonne (commençant à 1). Si une position supérieure au nombre de colonnes est donnée, la dernière colonne est renvoyée.

### Exemple :

##### En Basic :

          oSheet.GetText("FirstName")

##### En Python

          sheet.GetText("FirstName")

## GetValue

Renvoie la valeur dans une colonne donnée de la ligne actuelle en tant que type Basic valide.

Les types pouvant être renvoyés sont : String, Integer, Long, Single, Double, Date et Null.

Les types binaires sont renvoyés sous la forme d'une valeur Long indiquant la longueur du champ binaire.

Une valeur Empty est renvoyée si la valeur requise n'a pas pu être récupérée.

Cette méthode ne modifie pas la position du curseur dans la fenêtre d'affichage des données.

### Syntaxe :

svc.GetValue(column: any): any

### Paramètres :

column : le nom de la colonne sous forme de chaîne ou la position de la colonne (commençant à 1). Si une position supérieure au nombre de colonnes est donnée, la dernière colonne est renvoyée.

### Exemple :

##### En Basic :

          oSheet.GetValue("Address")

##### En Python

          sheet.GetValue("Address")

## GoToCell

Déplace le curseur sur la ligne et la colonne spécifiées.

Cette méthode ne modifie pas la position du curseur dans la fenêtre d'affichage des données.

### Syntaxe :

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

### Paramètres :

row : Le numéro de ligne sous forme de valeur numérique commençant à 1. Si la ligne demandée dépasse le nombre de lignes existantes, le curseur est déplacé vers la dernière ligne. Si cet argument n'est pas spécifié, la ligne n'est pas modifiée.

column : Le nom de la colonne sous forme de String ou la position de la colonne (commençant à 1). Si la colonne demandée dépasse le nombre de colonnes existantes, le curseur est déplacé vers la dernière colonne. Si cet argument n'est pas spécifié, la colonne n'est pas modifiée.

### Exemple :

##### En Basic :

          ' Déplace le curseur dans la colonne "LastName" de la ligne 4
          oSheet.GoToCell(4, "LastName")
          ' Déplace le curseur sur la troisième colonne de la ligne courante
          oSheet.GoToCell(Column := 3)
          ' Déplace le curseur d'une ligne vers le bas en le laissant dans la même colonne
          oSheet.GoToCell(Row := oSheet.CurrentRow + 1)
          ' Passe à la dernière colonne de la dernière ligne
          Dim LastColumn As Integer : LastColumn = UBound(oSheet.ColumnHeaders) + 1
          oSheet.GoToCell(oSheet.LastRow, LastColumn)

##### En Python

          sheet.GoToCell(4, "LastName")
          sheet.GoToCell(column=3)
          sheet.GoToCell(row=sheet.CurrentRow + 1)
          sheet.GoToCell(sheet.LastRow, len(sheet.ColumnHeaders))

## RemoveMenu

Supprime une entrée de menu de la vue des données par son nom.

Cette méthode peut supprimer les menus qui appartiennent à l'interface utilisateur standard ainsi que les menus qui ont été ajoutés par programme avec la méthode CreateMenu. La suppression des menus standard n'est pas permanente et ils réapparaîtront après la fermeture et la réouverture de la fenêtre.

### Syntaxe :

svc.RemoveMenu(menuheader: str): bool

### Paramètres :

menuheader : Le nom sensible à la casse du menu à supprimer. Le nom ne doit pas inclure le caractère tilde ("~").

### Exemple :

##### En Basic :

          oSheet.RemoveMenu("Data")

##### En Python

          sheet.RemoveMenu("Data")

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

ScriptForge.UI service