Guida di LibreOffice 25.2
Il servizio Datasheet consente di visualizzare i contenuti delle tabelle di un database, così come i risultati delle ricerche e delle istruzioni SQL usando la Struttura dati di Base. Inoltre, questo servizio permette di:
Aggiungere menu personalizzati alla struttura dati.
Accedere ai valori in una posizione specifica della struttura dati.
Posizionare il cursore in una specifica cella della struttura dati.
Prima di usare il servizio Datasheet è necessario caricare o importare le librerie ScriptForge:
Il servizio Datasheet può essere invocato in due modi differenti a seconda che il file del database sia aperto o no.
L'esempio seguente presuppone che il file del database sia aperto, perciò il servizio UI può essere usato per trovare il documento e il metodo OpenTable del servizio Database è usato per ottenere un'istanza del servizio Datasheet.
    Dim ui As Object, oBase As Object, oSheet As Object
    Set ui = CreateScriptService("UI")
    ' L'oggetto oBase è un'istanza del servizio Base
    Set oBase = ui.GetDocument("C:\Documents\myDB.odb")
    ' L'oggetto oSheet è un'istanza del servizio Datasheet
    Set oSheet = oBase.OpenTable("Customers")
  Nell'esempio qui sopra è anche possibile usare il metodo OpenQuery del servizio Base per ottenere un'istanza di Datasheet.
Per invocare il servizio Datasheet quando il file del database non è aperto, usare i metodi OpenTable, OpenQuery o OpenSql del servizio Database. L'esempio seguente usa il metodo OpenTable per aprire una tabella esistente nel file di database:
    Dim oDatabase As Object, oSheet As Object
    ' L'oggetto oDatabase è un'istanza del servizio Database
    Set oDatabase = CreateScriptService("Database", "C:\Documents\myDB.odb")
    ' L'oggetto oSheet è un'istanza del servizio Datasheet
    Set oSheet = oDatabase.OpenTable("Customers")
  Gli esempi qui sopra possono essere portati in Python come segue:
    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")
  Le seguenti proprietà sono disponibili nel servizio Datasheet:
| Nome | Solo lettura | Tipo | Descrizione | 
|---|---|---|---|
| ColumnHeaders | Sì | Matrice di stringhe | Restituisce una matrice Array con i nomi delle intestazioni di colonna della struttura dati. | 
| CurrentColumn | Sì | String | Restituisce il nome della colonna attualmente selezionata. | 
| CurrentRow | Sì | Integer | Restituisce il numero della riga attualmente selezionata, a partire da 1. | 
| DatabaseFileName | Sì | String | Restituisce il nome del file di Base nel formato FSO.FileNaming. | 
| Filter | No | String | Specifica un filtro da applicare alla struttura dati espresso come clausola WHERE di una ricerca SQL senza la parola chiave WHERE. Se è specificata una stringa vuota il filtro attivo Filter viene eliminato. | 
| LastRow | Sì | Integer | Restituisce il numero di righe nella struttura dati. | 
| OrderBy | No | String | Specifica l'ordine in cui sono visualizzati i record, espresso come clausola ORDER BY di una ricerca SQL senza la parola chiave ORDER BY. Se è specificata una stringa vuota l'ordinamento attivo OrderBy viene eliminato. | 
| ParentDatabase | Sì | Oggetto | Restituisce l'istanza del servizio Database a cui appartiene la struttura dati. | 
| Source | Sì | String | Restituisce una stringa che rappresenta la sorgente dei dati, che può essere un'istruzione SQL, il nome di una tabella o il nome di una ricerca. | 
| SourceType | Sì | String | Restituisce il tipo della sorgente dei dati, che può essere uno dei seguenti valori: "SQL", "TABLE" o "QUERY". | 
| XComponent | Sì | Oggetto UNO | Restituisce l'oggetto UNO com.sun.star.lang.XComponent che rappresenta la struttura dati. | 
| XControlModel | Sì | Oggetto UNO | Restituisce l'oggetto UNO com.sun.star.awt.XControl che rappresenta la struttura dati. | 
| XTabControllerModel | Sì | Oggetto UNO | Restituisce l'oggetto UNO com.sun.star.awt.XTabControllerModel che rappresenta la struttura dati. | 
| Elenco dei metodi del servizio Datasheet | ||
|---|---|---|
Porta in primo piano la finestra della struttura dati a cui fa riferimento l'istanza di Datasheet.
svc.Activate()
      oSheet.Activate()
    
      sheet.Activate()
    Chiude la finestra della struttura dati a cui fa riferimento l'istanza di Datasheet.
