Aide LibreOffice 25.8
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.
Avant d'utiliser le service Datasheet, la bibliothèque ScriptForge doit être chargée ou importée :
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")
  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")
  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. | 
| Liste des méthodes dans le service Datasheet | ||
|---|---|---|
Amène au premier plan la fenêtre d'affichage des données référencée par l'instance Datasheet.
svc.Activate()
      oSheet.Activate()
    
      sheet.Activate()
    Ferme la fenêtre d'affichage des données référencée par l'instance Datasheet.
svc.CloseDatasheet()
      oSheet.CloseDatasheet()
    
      sheet.CloseDatasheet()
    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.
svc.CreateMenu(menuheader: str, opt before: any, opt submenuchar: str): obj
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 = ">")
      Dim oMenu As Object
      Set oMenu = oSheet.CreateMenu("My Menu", Before := "Data")
      With oMenu
          .AddItem("Item 1", Command := ".uno:About")
          ' ...
          .Dispose()
      End With
    
      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.
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.
svc.GetText(column: any): str
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.
      oSheet.GetText("FirstName")
    
      sheet.GetText("FirstName")
    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.
svc.GetValue(column: any): any
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.
      oSheet.GetValue("Address")
    
      sheet.GetValue("Address")
    Déplace le curseur sur la ligne et la colonne spécifiées.
svc.GoToCell(opt row: int, opt column: any): bool
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.
      ' 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)
    
      sheet.GoToCell(4, "LastName")
      sheet.GoToCell(column=3)
      sheet.GoToCell(row=sheet.CurrentRow + 1)
      sheet.GoToCell(sheet.LastRow, len(sheet.ColumnHeaders))
    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.
svc.RemoveMenu(menuheader: str): bool
menuheader : Le nom sensible à la casse du menu à supprimer. Le nom ne doit pas inclure le caractère tilde ("~").
      oSheet.RemoveMenu("Data")
    
      sheet.RemoveMenu("Data")