Contenuto

# Servizio SFDatabases.Database

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.

## Invocazione del servizio

Prima di usare il servizio Datasheet è necessario caricare o importare le librerie ScriptForge:

• Le macro in Basic richiedono il caricamento della libreria ScriptForge usando la seguente istruzione:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Gli script in Python richiedono un'importazione dal modulo scriptforge:
from scriptforge import CreateScriptService

##### In Basic

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

##### In Python

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

## Proprietà

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.

## Metodi

Elenco dei metodi del servizio Datasheet
Activate CloseDatasheet CreateMenu | GetText GetValue GoToCell | RemoveMenu Toolbars

## Activate

Porta in primo piano la finestra della struttura dati a cui fa riferimento l'istanza di Datasheet.

### Sintassi:

svc.Activate()

### Esempio:

##### In Basic

          oSheet.Activate()

##### In Python

          sheet.Activate()

## CloseDatasheet

Chiude la finestra della struttura dati a cui fa riferimento l'istanza di Datasheet.

### Sintassi:

svc.CloseDatasheet()

### Esempio:

##### In Basic

          oSheet.CloseDatasheet()

##### In Python

          sheet.CloseDatasheet()

## CreateMenu

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.

### Sintassi:

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

### Parametri:

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

### Esempio:

##### In Basic

          Dim oMenu As Object
          Set oMenu = oSheet.CreateMenu("Mio menu", Before := "Dati")
          With oMenu
              .AddItem("Voce 1", Command := ".uno:About")
              ' ...
              .Dispose()
          End With

##### In Python

          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.

## GetText

Restituisce il testo nella colonna indicata della riga corrente.

Questo metodo non modifica la posizione del cursore nella finestra della struttura dati.

### Sintassi:

svc.GetText(column: any): str

### Parametri:

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.

### Esempio:

##### In Basic

          oSheet.GetText("FirstName")

##### In Python

          sheet.GetText("FirstName")

## GetValue

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.

### Sintassi:

svc.GetValue(column: any): any

### Parametri:

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.

### Esempio:

##### In Basic

          oSheet.GetValue("Address")

##### In Python

          sheet.GetValue("Address")

## GoToCell

Sposta il cursore nella riga e colonna specificate.

### Sintassi:

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

### Parametri:

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.

### Esempio:

##### In Basic

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

##### In Python

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

## RemoveMenu

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.

### Sintassi:

svc.RemoveMenu(menuheader: str): bool

### Parametri:

menuheader: il nome, che distingue tra maiuscole e minuscole, del menu da eliminare. Il nome non deve comprendere il carattere tilde ("~").

### Esempio:

##### In Basic

          oSheet.RemoveMenu("Data")

##### In Python

          sheet.RemoveMenu("Data")

### Toolbars

Questo metodo restituisce un elenco dei nomi delle barre degli strumenti disponibili nel documento corrente o un'istanza del servizio SFWidgets.Toolbar.

### Sintassi:

svc.Toolbars(opt ToolbarName: str): uno
svc.Toolbars(): str[0..]

### Parametri:

ToolbarName: il nome comune di una delle barre degli strumenti disponibili.

### Esempio:

##### In Basic

        Dim oToolbar As Object
        Set oToolbar = oDoc.Toolbars("myToolbar")

##### In Python

        a_list = doc.Toolbars()

Tutte le routine e gli identificatori Basic di ScriptForge che iniziano con un carattere di sottolineatura "_" sono riservati per uso interno. Non è previsto il loro utilizzo nelle macro in Basic o negli script in Python.

Argomenti correlati

Servizio SFDatabases.Database

Servizio ScriptForge.UI