svc.CloseDatasheet()
      oSheet.CloseDatasheet()
    
      sheet.CloseDatasheet()
    Crea una nuova voce di menu nella finestra della struttura dati e restituisce un'istanza del servizio SFWidgets.Menu, attraverso la quale le voci di menu possono essere aggiunte con la programmazione.
I menu aggiunti con il metodo CreateMenu vengono persi alla chiusura della finestra della struttura dati.
svc.CreateMenu(menuheader: str, opt before: any, opt submenuchar: str): obj
menuheader: il nome del nuovo menu.
before: questo argomento può essere o il nome di una voce di menu esistente prima della quale posizionare il nuovo menu o un numero che rappresenta la posizione del nuovo menu. Se questo argomento è lasciato vuoto il nuovo menu sarà posizionato come ultima voce.
submenuchar: il delimitatore usato nei menu ad albero (predefinito = ">")
      Dim oMenu As Object
      Set oMenu = oSheet.CreateMenu("Mio menu", Before := "Dati")
      With oMenu
          .AddItem("Voce 1", Command := ".uno:About")
          ' ...
          .Dispose()
      End With
    
      menu = sheet.CreateMenu("Mio menu", before="Dati")
      menu.AddItem("Voce 1", command=".uno:About")
      # ...
      menu.Dispose()
    Per saperne di più su come creare nuove voci di menu e sottomenu e sui comandi a queste associati leggere la pagina Servizio Menu della guida in linea.
Restituisce il testo nella colonna indicata della riga corrente.
Questo metodo non modifica la posizione del cursore nella finestra della struttura dati.
svc.GetText(column: any): str
column: il nome della colonna in formato stringa o la sua posizione (a partire da 1). Se è indicata una posizione maggiore del numero di colonne, viene restituita l'ultima colonna.
      oSheet.GetText("FirstName")
    
      sheet.GetText("FirstName")
    Restituisce il valore nella colonna indicata della riga corrente come tipo di Basic valido.
I tipi che possono essere restituiti sono: String, Integer, Long, Single, Double, Date e Null.
I tipi binari sono restituiti come valore Long che indica la lunghezza del campo binario.
Un valore Empty è restituito quando il valore richiesto non può essere trovato.
Questo metodo non modifica la posizione del cursore nella finestra della struttura dati.
svc.GetValue(column: any): any
column: il nome della colonna in formato stringa o la sua posizione (a partire da 1). Se è indicata una posizione maggiore del numero di colonne, viene restituita l'ultima colonna.
      oSheet.GetValue("Address")
    
      sheet.GetValue("Address")
    Sposta il cursore nella riga e colonna specificate.
svc.GoToCell(opt row: int, opt column: any): bool
row: il numero della riga come valore numerico a partire da 1. Se la riga richiesta è superiore al numero di righe esistenti, il cursore viene spostato all'ultima riga. Se questo argomento non è specificato, allora la riga non viene modificata.
column: il nome della colonna in formato String o la posizione della colonna (a partire da 1). Se la colonna richiesta è superiore al numero di colonne esistenti, il cursore viene spostato all'ultima colonna. Se questo argomento non è specificato, allora la colonna non viene modificata.
      ' Sposta il cursore alla colonna "UltimoNome" della riga 4
      oSheet.GoToCell(4, "UltimoNome")
      ' Sposta il cursore alla terza colonna della riga corrente
      oSheet.GoToCell(Column := 3)
      ' Sposta il cursore in basso di una riga lasciandolo nella stessa colonna
      oSheet.GoToCell(Row := oSheet.CurrentRow + 1)
      ' Si sposta all'ultima colonna dell'ultima riga
      Dim LastColumn As Integer : LastColumn = UBound(oSheet.ColumnHeaders) + 1
      oSheet.GoToCell(oSheet.LastRow, LastColumn)
    
      sheet.GoToCell(4, "UltimoNome")
      sheet.GoToCell(column=3)
      sheet.GoToCell(row=sheet.CurrentRow + 1)
      sheet.GoToCell(sheet.LastRow, len(sheet.ColumnHeaders))
    Elimina una voce di menu dalla struttura dati in base al suo nome.
Questo metodo può eliminare menu che appartengono all'interfaccia utente standard, così come menu aggiunti attraverso la programmazione con il metodo CreateMenu. L'eliminazione di menu standard non è permanente e questi ricompaiono in seguito alla chiusura e riapertura della finestra.
svc.RemoveMenu(menuheader: str): bool
menuheader: il nome, che distingue tra maiuscole e minuscole, del menu da eliminare. Il nome non deve comprendere il carattere tilde ("~").
      oSheet.RemoveMenu("Data")
    
      sheet.RemoveMenu("Data")