Manuale d'uso

(ultimo aggiornamento: 16/01/2017)

Questo è il manuale d'uso del sistema di database online Gabama.

Indice

1. Introduzione
2. Applicazioni, Tabelle, Viste, Campi, Record
3. Gestione Utenti
4. Impostazioni Generali
5. Come fare per...


Introduzione

Gabama è una piattaforma web che consente di creare, in modo semplice e rapido, una applicazione web di gestione dati, ovvero un database online.

Per utilizzare il sistema è sufficiente un normale browser web, come Internet Explorer, Firefox, Google Chrome ecc.

La prima operazione da fare è la registrazione al sito: è sufficiente inserire la propria email. Il sistema invierà una email di benvenuto con le credenziali di accesso (dominio, utente e password). Queste saranno le credenziali dell'amministratore, l'utente che può modificare il sistema in tutti i suoi aspetti funzionali: applicazioni, tabelle, viste, utenti, profili di accesso ecc.

Per eseguire il primo accesso basterà fare click sul link ricevuto via email.

Il menu principale

L'accesso al sistema presenterà una schermata come quella seguente:


Da questa schermata è possibile selezionare una delle applicazioni presenti, eseguire una ricerca "globale" (su tutti i dati), oppure modificare il sistema.

Modifica del sistema

Dalla schermata principale, fare click sul tasto "Modifica il sistema". Si presenterà una nuova schermata con il Pannello di configurazione generale:


Da questo pannello è possibile usare il "Mago delle Applicazioni" oppure configurare manualmente il sistema.
Il Mago delle Applicazioni permette di creare una nuova applicazione facendo un semplice copia e incolla dei dati da file excel: è sufficiente aprire il foglio excel, selezionare i dati da copiare, compresa la prima riga di intestazione delle colonne, e incollare il tutto all'interno dello spazio predisposto.

NB: le eventuali "formule" presenti nel foglio non saranno copiate: solo la struttura dati sarà presa in considerazione.



Occorre infine fare click sul tasto "Importa i dati nel sistema". Apparirà di nuovo la schermata principale di selezione delle applicazioni, con la nuova applicazione appena creata in evidenza:



Usare un'Applicazione

Dalla schermata principale selezionare una delle applicazioni, facendo click su quella desiderata. Apparirà la tabella di default di questa applicazione e la sua vista principale:


Da questa schermata sarà possibile eseguire tutte le principali operazioni di gestione dei dati: inserimento, modifica cancellazione, ricerche, filtri, ordinamenti ecc.


Applicazioni, Tabelle, Viste, Campi, Record

In Gabama i dati sono organizzati come in qualsiasi altro database, ovvero in forma tabellare. Analizzeremo ora i concetti fondamentali che compongono il sistema.

Un'applicazione è semplicemente un raggruppamento di più tabelle che hanno un tema comune (ad esempio, le tabelle relativa alla "gestione dei clienti", quelle per "gestire i progetti" ecc.). All'interno di un'applicazione ci saranno quindi una o più tabelle.

Nelle tabelle ogni colonna (detta anche "campo") corrisponde ad una singola specifica informazione (ad esempio: Nome, Indirizzo, Data, Costo ecc.), mentre ogni riga corrisponde ad un insieme di informazioni relative ad uno stesso elemento (detto anche "record").

La struttura delle tabelle può essere modificata a piacimento: si possono aggiungere, modificare e cancellare tutte le colonne che si vogliono. Per ogni colonna è possibile decidere quale informazione sarà contenuta: Testo, Data, Orario, File, Immagine, Menu di scelta a tendina, Valuta, Numero, Riferimento ad altre tabelle, Calcolo ecc.
Una voltra definita la struttura della tabella, sarà possibile inserire i nostri dati sotto forma di righe, o meglio di record.

Ogni voce del menu superiore (quello con i tasti verdi) corrisponde ad una tabella, ma ad ogni tabella possono corrispondere più viste. L'elenco delle viste di ogni tabella è visualizzato nel menu laterale sinistro.

Una vista ci permette di "vedere" i nostri dati in modo diverso rispetto a come sono stati inseriti: ad esempio possiamo creare una vista per visualizzare solo i dati che corrispondono ad un criterio specifico di filtro (ad esempio, che hanno un campo "Data" in un certo intervallo). Oppure possiamo utilizzare una vista per eseguire raggruppamenti e conteggi di valori numerici. E' questo uno dei vantaggi dei database: i dati possono essere filtrati, aggregati, ordinati, conteggiati, rappresentati in grafici ecc. Tutto questo è possibile, per l'appunto, tramite le viste.

Oltre alle viste "di insieme", è possibile anche selezionare un singolo record e visualizzarne i dettagli, sotto forma di "scheda" completa di tutti i dati.


Tale visualizzazione è anche quella che ci permette di inserire e/o modificare i dati e viene denominata "vista di dettaglio". Di questa vista, per ogni tabella, è possibile modificare il layout, disponendo i campi secondo l'ordine preferito, in colonne diverse e raggruppandoli in sezioni.

Inoltre è possibile aggiungere in questa scheda delle ulteriori viste che fanno riferimento ad altre tabelle collegate al record selezionato (esempio: scheda di un "Cliente" e tutte le "Azioni commeciali" eseguite verso quel cliente, o anche tutti i "Problemi" del cliente, ecc.). E' quella che viene chiamata visualizzazione master-detail. Vedremo a breve come ottenere questo risultato.

Creare o modificare le applicazioni

Abbiamo già accennato al fatto che un'applicazione è un raggruppamento logico di tabelle, utile per organizzare al meglio i nostri dati. Per creare e modificare le applicazioni occorre entrare nel Pannello di configurazione e scegliere l'opzione "Crea o Modifica le Applicazioni". Comparirà l'elenco delle applicazioni presenti. La modifica delle applicazioni permette di scegliere un nome, una descrizione e di caricare un logo personalizzato, che sarà automaticamente aggiunto a tutte le stampe delle tabelle associate a questa applicazione. Se occorre, le applicazioni possono essere disabilitate, in modo da disattivare l'accesso a tutte le tabelle associate.


La colonna di sinistra permette di modificare la disposizione delle applicazioni, di accedere alla modifica delle tabelle associate e di eventualmente eliminare un'applicazione e tutti i dati collegati (tabelle, viste, campi e record). Se si clicca sulla icona di modifica si selezionerà l'applicazione e si accederà alla gestione delle tabelle di questa applicazione.
Una volta completate le modifiche alle applicazioni occorre premere il tasto "Salva le modifiche alle Applicazioni".
Per creare una nuova applicazione occorre utilizzare la riga in fondo all'elenco e inserire i dati necessari: appena si esegue il salvataggio, il sistema ci proporrà la maschera per creare una nuova tabella.

Quando si seleziona una applicazione le tabelle disponibili saranno quelle associate all'applicazione, sia per il normale uso di gestione dei dati che per la modalità di modifica delle configurazioni.

Creare e modificare le tabelle

Abbiamo già esaminato la possibilità di creare automaticamente una tabella tramite il "Mago delle Applicazioni". Questo non è l'unico modo: è possibile creare una tabella manualmente, specificando i campi che ci occorrono.

Per creare una nuova tabella possiamo scegliere se aggiungerla ad un'applicazione esistente, oppure se creare una tabella in una nuova applicazione.

Il primo passaggio è quello di entrare nel Pannello di configurazione (tramite il tasto "Modifica il sistema") se non lo abbiamo già fatto. Occorre poi scegliere la voce "Crea o Modifica le Applicazioni".
Scegliamo ora l'applicazione nella quale creare la tabella, oppure creiamo una nuova applicazione.

In alternativa è anche possibile selezionare direttamente l'opzione "Crea una nuova Tabella" (indicata a volte anche come "Crea o Modifica le Tabelle", se abbiamo già selezionato un'applicazione), dal pannello di controllo principale.

Se siamo già all'interno di un'applicazione occorre premere il tasto rosso "+(crea una nuova Tabella)".

Qualunque sia stato il nostro percorso, arrivati a questo punto apparirà una schermata per l'inserimento del "nome" della tabella, di una breve descrizione (facoltativa) e la scelta dell'applicazione a cui associarla: di default sarà l'applicazione correntemente selezionata.

E' anche possibile specificare che la tabella dovrà essere utilizzabile da tutte le applicazioni (tabella ad uso generico). Inoltre è possibile specificare se questa tabella dovrà essere visibile come voce di menu oppure "nascosta" e se vogliamo mostrare anche informazioni aggiuntive relative ai "campi di sistema" (data di creazione di un record, data di ultima modifica, utente che ha eseguito la creazione/modifica).

Completato questo passaggio sarà possibile scegliere se importare dei dati (e creare in automatico i campi che occorrono) oppure inserire i campi manualmente.


Se scegliamo di importare i dati, la procedura sarà simile a quella del "Mago delle applicazioni".

Per aggiungere manualmente un campo basta fare click sul link "Aggiungi" della sezione "Elenco campi": apparirà una schermata per specificare le caratteristiche del campo, tra cui il nome, la descrizione, la tipologia e altre opzioni specifiche.


Analizziamo nel dettaglio ognuna delle opzioni:

Visibile nei moduli?: si intende il fatto che questo campo sarà normalmente presente nei moduli di inserimento dati. Indipendentemente da questa scelta, sarà eventualmente presente nelle viste e nelle stampe (se opportunamente aggiunto).

Attivo?: questo campo è utilizzabile dagli utenti?

Ricercabile?: i dati di questo campo saranno inclusi quando si eseguono delle ricerche? In base al tipo di campo sarà anche creato un opportuno elemento di filtro (ad esempio, per le date apparirà un calendario di scelta intervallo, per i menu a tendina apparirà un elenco dei possibili valori ecc.)

Seconda colonna?: questo campo sarà visualizzato sulla stessa riga del campo precedente, su una aggiuntiva colonna, nelle maschere di inserimento e visualizzazione dati di dettaglio?

Mostra totali?: se il campo contiene dei valori numerici possiamo specificare se visualizzare i totali (somme) in fondo alla vista tabellare.

Obbligatorio?: possiamo decidere se l'utente deve obbligatoriamente inserire un valore, oppure no.

Unico?: possiamo decidere se il valore di questo campo deve essere sempre diverso da quelli già presenti, oppure no. Nel caso in cui il valore sia vuoto l'inserimento del record sarà permesso, a meno che sia specificato anche come campo obbligatorio. Questo vincolo non ha effetto sui campi di tipo "calcolato" e "derivato", e in caso di modifica multipla o importazione dati.

Escludi da invio Email?: se questo flag è impostato, il corrispondente campo sarà escluso da tutti i menu a tendina relativi all'invio di email (possibili destinatari, link nelle email, immagini nelle email, campi dinamici nelle email).

Escludi da sincronia Email?: se questo flag è impostato, il corrispondente campo non sarà utilizzato per sincronizzare le email inviate/ricevute dagli utenti del sistema con i propri account IMAP. NOTA: solo i campi di tipo "URL/Email" sono eventualmente inclusi nella sincronia, in riferimento alla "Tabella Soggetti Email" e alle tabelle ad essa relazionate.

Escludi da Email massive?: se questo flag è impostato, il corrispondente campo sarà escluso dai destinatari delle email massive (ovvero le email inviate contemporaneamente ad una lista di destinatari presi dalla "Tabella Soggetti Email" e tabelle relazionate). NOTA: solo i campi di tipo "URL/Email" sono eventualmente inclusi nella lista dei destinatari.

Valore default su aggiunta?: questa opzione permette di scegliere se, in caso il campo sia di tipo "sola lettura" (per il profilo utente correntemente collegato), se debba essere assegnato comunque un valore automatico di default, diverso in base alla tipologia di campo ("data", "utente", "profilo", "menu a tendina"). In caso di "data", sarà inserita automaticamente la data corrente, in caso di "utente" sarà inserito l'utente corrente, in caso di "profilo" sarà inserito il profilo dell'utente corrente, in caso di "menu a tendina" sarà inserito il primo dei valori disponibili nel menu.

Valore default su modifica?: stesso meccanismo dell'opzione precedente, ma sulla modifica dei record.

Oltre a questi ultimi due meccanismi di valorizzazione, se lo desideriamo è possibile specificare un Valore di default per il campo a prescindere dalle condizioni precedenti, ad esempio la data corrente per i campi "Data" (o una qualunque altra data a scelta) o un valore a scelta tra quelli presenti nei "Menu a tendina", come anche uno specifico orario per i campi "Orario" o il fatto che un campo di tipo "Check" debba essere attivato di default. Si procede nel seguente modo:

campi Data: specificare la data per esteso (ad esempio 25/07/2012) oppure il valore "oggi" per la data corrente;

campi Menu a tendina: specificare uno dei valori del menu a tendina (assicurarsi che sia scritto in modo corretto);

campi Orario: scrivere per esteso l'orario di default desiderato (ad esempio 08:00, 12:45, 01:30): l'orario deve essere tra quelli presenti nel menu di scelta (multipli di 15 minuti);

campi Check: scrivere "si" per avere il check attivo di default (lasciare spazio vuoto in caso contrario);

campi Numerico e Valuta: specificare il valore numerico con gli eventuali decimali (esempio: 26,5);

campi Testo e Indirizzo web: specificare il testo desiderato;

Tutti gli altri campi non hanno la possibilità di avere un valore di default specifico.


Usa per notifica su aggiunta?: quando questa opzione è selezionata il campo corrente sarà utilizzato per spedire automaticamente una email di notifica in caso di aggiunta di nuovo record. Se si tratta di un testo sarà incluso nel corpo della email, mentre se contiene un indirizzo email singolo valido (es.: mario.rossi@lamiamail.com) sarà utilizzato come destinatario della email. La notifica funziona solo su aggiunta di record singolo.
Possono essere utilizzate tutte le tipologie di campo, sia per il testo che per gli indirizzi email. Se si utilizza un campo di tipo "Utente" sarà prelevata la corrispondente email memorizzata nel pannello di gestione utenti; se si utilizza un campo di tipo "Profilo" saranno utilizzate tutte le email degli utenti appartenenti al profilo selezionato (per i campi "Utente" e "Profilo" calcolati o derivati valgono le stesse regole). Nel caso la email sia quella registrata sull'account utente (oppure in caso di campo "Utente"), nella email sarà inserito un link per accedere direttamente al record, sempre che si sia già autenticati nel sistema o si sia deciso di impostare il flag "Ricordami" nella maschera di login a Gabama. Possono essere specificati un massimo di destinatari per ogni notifica pari al numero di utenti presenti nel vostro account.
Se si vuole notificare sempre uno specifico indirizzo email (ad esempio l'amministratore di sistema) oppure eseguire notifiche solo in determinate condizioni, è possibile utilizzare i campi calcolati per farsi restituire dal calcolo un valore corrispondente ad un indirizzo email su condizione basata sul valore di altri campi.

Usa per notifica su modifica?: come il precedente settaggio, ma sarà usato su modifica del record. La notifica funziona solo su modifica di record singolo.

Usa per notifica programmata?: Se il flag è impostato questo campo sarà utilizzato nelle email di notifica programmate ad una certa data (vedi flag seguente). Per determinare il testo e i destinatari delle email valgono gli stessi criteri già menzionati per le altre tipologie di notifica (aggiunta/modifica). Questa opzione è utile per ricevere "promemoria" a distanza di tempo rispetto a quando è stato inserito/modificato un record (ad esempio per ricordare una scadenza o un compleanno). Il controllo di eventuali notifiche da spedire sarà eseguito una volta al giorno. Il sistema invia un numero massimo di notifiche al giorno pari al numero di utenti del vostro account moltiplicato 10.

Data notifica programmata?: Se il flag è impostato questo campo sarà utilizzato per calcolare la data di invio della email di notifica programmata (deve essere un valore di tipo "data" e può anche essere calcolato o derivato, ma non derivato dinamico). La data contenuta in questo campo corrisponderà alla data di invio della email di notifica, senza tenere conto di eventuali orari. Possono essere utilizzati più campi per specificare più date di invio.

Prestare particolare cura alla definizione dei criteri di notifica, al fine di evitare invii accidentali o ad un numero eccessivo di destinatari (soprattutto per le notifiche "programmate").

ATTENZIONE: non utilizzare il sistema di notifica per inviare email ad utenti esterni (Clienti, Prospect ecc.) o a persone che non vi hanno espressamente autorizzato! In caso di abuso il vostro account potrebbe essere sospeso.

Le opzioni di Formattazione Testo permettono (per i campi che contengono testo inserito dall'utente) di applicare delle operazioni di formattazione automatica al momento del salvataggio dei dati.


Altre opzioni disponibili riguardano vincoli sulla quantità di dati inseriti: ad esempio possiamo specificare che un campo di tipo testo deve avere obbligatoriamente un minimo e/o un massimo di caratteri presenti in fase di inserimento/modifica dei record.

Possiamo anche specificare se desideriamo "troncare" i dati di questo campo, nella vista tabellare, nel caso in cui superino una certa quantità: questa opzione è utile per evitare che campi molto lunghi o tabelle con molti campi, creino delle viste molto "ampie" in orizzontale. I dati saranno comunque visibili per intero nella vista di "dettaglio" di ogni record.

Infine è possibile definire un colore alternativo con cui visualizzare il campo nelle maschere di dettaglio.

Queste appena descritte sono opzioni comuni a tutti i campi, mentre alcune tipologie di campi hanno delle opzioni aggiuntive:

Campo "Menu a tendina": questo campo permette di mostrare un menu con un elenco di valori predefiniti e può essere utilizzato in tutti quei casi in cui la scelta dei valori possibili deve essere limitata ad uno specifico insieme. Un esempio di valori potrebbe essere l'elenco delle regioni italiane, oppure una valutazione ("bassa", "media", "alta") ecc. Se si seleziona questa tipologia di campo comparirà una opzione aggiuntiva per specificare l'elenco dei valori possibili, da inserire uno per riga.

Campo "Menu riferimento": questo campo è simile al precedente, ma permette di generare l'elenco dei valori prendendoli da un'altra tabella, creando quindi anche un legame tra le due tabelle, cosa che potremo sfruttare per creare una "relazione". Per definire come dovranno essere generati i valori del menu si dovrà scegliere una delle altre tabelle presenti nel database e una "etichetta" da mostrare nel menu, a scelta tra una delle viste della tabella (che servirà per definire quali campi usare per generare i singoli elementi del menu e per applicare eventuali filtri) oppure direttamente uno dei campi della tabella. Sarà anche possibile decidere se modificare il campo identificativo dei record del menu: normalmente il campo identificativo è l'ID interno usato dal sistema e non occorre modificarlo, a meno che si voglia fare un uso particolare dei riferimenti tra record (sarà illustrato in seguito). Infine è possibile scegliere se questo campo deve essere filtrato in base ai valori presenti su un altro campo (come quando, ad esempio, selezioniamo le "regioni" con un menu e nel successivo menu vogliamo visualizzare solo l'elenco delle città di una specifica regione): in tal caso occorre indicare qual è il campo che attiverà il filtro dei valori (filtro a "cascata"). Per fare in modo che il filtro abbia effetto però non è sufficiente specificare questo parametro: occorre anche che la vista che abbiamo scelto per generare l'elenco dei valori abbia come "filtro" proprio il campo in questione e che il campo che fa da filtro si trovi in posizione precedente a quello da filtrare (in termini di layout dei campi).

"Campo Calcolato": con questo campo possiamo eseguire calcoli tra i valori dei record. Ad esempio potremmo creare il campo calcolato "totale", che sarà definito come la moltiplicazione tra "quantità" e "prezzo". Possiamo anche creare campi calcolati che generano un risultato testuale o altre tipologie di dato (ad esempio "codice a barre"). Le formule possibili possono essere anche molto complesse: in seguito analizzeremo nel dettaglio le possibilità offerte da questo campo.

"Campo Derivato": questo campo permette di "copiare" dei valori di campi presenti in altre tabelle, basandosi sul valore presente in un campo di tipo "Menu riferimento". Ad esempio se abbiamo un campo "Cliente" (di tipo "menu riferimento") all'interno di una tabella "Ordinativo", e vogliamo che selezionando il nome del cliente siano copiati anche i valori di "indirizzo", "P. IVA" (o magari anche una immagine), possiamo utilizzare questo campo. Dovremo scegliere il "campo riferimento" per la selezione del record (ovvero il "campo ricerca") e quindi il campo che vogliamo "copiare" tra quelli della tabella referenziata. Si tratterà di una copia effettiva del valore corrente presente nel record referenziato, ma volendo possiamo fare in modo che la copia sia aggiornata dinamicamente, in base all'uso che faremo dei valori. Nella maggior parte dei casi conviene eseguire la copia del valore corrente e quindi non usare l'aggiornamento dinamico.

Campo "Gruppo": questo non è un vero campo ma solo un elemento per raggruppare i campi di una maschera di dettaglio sotto un insieme logico. Possiamo scegliere se il gruppo di campi dovrà essere normalmente visibile oppure nascosto (gruppo "aperto" o "chiuso") ed eventualmente assegnare un colore ai campi di questo gruppo. I campi che rientreranno nel gruppo saranno tutti quelli che si trovano "al di sotto" di questo campo speciale, fino al successivo campo gruppo. Volendo possiamo basare l'apertura/chiusura del gruppo sul valore restituito da un campo calcolato: se il valore restituito dal calcolo è "vuoto" ("") il campo sarà chiuso, altrimenti sarà aperto.

Campo "Totalizzatore": se ci occorre eseguire la somma (oppure la media, trovare il massimo o il minimo) dei valori presenti in una colonna dei record di una tabella di dettaglio, possiamo utilizzare questo campo. Occorre specificare che tipo di totalizzatore vogliamo, quale tra le tabelle di dettaglio analizzare, qual è il campo "master" su tale tabella (ovvero il campo che fa da riferimento al record corrente), e infine quale dei campi "numerici" (ma anche "date") "totalizzare". Se esistono relazioni multiple con la stessa tabella è anche possibile scegliere una vista alternativa a quella di "default", per specificare con precisione l'eventuale filtro dati da applicare al totalizzare.

Campo "Numeratore periodico": è un campo che permette di numerare automaticamente in modo progressivo documenti che hanno una numerazione periodica (ovvero che si azzera periodicamente), come ad esempio fatture, scontrini e altri documenti contabili. E' possibile scegliere la periodicità (annuale, mensile, giornaliera) dell'azzeramento e il valore iniziale.

"Campo Utente": con questo campo è possibile creare un menu a tendina con l'elenco degli utenti del sistema. E' possibile applicare dei filtri in modo da visualizzare solo alcuni degli utenti presenti. I filtri possono essere sul "profilo" di appartenenza (uno specifico profilo, oppure il profilo dell'utente correntemente collegato) oppure è possibile recuperare l'elenco degli utenti da un'altra Tabella (e relativa "Vista"); in questo caso nella tabella, tra gli altri dati, devono esserci a loro volta dei campi di tipo "Utente". Poter filtrare per "Tabella/Vista" è utile nel caso si vogliano creare degli elenchi di utenti applicando dei filtri più sofisticati rispetto al semplice filtro per "profilo". E' possibile anche applicare contemporaneamente entrambe le tipologie di filtro (per profilo e per tabella/vista)

Modificare le viste

Abbiamo già parlato del fatto che i dati inseriti possono essere visualizzati in vari modi. Normalmente ci basta una semplice visione tabellare, ma possiamo anche creare viste più sofisticate. Intanto è possibile per ogni vista scegliere quali campi visualizzare tra quelli presenti nella corrispondente tabella: questo perchè non è necessario visualizzare tutti i campi, rendendo confusa la rappresentazione delle tabelle, ma basta scegliere quelli che per noi sono più importanti. Su una vista potremmo mettere solo i campi di un certo tipo e lasciare altri campi su un'altra vista. Una vista potrebbe contenere solo record filtrati in base ad un criterio. Un'altra vista potrebbe raggruppare i dati in base ad uno dei campi e mostrare le somme di valori.
L'uso delle viste ci permette di sfruttare i nostri dati in modo da estrarre informazioni che un semplice elenco tabellare disordinato non potrebbe mai darci.
Per configurare le viste c'è una apposita sezione del menu di modifica delle tabelle, subito sotto quella per la gestione dei campi.


Scegliamo una delle viste presenti (automaticamente vengono create 2 viste quando si crea una tabella) e analizziamone la composizione.


La prima impostazione che è possibile eseguire è il tipo di vista, a scelta tra: Tabella semplice, Tabella raggruppata, Calendario e quattro diverse tipologie di grafici.
La vista più utilizzata è quella "semplice", che ci permette comunque di definire varie modalità di visualizzazione. Oltre al nome della vista è possibile indicare una breve descrizione (sarà visualizzata anche come testo "informativo", in un apposito spazio nella testata della vista). Seguono un elenco di opzioni:

Visualizza nel menu?: è una vista che sarà tra quelle elencate nel menu laterale a sinistra?

Vista principale?: è la vista principale che sarà selezionata automaticamente quando si sceglie una tabella dal menu?

Aggiungi elementi?: sarà visualizzato il pulsante per aggiungere nuovi record?

Modifica elementi?: sarà visualizzata l'icona per modificare i record?

Visualizza elementi?: sarà visualizzata l'icona per visualizzare il dettaglio dei record?

Cancella elementi?: sarà visualizzata l'icona per eliminare i record?

Mostra "Duplica con dettaglio"?: sarà visualizzato il tasto che permette di duplicare un record e i suoi record di dettaglio?

Nascondi "Duplica"?: nascondi il tasto che permette di duplicare i record?

Ripeti Testata Campi?: ripete la testata con i nomi dei campi anche in fondo alla tabella.

Impedisci modifica se impegnato?: impedisce che un record sia modificato se già in modifica da parte di un altro utente. Deve essere abilitato anche il "Controllo concorrenza accessi" sul pannello delle Impostazioni Generali.

Vista per il cestino?: sarà questa la vista che mostra i record presenti nel "cestino"?

Solo per le stampe?: questa vista sarà visibile solo nei modelli di stampa?

Filtri ricerca visibili subito?: il menu dei filtri di ricerca deve essere "aperto" da subito?

Mostra dati solo dopo ricerca?: i dati della tabella/vista devono essere visibili solo dopo aver eseguito una ricerca o aver applicato dei filtri?

Ricerca esatta?: se desideriamo che la funzione di ricerca su questa vista restituisca risultati solo per "frase esatta" (ovvero non per parole parziali o frasi solo "simili" a quella digitata) occorre spuntare questo check. Questa funzione è utile quando vogliamo eseguire ricerche su codici oppure vogliamo mostrare i risultati solo se l'utente inserisce l'esatta parola chiave richiesta (codice prodotto, username ecc.).

Mostra quantità dei record?: questa opzione ci permette di avere un'anteprima del numero di record presenti nella vista, accanto al nome che compare nel menu a sinistra.

Resta su dettaglio?: questa opzione permette di restare sul record appena inserito/modificato anche se proveniamo da una vista di dettaglio "master" (normalmente torna al record master).

Stampa Multipla Attiva?: il tasto per la stampa Multipla dei record della vista deve essere attivato?

Casella "Cerca" e "Filtri": questa opzione permette di scegliere se visualizzare sia la casella "Cerca" che le singole caselle dei "Filtri", o a scelta, una o l'altra opzione. E' valida solo per le viste di tipo tabellare.

Stampa PDF Nascosta?: il tasto per la stampa in PDF della vista deve essere nascosto?

Stampa Excel Nascosta?: il tasto per la stampa in Excel della vista deve essere nascosto?

Mostra Excel Master-Detail?: il tasto per il download in Excel della vista (compresi i record di dettaglio) deve essere mostrato?


Una volta definite queste opzioni possiamo passare a scegliere i campi da includere nella vista, tra quelli elencati che compongono la tabella. Volendo è anche possibile cliccare su un campo per modificarlo direttamente da qui.
Oltre ai campi creati ci sono due campi aggiuntivi "di sistema" relativi alle date di creazione e modifica dei record.

Se sono presenti delle relazioni con altre tabelle sarà visualizzato uno "specchietto" tramite il quale ci sarà la possibilità di "nascondere" la visualizzazione "master-detail" di alcune delle relazioni, quando l'utente accede alla maschera di dettaglio del record master a partire da questa vista specifica.

Se sono presenti dei modelli di stampe personalizzate sarà visualizzato uno "specchietto" tramite il quale ci sarà la possibilità di "nascondere" alcuni dei tasti di stampa per questa vista specifica.

La sezione seguente permette di specificare i filtri che saranno applicati a questa vista: si tratta di scegliere tra i campi della tabella e di impostare delle "condizioni" di filtro. Ad esempio possiamo scegliere il campo "Stato" della tabella "Clienti" e impostare la condizione "= (uguale a)" e scegliere il valore tra quelli del menu. Altre condizioni potrebbero essere sulle date (intervallo di date), sui testi ecc. Ogni condizione può essere in aggiunta o in alternativa a quella precedente. La cosa migliore è quella di fare degli "esperimenti" e verificare cosa succede nella vista risultante. Attenzione però: un errore tipico è quello di applicare "troppi" filtri e ritrovarsi con una vista che non visualizza alcun record! Ovviamente i vostri dati sono ancora tutti presenti, basta rimuovere i filtri "di troppo".

NOTA: nel caso in cui un campo utilizzato nelle condizioni sia di tipo Calcolato, questo dovrà essere obbligatoriamente presente tra i campi scelti per la visualizzazione, altrimenti la condizione di filtro non avrà effetto.

L'operatore "AND" permette di specificare che la condizione precedente deve essere in aggiunta a quella successiva ("una e l'altra"), mentre l'operatore "OR" permette di definire che la condizione precedente deve essere in alternativa a quella successiva (o una o l'altra, ma anche entrambe).

Le opzioni successive ci permettono di scegliere se "raggruppare" i dati e come ordinare i dati. Il raggruppamento è una operazione che permette di eseguire aggregazioni di valori: affinchè abbia senso occorre creare dei campi che eseguano delle operazioni matematiche sui valori/record, ovvero dei "Campi Calcolati". Il più semplice dei campi calcolati è quello che esegue il "conteggio" dei record. Se lo creiamo e lo aggiungiamo ad una vista "raggruppata", il valore restituito dal conteggio sarà quello dei record presenti in ogni gruppo.

NOTA: il campo calcolato di tipo conteggio (o somma) non deve essere presente nelle viste "normali", altrimenti sarà generato automaticamente un indesiderato raggruppamento di tutti i valori in un unico record.

Analizziamo ora le altre tipologie di vista disponibili.

Vista calendario
Questa vista permette di creare un calendario basato sui dati di una tabella. Occorre specificare il campo che farà da data, quello che farà da orario e quello che mostrerà un testo rappresentativo del record sul calendario.

Tabella raggruppata
Questa vista è una speciale visualizzazione dei record che permette di ordinare per gruppi di valori e visualizzare in testa ad ogni gruppo il valore per il quale si sta raggruppando. Non permette di fare conteggi ma è solo una diversa rappresentazione estetica della normale vista tabellare semplice. I parametri sono infatti gli stessi della tabella semplice: in aggiunta occorre obbligatoriamente specificare un campo di raggruppamento. Da notare che il campo scelto per il raggruppamento dovrà obbligatoriamente essere presente tra quelli visualizzati.

Grafici
Esistono 4 diverse tipologie di rappresentazione "grafica" dei dati: a torta, a barre verticali, a barre orizzontali, a linee.


Per impostare la visualizzazione di un grafico occorre scegliere il campo da "raggruppare" e il campo da "rappresentare": il primo campo sarà quello secondo il quale saranno eseguiti i conteggi. Il secondo sarà quello che contiene la "formula" che calcola i valori da rappresentare.


Nell'esempio in figura è stato configurato un campo "Stato" per il raggruppamento e un campo "Contatore" per il conteggio degli "stati" dei record. In "Campi da visualizzare" bisognerà scegliere il campo "Contatore", mentre dovrà essere indicato come "Campo etichetta del grafico" il campo "Stato". E' anche possibile definire la dimensione dell'immagine del grafico.

Tabelle relazionate

Quando si creano dei campi di tipo "menu riferimento" si sta creando anche una relazione "master-detail" tra due tabelle. Quella nella quale si trova il campo "menu riferimento" sarà la tabella di dettaglio e quella a cui si fa riferimento sarà la tabella master. Per concretizzare questa relazione tra le due tabelle, e per rappresentare visivamente nella vista di dettaglio le tabelle correlate, occorre definire la relazione nella sezione "Tabelle relazionate" della pagina di configurazione delle tabelle. Sarà necessario specificare la tabella per la quale vogliamo creare la relazione, la vista da utilizzare per mostrare i dati e il campo che sulla tabella di dettaglio è un campo di tipo "menu riferimento". Inoltre sarà possibile scegliere se vogliamo cancellare "a cascata" tutti i record di dettaglio, quando si cancella il record padre.

Quindi per poter stabilire una relazione tra due tabelle occorre prima creare un campo "menu riferimento" su una delle due (quella "detail") e poi configurare la relazione in questa sezione del pannello di controllo, relativa alla tabella "master".

Modelli di stampa

Oltre alle stampe di tipo tabellare create automaticamente dal sistema (in pdf e in excel) che possono essere generate dalle viste "tabellari", è possibile creare dei modelli di stampa personalizzati per le visualizzazioni di dettaglio dei record: ciò consente di realizzare una grande varietà di moduli e schede. Ad esempio possiamo creare un modello per la stampa di fatture, partendo dai dati presenti in una tabella "master" e in quella relazionata di dettaglio. Per creare un modello di stampa si utilizza il programma Microsoft® "Word" (oppure in alternativa, OpenOffice® "Writer"). Per prima cosa occorre scaricare sul proprio PC il file di base (il "Modello neutro") che conterrà un template molto semplice del documento. In questo file ci saranno dei "TAG" che rappresentano i campi della tabella e le eventuali tabelle di dettaglio. Si riconoscono perchè sono scritti in questo modo: %%NOME_CAMPO%%

Questi particolari tag possono essere posizionati come desideriamo, in modo da creare il layout più opportuno per i nostri scopi. E' possibile anche aggiungere altri elementi grafici, come il vostro logo o del testo aggiuntivo a scelta.

Una volta completato il modello di stampa (che deve essere salvato in formato RTF, come il modello base) occorre trasferirlo su Gabama, tramite l'apposita sezione della pagina di configurazione delle tabelle. Il nome scelto sarà quello visualizzato sul tasto di stampa.
E' possibile specificare se questo tasto dovrà essere visibile sempre oppure solo in alcune viste: tale funzione è utile se vogliamo mostrare il tasto di stampa solo ad alcuni utenti o se la stampa ha significato solo per alcuni record.
Possiamo anche decidere se generare file di tipo RTF o PDF oppure entrambi i formati (default).

Infine possiamo scegliere se abilitare un ulteriore tasto aggiuntivo per eseguire l'invio via email del file generato dalla stampa (come allegato): questa opzione ci evita di dover scaricare il file e inserirlo manualmente in un client di posta elettronica. Il sistema compilerà automaticamente i campi del mittente (sarà usata l'email dell'utente attualmente collegato), del destinatario (sarà possibile scegliere da un elenco di email generato basandosi sui dati presenti nel record), dell'oggetto (nome del tasto di stampa, modificabile a piacere) e sarà possibile aggiungere un messaggio ed eseguire l'invio della email (con allegato il file di stampa) direttamente da Gabama. Una ulteriore copia della email sarà recapitata all'indirizzo dell'utente che esegue l'invio (mittente). Sarà possibile specificare anche se l'oggetto della email deve essere selezionato basandosi su un campo della tabella e se aggiornare un campo sul record dopo l'invio della email (scelto tra campi di tipo "Check" e campi di tipo "Data")

Completata la scelta delle opzioni e selezionato il file RTF, occorre premere il tasto "Salva le modifiche ai modelli", per eseguirne l'upload e quindi il salvataggio sul sistema.



Gestione Utenti

Oltre all'utente amministratore possono essere creati (se il vostro piano di abbonamento lo consente) anche ulteriori utilizzatori del sistema, specificando i permessi di accesso tramite la definizione di "profili". Nella scheda di gestione degli utenti è possibile definirne le credenziali di accesso (utente e password) e ulteriori dati anagrafici facoltativi. Tutti gli utenti saranno in grado di modificare i propri dati personali, compresa la password di accesso, tramite il link nella barra in alto, contenente il proprio nome ("Modifica i tuoi dati personali"): da notare che questo link è attivo solo se non si è in modalità "Pannello di configurazione".
Nella colonna "Password" vengono visualizzati dei "pallini" che non corrispondono alla password reale, neanche come lunghezza: se si desidera modificare la password di un utente da pannello "Gestione Utenti" occorre cancellare tutti i "pallini" e scrivere la nuova password (visualizzata sempre sotto forma di "pallini").

Il tasto "Mostra Attività Utenti" permette di rilevare l'ultima data di creazione e/o modifica di un record da parte di ciascun utente, rispetto ai dati effettivamente presenti sul database.



E' anche possibile creare utenti per l'accesso "anonimo" al sistema, ad esempio per permettere la sola visualizzazione di dati agli utenti del proprio sito web. Per creare un utente "anonimo" occorre lasciare il campo "password" in bianco. Un utente anonimo potrà accedere al sistema tramite un link appositamente formattato:

https://server30.gabama.com/?d=[DOMINIO]&u=[NOMEUTENTE]

(esempio: https://server30.gabama.com/?d=dom1234&u=utenteanonimo)

Gli utenti anonimi visualizzeranno una versione del sistema con interfaccia "ridotta", senza link al sito Gabama e senza possibilità di modificare i dati personali o eseguire il "logout":



Non è sufficiente creare un utente affinche questo sia "operativo": occorre associare l'utente ad un profilo di accesso, che dovremo aver preventivamente creato allo scopo.

Profili di accesso

I profili di accesso permettono di definire delle regole di utilizzo del sistema Gabama, specificando le applicazioni e le tabelle alle quali si può accedere e le modalità di accesso (lettura, scrittura, modifica, cancellazione). Inoltre è possibile specificare restrizioni sulle viste che possiamo utilizzare e sui campi permessi. Definendo un profilo possiamo quindi poi associare più utenti alla stessa modalità di accesso al sistema. Ad esempio potremmo definire un profilo di accesso per tutti gli utenti del reparto "Amministrazione" che devono vedere solo la sezione del sistema relativa agli aspetti contabili, oppure un profilo "Magazzino" che vede solo una specifica applicazione a lui dedicata ecc.

Per gestire i profili selezioniamo l'opzione dal Pannello di controllo principale per la modifica dei profili di accesso. Il primo passo è quello di definire il nome del profilo e di inserire una eventuale descrizione. Salviamo il profilo e quindi possiamo definire le regole di cui parlavamo sopra, facendo click sull'icona di modifica.

Comparirà una maschera di dettaglio di gestione del profilo corrente.


Per ogni tabella è possibile specificare se il profilo può:

1) Visualizzare ("Permetti vista"): tutti gli elementi o solo i propri elementi.
2) Modificare ("Permetti modifica"): tutti gli elementi, solo i propri elementi o nessun elemento.
3) Aggiungere ("Permetti aggiunta"): tutti gli elementi, solo i propri elementi o nessun elemento.
4) Cancellare ("Permetti cancella"): tutti gli elementi, solo i propri elementi o nessun elemento.

Inoltre è possibile definire, per ogni gruppo di tabelle relative ad una stessa applicazione, qual è la tabella "Principale" (ovvero quella visualizzata di default quando l'utente accede all'applicazione) e anche se una tabella deve essere di tipo "Nascosta" (ovvero, non visibile nei menu, ma comunque utilizzabile in relazioni "master-detail").

Per "propri elementi" si intendono i record aggiunti dall'utente associato al profilo.

Completata la configurazione dei permessi di una tabella occorre premere il tasto "Salva le modifiche". Se desideriamo definire un accesso più specifico alla tabella possiamo entrare nel dettaglio di ogni tabella (facendo click sulla solita icona di modifica sulla sinistra), per scegliere quali delle viste presenti saranno visibili al profilo (di default, tutte).


E' questa una possibilità che ci permette grande flessibilità di impiego, perchè abbinando solo specifiche viste possiamo fare in modo che il profilo veda solo i record filtrati in un certo modo. Inoltre possiamo anche scegliere di rendere in "sola lettura" alcuni campi o di nasconderli completamente (ad esempio dati che devono restare riservati o dati che saranno modificati da altri profili).

Sia sulle tabelle che sulle viste è possibile impostare il flag "...di default": serve semplicemente a stabilire che normalmente la tabella/vista sarà quella selezionata quando si entra nell'applicazione. Ovviamente può esserci una sola tabella "di default" per ogni applicazione, così come una sola vista di default per ogni tabella.

La modifica dei profili permette di creare "meccanismi" secondo i quali si possono impostare flussi di lavoro, anche molto articolati. Un semplice esempio: un profilo "dipendente" deve compilare una richiesta "ferie", che dovrà poi essere approvata da un profilo "responsabile reparto"; faremo in modo che il dipendente possa vedere solo le richieste da lui inserite e che il responsabile possa invece vederle tutte. Inoltre solo il responsabile potrà approvare le ferie (o negarle), perchè solo lui avrà accesso al campo "approvazione ferie". Il dipendente vedrà infine quali sono le ferie approvate e quali quelle negate.

Impostazioni generali

Nelle impostazioni generali è possibile specificare tutti quei parametri che consentono di definire caratteristiche generiche del sistema, come la dimensione delle immagini in upload o il troncamento dei campi di tipo "testo ampio". Inoltre è possibile visualizzare il numero di record presenti e gestire i backup e l'esportazione dei dati.


Backup

Ogni volta che si esegue una operazione considerata potenzialmente dannosa, il sistema genera automaticamente un backup dei dati e della configurazione. Dal menu "Impostazioni generali" sarà possibile ripristinare e/o creare nuovi backup.

Esportazione dati

E' possibile eseguire il download di un file di backup in formato script MySQL di tutti i dati e della struttura di tutte le tabelle, in modo da replicare il contenuto del database Gabama su un vostro server. Saranno esportate le definizioni delle tabelle di tutte le applicazioni e per ogni tabella sarà presente la sequenza di "Insert" per popolare il database MySQL con tutti i dati. Nei dati sarà presente anche l'ID interno di Gabama, in modo da poter gestire anche le relazioni tra le tabelle. Il file script non è utilizzabile per importare i dati su Gabama.

Nel file di backup non sono presenti gli eventuali file allegati associati ai record, ma solo il loro riferimento identificativo: tramite questo riferimento è possibile eseguirne eventualmente il download con un opportuno script. Il riferimento contiene il nome del file codificato, così come memorizzato nel sistema: per eseguirne il download, il path completo è:

https://server30.gabama.com/users/[DOMINIO]/files/[NOME FILE CODIFICATO]


dove [DOMINIO] è il dominio dell'utente (ad esempio: dom1234) e [NOME FILE CODIFICATO] è il valore contenuto nel campo che fa riferimento al file (ad esempio: 4f0c51344298d6ae17f2-immagine_allegata.jpg).

Come fare per...

In questa sezione sono descritte alcune possibilità di impiego del sistema Gabama per risolvere specifiche necessità.

Sincronizzare le proprie email sul database

Questa è una funzione che permette di gestire i vostri account email (ad esempio Gmail, Libero, Tiscali ecc.) in modo da copiare le email inviate/ricevute, su una tabella del database, ed averle automaticamente "smistate" sui record di pertinenza (ad esempio: tutte le email che riguardano uno specifico Cliente saranno visualizzate nella sua scheda anagrafica, in modo da poter tracciare tutte le conversazioni in corso, indipendentemente da quale account di posta sia stato utilizzato).

Per ogni utente del sistema sarà possibile quindi impostare la configurazione per l'accesso al proprio account email personale/aziendale in modalità "IMAP" (stringa di collegamento al server, nome utente e password). Tale configurazione può essere fatta sulla pagina di gestione degli utenti. Ogni utente potrà inserire la propria password, associata all'account email (denominata "Imap Password"), dal pannello di gestione delle impostazioni personali, oppure potrà essere impostata dall'amministratore del sistema. La stringa di collegamento al server di posta in modalità IMAP è del tipo:

{imap.gmail.com:993/ssl/novalidate-cert}

Al fine di poter memorizzare le email e di associarle alla corretta scheda anagrafica sul database, è necessario configurare, nel pannello delle impostazioni generali, la "Tabella Soggetti Email" (che sarà la tabella contenente gli indirizzi email delle anagrafiche da considerare) e la "Tabella memorizzazione email" (che servirà a memorizzare e visualizzare le email scaricate). La prima tabella dovrà contenere almeno un campo di tipo "URL/Email", altrimenti non sarà possibile associare le email ai destinatari/mittenti. La seconda tabella sarà generata, nella sua struttura e composizione, automaticamente dal sistema: basterà scegliere l'opzione [CREA NUOVA TABELLA] e il sistema si preoccuperà di generare tutti i campi e le viste necessari. Il sistema controllerà periodicamente se ci sono nuove email, su tutti gli account configurati, in modo automatico (ogni 15 minuti).

Da notare che, al fine della associazione automatica, saranno considerati tutti gli indirizzi email della "Tabella Soggetti Email" e anche delle eventuali tabelle con le quali esiste una relazione (tabelle di dettaglio), a meno che non sia esplicitamente impostato sul campo della email che non debba essere utilizzata a tale scopo: invece le email presenti su tabelle non collegate non saranno comunque considerate. Eventuali indirizzi email duplicati saranno presi in considerazione una sola volta, con priorità sulla tabella principale ("Tabella Soggetti Email").

Il sistema gestisce la visualizzazione completa delle email, compresa la possibilità di visualizzare e scaricare gli eventuali allegati, che saranno quindi archiviati sul database.

Inviare una email "promozionale" a tutti i Clienti/Contatti

Questa funzione permette di inviare in modo "massivo" a tutti i propri contatti (o ad uno specifico sottoinsieme filtrato) delle email di tipo "promozionale" (dette anche campagne DEM o newsletter).

L'elenco dei record di indirizzi email ai quali è possibile inviare una email di questo tipo è quello contenuto nella "Tabella Soggetti Email" (già illustrata nel precedente paragrafo), che può essere configurata dal pannello delle impostazioni generali e che (come detto) dovrà contenere almeno un campo di tipo "URL/Email" o comunque delle tabelle relazionate con campi di questo tipo.

Tutti i record della tabella saranno quindi considerati per l'invio, a meno di filtri applicati sulla vista utilizzata o anche in termini di filtri di ricerca. A partire da una vista della "Tabella Soggetti Email" o di una qualunque tabella ad essa collegata, saranno analizzati i record visualizzati (o i rispettivi record "padre" della "Tabella Soggetti Email", se siamo in una tabella di dettaglio referenziata). Premendo il pulsante con il simbolo della email (disponibile solo per l'utente "admin") inizierà la procedura per la composizione e l'invio della email. Oltre ad immagini e link, potranno essere utilizzati anche campi "dinamici", in modo da comporre email personalizzate per ogni destinatario. Sarà possibile inviare una email di prova al proprio indirizzo per visualizzare il risultato finale, prima di eseguire l'invio effettivo.

Al fine di poter eseguire l'invio di una email di questo tipo è necessario disporre di un proprio server SMTP (o sottoscrivere un abbonamento a servizi tipo MailUp, Mandrill, SendGrid, Amazon SES ecc.). I dati per l'accesso al server andranno poi configurati sulle impostazioni generali nella sezione "Configurazione SMTP". Il server configurato sarà utilizzato anche per le normali email inviate singolarmente.

Una volta data la conferma di invio tramite l'apposito tasto, le email saranno schedulate per l'invio in una coda che viene letta dal sistema ogni 10 minuti: è possibile visualizzare la coda corrente dal pannello delle impostazioni generali, ed eventualmente annullare l'invio delle email che si trovano in coda.

Eseguire calcoli sui dati

Tramite i campi di tipo calcolato è possibile eseguire operazioni sui dati dei record, come ad esempio contare i record di un gruppo, eseguire somme di valori di un gruppo, eseguire operazioni matematiche sui valori dei campi di un record (somma, differenza, moltiplicazione, divisione). Sono più o meno le stesse operazioni che possono essere svolte con excel. E' possibile anche definire delle "condizioni logiche" per cui il valore risultante dipenderà dal fatto che una espressione articolata sia "vera" o "falsa". Un'altra possibilità è quella di eseguire la trasformazione di valori da un tipo ad un altro, o l'estrazione di porzioni di dati da un campo.

E' anche possibile fare in modo che un campo calcolato restituisca un valore di tipo "Colore": tale valore sarà utilizzato per colorare le righe delle viste tabellari, se incluso tra i campi da visualizzare. In questo modo sarà possibile colorare le righe in base a specifiche condizioni sui valori presenti nei record. Il valore restituito deve essere una stringa nel formato rgb oppure rrggbb (esempio: F00 per il rosso, oppure FF0000)

E' possibile anche generare "codici a barre" a partire dal risultato di un campo calcolato: il codice potrà avere una lunghezza massima di 20 caratteri e sarà generato nel formato "Code 39", che permette di avere rappresentazioni con caratteri alfanumerici. E' supportata anche la generazione di codici QR (QR Code).

Di seguito alcuni esempi esplicativi delle formule che possono essere create; da notare che i valori "numerici" vanno espressi con il "." come separatore decimale (ad esempio "10.5"):

Moltiplicazione[Prezzo] * [Quantita]
(moltiplica due valori numerici)

Divisione[Prezzo] / 1.22
(divide due valori numerici, nell'esempio esegue lo scorporo dell'IVA)

Somma[Valore1] + [Valore2]
(somma due valori numerici)

Sottrazione[Totale] - [Sconto]
(esegue la differenza tra due valori numerici)

EsponenzialeEXP([Valore])
(esegue il calcolo dell'esponenziale del valore dato)

Radice quadrataSQRT([Valore])
(esegue il calcolo della radice quadrata del valore dato)

PotenzaPOW([Base],[Esponente])
(esegue il calcolo della base elevata alla potenza dell'esponente)

Parte intera inferioreFLOOR([Valore])
(arrotonda al valore intero inferiore: es. 1,75 diventa 1)

Parte intera superioreCEIL([Valore])
(arrotonda al valore intero superiore: es. 1,25 diventa 2)

Condizione( CASE WHEN [Valore] >= 0 THEN "Positivo" ELSE "Negativo" END )
(restituisce il valore testuale "Positivo" o "Negativo" in base al risultato della condizione, ovvero "se [Valore] è maggiore o uguale di zero")

Condizione( CASE WHEN [Stato] <> "aperto" THEN [Campo1] ELSE [Campo2] END )
(controlla il valore del campo [Stato] e se è diverso da "aperto" restituisce il valore del [Campo1], altrimenti quello del [Campo2])

Condizione( CASE WHEN [Valore] = 0 THEN "zero" WHEN [Valore] = 1 THEN "uno" WHEN [Valore] = 2 THEN "due" END )
(restituisce il testo "zero","uno","due", in base al valore numerico: esempio di condizioni multiple.)

Condizione( CASE WHEN [Dato] IS NULL THEN [Campo1] ELSE [Campo2] END )
(controlla il valore del campo [Dato] e se ha un valore nullo (IS NULL), ovvero l'assenza di alcun valore, restituisce il valore del [Campo1], altrimenti quello del [Campo2]). Il controllo opposto richiede il termine IS NOT NULL.

Condizione campi "Check"( CASE WHEN [CampoCheck] ="on" THEN [Campo1] ELSE [Campo2] END )
(controlla il valore del campo di tipo "Check (si/no)" e se è "attivo", restituisce il valore del [Campo1], altrimenti quello del [Campo2]). Il controllo opposto richiede il confronto con "".

ConversioneCAST ( [CampoNumerico] AS REAL )
(utilizzare in caso di necessità di avere valori numerici di precisione)

ArrotondamentoROUND( [CampoValore],0 )
(arrotonda il valore senza decimali)

ArrotondamentoROUND( [CampoValore],2 )
(arrotonda il valore con 2 decimali)

Estrazione testoSUBSTR( [Nome] ,1,4 )
(recupera i primi 4 caratteri del campo "Nome")

Estrazione testoSUBSTR( [Nome] ,5,4 )
(recupera i successivi 4 caratteri del campo "Nome")

Estrazione AnnoSUBSTR( [Data] ,1,4 )
(estrae l'Anno dalla data)

Estrazione MeseSUBSTR( [Data] ,6,2 )
(estrae il Mese dalla data)

Estrazione GiornoSUBSTR( [Data] ,9,2 )
(estrae il Giorno dalla data)

Sostituzione caratteriREPLACE( [CampoTesto] ,"A", "B" )
(Sostituisce nel campo il carattere "A" con il carattere "B")

Rimozione spaziTRIM( [CampoTesto] )
(Rimuove dal campo gli eventuali spazi iniziali e finali)

Orario decimale( CAST(SUBSTR( [Ora] ,1,2) AS REAL) + (CAST(SUBSTR( [Ora] ,4,2) AS REAL)/60) )
(trasforma un campo "Orario" in ore decimali)

Differenza Orari( CAST(SUBSTR( [Ora fine] ,1,2) AS REAL) + (CAST(SUBSTR( [Ora fine] ,4,2) AS REAL)/60) ) - ( CAST(SUBSTR( [Ora inizio] ,1,2) AS REAL) + (CAST(SUBSTR( [Ora inizio] ,4,2) AS REAL)/60) )
(esegue la differenza "decimale" tra due orari)

DateDATE( 'now' , 'localtime' )
(restituisce la data corrente)

DateDATETIME( 'now' , 'localtime' )
(restituisce la data-ora corrente)

Datedata_creazione
(restituisce la data di creazione del record)

Datedata_modifica
(restituisce la data di modifica del record)

Date(STRFTIME('%Y', 'now') - STRFTIME('%Y', [data nascita])) - (STRFTIME('%m-%d', 'now') < STRFTIME('%m-%d', [data nascita]))
(restituisce gli anni dalla data di nascita)

DateDATE ( data_creazione, '+1 month', '+1 day', '+1 year' )
(aggiunge periodi alla data di creazione del record: 1 mese + 1 giorno + 1 anno. E' possibile aggiungere tutti i periodi che si vogliono, anche solo 1)

DateSTRFTIME ("%w", [Data])
(restituisce un numero da 0 a 6 indicante il "giorno" della settimana della data: DOMENICA = 0, LUNEDI = 1 ecc.)

DateSTRFTIME ("%W", [Data])
(restituisce un numero da 0 a 53 indicante la settimana dell'anno della data)

DateSTRFTIME ("%d", [Data])
(restituisce il giorno della data)

DateSTRFTIME ("%m", [Data])
(restituisce il mese della data)

DateSTRFTIME ("%Y", [Data])
(restituisce l'anno della data. Altre opzioni: %H per l'ora, %M per i minuti, %S per i secondi, %j per il giorno dell'anno [1-366])

DateJULIANDAY( [Data] )
(trasforma la data in numero di giorni)

Date( JULIANDAY( [Data fine] ) - JULIANDAY( [Data inizio] ) )
(differenza tra due date, con risultato in giorni)

Date( JULIANDAY( DATETIME( 'now' , 'localtime' ) ) - JULIANDAY( data_modifica ) )
(giorni trascorsi dall'ultima modifica del record)

DateDATE(data_creazione)
(data di creazione, senza orario)

TempoTIME(data_creazione)
(estrae solo l'orario della data di creazione)

MinuscoleLOWER( [Nome] )
(trasforma il "Nome" tutto in minuscolo)

MaiuscoleUPPER( [Nome] )
(trasforma il "Nome" tutto in MAIUSCOLO)

ColorazioneCASE WHEN [Stato] ='scaduto' THEN 'F22' END
(Colora di "rosso" le righe "scadute": occorre impostare il Tipo del risultato come "Colore" e aggiungere il campo alla vista che si desidera colorare.)



Importare dati su tabella esistente

Una volta definita la struttura di una tabella e caricati dentro i primi dati è possibile eseguire una importazione di ulteriori dati da file excel.


Sarà importante rispettare la sequenza di colonne indicate nella maschera di importazione ("Struttura tabella"). Le colonne dovranno esserci tutte: eventualmente è possibile saltare le colonne finali a destra. E' anche possibile decidere se cancellare i dati correntemente già presenti.

Aggiornare dati esistenti con dati importati

In alternativa al caricamento di nuovi dati è possibile eseguire un "aggiornamento" dei dati esistenti. Questa procedura è più delicata in quanto, se non si eseguono correttamente i passaggi richiesti, si rischia di compromettere i dati già presenti nella tabella. Lo scopo di questa funzione è quello di modificare alcuni valori dei record esistenti con dati provenienti da fonti esterne.

E' necessario innanzitutto definire il campo che servirà come "chiave" di identificazione dei record (su una tabella "Anagrafica" potrebbe essere il Codice Fiscale o la Partita IVA). Poi occorre indicare le colonne presenti. Infatti, a differenza della funzione di importazione descritta al paragrafo precedente, qui possiamo decidere di inserire solo alcune delle colonne da aggiornare. Obbligatoriamente dovrà essere presente il campo "chiave", e almeno uno degli altri campi da aggiornare. Tutti i record che avranno una corrispondenza con il campo chiave saranno aggiornati con i corrispondenti valori specificati. Sarà possibile specificare se scartare o aggiungere i record che non hanno una corrispondenza con il campo chiave primaria.




Cancellare dati esistenti tramite dati importati

A volte può essere comodo eseguire la cancellazione massiva di dati utilizzando un elenco esterno. Per eseguire questa operazione è possibile utilizzare la funzione di cancellazione dati presente nel menu di gestione delle tabelle, identificata con il pulsante "Cancella dati". Questa funzione permette di cancellare tutti i dati che fanno parte di un elenco dato, oppure di cancellare tutti i dati che non ne fanno parte. E' sufficiente selezionare il campo che deve fare da "chiave primaria" (ovvero da valore identificativo di un record) e "incollare" una colonna contenente tutti i valori che vogliamo trattare con questa operazione. Occorre quindi specificare se desideriamo cancellare i record che sono nell'elenco, oppure quelli che non sono nell'elenco. E' anche possibile scegliere se mettere i record nel cestino oppure cancellarli definitivamente.

Cancellare i duplicati

Tra le opzioni della "Operazione da eseguire" c'è anche la "Cancella SOLO record DOPPIONI", che serve per eliminare dal sistema tutti i record che rispetto alla chiave scelta hanno valori duplicati: per questa operazione non è necessario caricare dei dati, in quanto sarà eseguita automaticamente sui dati già presenti nella tabella. Basta quindi specificare il campo chiave e selezionare tale opzione. Ad esempio potremmo voler eliminare tutti i record presenti in tabella che hanno il campo "email" identico: si sceglie il campo "email" come chiave e si sceglie questa opzione: i dati saranno cancellati (nel cestino o definitivamente a seconda della scelta relativa). Saranno cancellati (tra i vari doppi) quelli con data di creazione più recente. Se il valore del campo chiave è vuoto il record in oggetto non sarà considerato nell'operazione.

Modificare più record in una volta sola

Questa funzione è molto utile se ci occorre aggiornare il valore di uno o più campi su vari record: è sufficiente selezionare i record che ci interessano, anche dopo aver applicato dei filtri di ricerca, tramite l'apposito "check" di scelta presente sulla sinistra di ogni record nelle viste "tabellari".


Una volta scelti i record che vogliamo modificare occorre premere il tasto di modifica multipla che si trova in testa alla tabella (quindi non i singoli tasti a fianco di ogni record) per eseguire la modifica multipla.


Comparirà la schermata di modifica multipla di dettaglio, dove potremo inserire i dati che vogliamo modificare (ricordandosi di selezionare il "check" di conferma a sinistra di ogni campo). Completato l'inserimento dati possiamo decidere se salvare sui record correnti, se creare dei nuovi record copiando i dati da quelli correnti (e applicando le modifiche) oppure se cancellare i record selezionati. La creazione di nuovi record può essere fatta con "copia dei dettagli" oppure senza; la copia dei dettagli significa che anche tutti i dati collegati tramite relazioni saranno creati in copia.

Usare un "ID" personalizzato per identificare i dati nelle relazioni

Quando si crea una relazione con un campo di tipo "Menu riferimento" è possibile scegliere, se lo si desidera, il campo da utilizzare come ID (in alternativa a quello standard "ID interno").
Ciò ci consente di creare relazioni tra tabelle che contengono record importati da altri sistemi, utilizzando quindi uno dei campi importati come chiave.

Copiare una tabella

In alcuni casi può essere comodo creare una copia della struttura di una tabella esistente, con tutti i campi già definiti. Per eseguire questa operazione è sufficiente creare la nuova tabella e poi scegliere l'opzione "Copia i campi e le viste da un'altra tabella": l'intera struttura della tabella sarà copiata, ma non i record presenti.

Integrare il database Gabama sul proprio sito web

Se vi occorre una semplice integrazione del database Gabama in una pagina del vostro sito web potete ottenere questo risultato con il seguente codice HTML:

<iframe width="980" height="600" src="https://server30.gabama.com/?d=[DOMINIO]&u=[UTENTE]&p=[PASSWORD]"></iframe>

sostituendo [DOMINIO], [UTENTE] e [PASSWORD] con i dati del vostro account Gabama (meglio se di un utente con privilegi ridotti, al limite un utente "anonimo").

NOTA: è possibile aggiungere un ulteriore parametro denominato "rurl" che ha lo scopo di definire l'URL di ritorno in caso di logout dal sistema (ad esempio per reindirizzare l'utente al vostro sito principale).

Nel caso in cui invece si abbia la necessità di integrare il proprio sito web con il database Gabama in modo più avanzato, è possibile creare una pagina esterna da installare sul proprio sito, personalizzata secondo il layout e lo stile desiderato, pagina che poi permetterà di inviare i dati direttamente al database Gabama.

Questa funzione è utile, ad esempio, nel caso in cui vogliamo creare sul nostro sito web dei moduli di contatto verso potenziali clienti e fare in modo che i dati siano automaticamente memorizzati su Gabama.

Per poter costruire la nostra pagina, di tipo dinamico (ad esempio in PHP), ci occorrono:

1) la definizione della struttura della tabella nella quale andremo ad inserire i dati;
2) un metodo per inviare i dati al sistema Gabama.

Quello che segue è un esempio in PHP di come è possibile ottenere questo risultato, creando dinamicamente la "form" in base ai campi della tabella presente su Gabama; questo significa che, in caso di future modifiche alla struttura della tabella, la pagina si aggiornerà in automatico con la nuova "form" necessaria.

Per prima cosa impostiamo alcune variabili che ci saranno utili per gestire la comunicazione verso il server:

$sito = "server30.gabama.com";
$dominio = "dom1234";
$utente = "utente";
$password = "pass1234";
$tabella = "103";

I dati delle variabili ovviamente dovranno essere quelli del vostro account su Gabama. Le variabili sono tutte autoesplicative, ad eccezione della variabile $tabella, nella quale dobbiamo inserire l'identificativo della tabella che ci interessa, informazione che possiamo recuperare dal pannello di configurazione della tabella stessa.


Per le credenziali di accesso (utente e password) conviene creare un utente appositamente dedicato a questo scopo, che abbia come profilo di accesso solo i permessi per poter leggere e inserire dati sulla tabella desiderata e solo sui campi necessari. Ora siamo pronti per ricevere le informazioni dal server.

//recuperiamo l'elenco dei campi presenti in tabella
$url = "https://".$sito."/?tb=".$tabella."&d=".$dominio."&u=".$utente."&p=".$password;
$res = file_get_contents($url);
$aTabella = json_decode($res,true);

//costruiamo la form per l'inserimento dei dati
echo '<form action="esempio.php" method="post">';
echo '<input type="hidden" name="send" id="send" value="1"/>';
if(isset($aTabella['nome']))
{
  foreach($aTabella['campi'] as $pos => $campo)
  {
    $nome=$campo['nome'];
    echo $nome."<input type='text' name='c". $pos ."' id='c". $pos ."' value=''/><br/>";
  }
}
echo '<input type="submit" name="submit" value="Invia i dati"/>';
echo '</form>';

Nella prima sezione di questa parte di codice abbiamo eseguito una "chiamata" verso il server per farci restituire la struttura della tabella in formato JSON.

Nella seconda sezione, in base alla struttura ricevuta (memorizzata in un array associativo) verifichiamo se ci è stato restituito il nome della tabella e quindi eseguiamo un ciclo sulla lista di campi, creando una serie di "INPUT" con al lato il nome del campo. Questa parte di codice possiamo ovviamente personalizzarla secondo lo stile desiderato.

Nell'esempio la variabile "$pos" contiene il codice numerico identificativo del campo (lo stesso che troviamo nel pannello di configurazione di Gabama) che utilizzeremo per l'invio dei dati.

Se eseguiamo questa pagina dovremmo ottenere una semplice form con l'elenco dei campi.

Ora vediamo la parte che ci occorre per gestire l'evento di POST della form html e quindi l'invio dei dati raccolti dalla form verso il server.

if(isset($_POST['send']))
{

  //recuperiamo di nuovo l'elenco dei campi presenti in tabella
  $url="https://".$sito."/?tb=".$tabella."&d=".$dominio."&u=".$utente."&p=".$password;
  $res=file_get_contents($url);
  $aTabella=json_decode($res,true);
  
  //costruiamo la stringa per l'inserimento dei dati
  $url="https://".$sito."/?t=".$tabella."&in=1&d=".$dominio."&u=".$utente."&p=".$password;
  if(isset($aTabella['nome']))
  {
     foreach($aTabella['campi'] as $pos => $campo)
     {
       if(isset($_POST['c'.$pos])) $url.="&c".$pos."=".urlencode($_POST['c'.$pos]);
     }
  }
  
  //inviamo i dati al server
  $res=file_get_contents($url);
  
  //controlliamo la risposta
  if(trim($res)!="error")
     echo "Tutto OK.";
  else
     echo "Si è verificato un errore.";
  exit;

}

Questa parte di codice recupera nuovamente la struttura della tabella e poi costruisce la stringa di "chiamata" per l'inserimento dei dati sul database Gabama: si fa uso dell'identificativo dei campi (variabile "$pos") per associare il valore di ogni campo ad una variabile ben specifica ("c1", "c2" ecc.).
Infine si esegue un controllo sul fatto che la chiamata abbia avuto esito positivo.

La pagina "esempio.php" completa:

<?php
$sito = "server30.gabama.com";
$dominio = "dom1234";
$utente = "utente";
$password = "pass1234";
$tabella = "103";

if(isset($_POST['send']))
{

  //recuperiamo di nuovo l'elenco dei campi presenti in tabella
  $url="https://".$sito."/?tb=".$tabella."&d=".$dominio."&u=".$utente."&p=".$password;
  $res=file_get_contents($url);
  $aTabella=json_decode($res,true);
  
  //costruiamo la stringa per l'inserimento dei dati
  $url="https://".$sito."/?t=".$tabella."&in=1&d=".$dominio."&u=".$utente."&p=".$password;
  if(isset($aTabella['nome']))
  {
     foreach($aTabella['campi'] as $pos => $campo)
     {
       if(isset($_POST['c'.$pos])) $url.="&c".$pos."=".urlencode($_POST['c'.$pos]);
     }
  }
  
  //inviamo i dati al server
  $res=file_get_contents($url);
  
  //controlliamo la risposta
  if(trim($res)!="error")
     echo "Tutto OK.";
  else
     echo "Si è verificato un errore.";
  exit;

}

//recuperiamo l'elenco dei campi presenti in tabella
$url = "https://".$sito."/?tb=".$tabella."&d=".$dominio."&u=".$utente."&p=".$password;
$res = file_get_contents($url);
$aTabella = json_decode($res,true);

//costruiamo la form per l'inserimento dei dati
echo '<form action="esempio.php" method="post">';
echo '<input type="hidden" name="send" id="send" value="1"/>';
if(isset($aTabella['nome']))
{
  foreach($aTabella['campi'] as $pos => $campo)
  {
    $nome=$campo['nome'];
    echo $nome."<input type='text' name='c". $pos ."' id='c". $pos ."' value=''/><br/>";
  }
}
echo '<input type="submit" name="submit" value="Invia i dati"/>';
echo '</form>';
?>


Per costruire la form in modo più evoluto sono disponibili ulteriori parametri, oltre al nome del campo:

$nome=$campo['nome'];//il nome del campo
$tipo=$campo['tipo'];//"id" con la tipologia di campo (vedi spiegazione seguente)
$obbligatorio=$campo['obbligatorio'];//se il campo è obbligatorio (valorizzato in tal caso ad "1")
$descrizione=$campo['descrizione'];//la descrizione aggiuntiva del campo
$ArrayValoriPossibili=$campo['elenco_valori_possibili'];//array con l'elenco dei valori di un campo "menu a tendina"


I possibili tipi di campo utilizzabili sono:

1) Testo breve (id: TEXT)
2) Testo ampio (id: TEXTAREA)
3) Data (id: DATA)
4) Check (si/no) (id: CHECK)
5) Numero (id: NUMERO)
6) Valuta (id: VALUTA)
7) Menu a tendina (id: COMBO)
8) Indirizzo web (id: URL)
9) Menu riferimento (id: LOOKUP)
10) Totalizzatore (id: TOTALE)
11) Immagine (id: IMAGE)
12) File (id: FILE)

I valori degli "id" corrispondono alla stringa che troveremo nella variabile "$tipo".

Per i campi di tipo "Check" va utilizzato il tipo di input html checkbox.
Per i "Menu a tendina" va utilizzato il tag html <select>.

Per quanto riguarda il formato dei valori: le date vanno espresse come "gg/mm/aaaa", i valori numerici devono avere la "virgola" come separatore decimale.

Tutti i controlli di validità vanno implementati lato client, con appositi script a cura dell'utilizzatore.

Eseguire "azioni" su sistemi esterni

Gabama permette di eseguire delle chiamate http di URL esterni al verificarsi di eventi sul sistema. Gli eventi gestiti sono quelli di:

- inserimento record
- modifica record
- cancellazione record
- ripristino record (recupero record da cestino)
- invio email (tramite pulsante).

Ad ognuno di questi eventi, per ogni tabella, è possibile associare uno URL che sarà chiamato subito dopo l'evento stesso. In questo modo sarà possibile comunicare a sistemi esterni l'avvenuta operazione (ad esempio, per sincronizzare i dati con altre applicazioni).

E' possibile definire uno URL di base (nel pannello delle "Impostazioni generali") e specificare per ogni evento solo lo URL parziale (il risultato sarà la chiamata allo URL base + URL parziale), oppure utilizzare uno URL completo per ogni evento. Un esempio di URL valido è il seguente:

http://www.url-del-vostro-dominio.it/sinc.php?id={id}&dato={c1}


Nell'esempio vengono specificati anche dei parametri dinamici, che corrispondono all'ID del record interessato (identificato come {id}) e al valore del campo con id 1 (ovvero {c1}).

E' possibile passare come parametri tutti i campi della tabella (ad eccezione di quelli calcolati), da c1 a c512, identificati come {c1} {c2} {c3} ... {c512}. Gli id numerici dei campi si trovano sulla definizione di ogni campo, nella gestione tabelle. E' inoltre possibile ottenere anche informazioni sull'utente che esegue l'operazione, tramite i parametri {i-user}, {e-user}, {u-user} (rispettivamente per ottenere: la colonna "ID" dell'utente, la colonna "Email" dell'utente, la colonna "Utente" dell'utente).

Per gestire anche le operazioni che interessano più record in contemporanea (creazione/modifica/cancellazione multipla) è possibile utilizzare il parametro denominato {ids}, che conterrà un array (in formato JSON) di tutti gli ID dei record interessati (in caso di operazione su singolo record, l'array {ids} sarà comunque valorizzato e conterrà un solo elemento, corrispondente all'ID del record interessato): il sistema eseguirà una singola chiamata allo URL, e i dati ({id}, {c1}, {c2} ecc.) saranno quelli dell'ultimo record dell'elenco selezionato, ma tramite il parametro {ids} sarà comunque possibile recuperare anche i dati degli altri record (se necessario), utilizzando le API di lettura dati descritte in seguito.

NOTA: non saranno effettuate chiamate di URL sulle operazioni di importazione/aggiornamento/cancellazione eseguite da pannello di gestione.

Per l'evento di "invio email" è possibile specificare anche ulteriori parametri (autoesplicativi):

{mittente}
{oggetto}
{messaggio}
{allegato}
{destinatario1} {destinatario2} ecc.

In fase di chiamata dello URL i parametri saranno valorizzati con i corrispettivi valori. In particolare il parametro {allegato} sarà valorizzato con un testo HTML contenente un link al file allegato (che rimane memorizzato sul server).

Scrivere i dati nel database da un'applicazione esterna

E' possibile anche utilizzare direttamente chiamate a URL per scrivere dati, formattate nel seguente modo:

https://server30.gabama.com/?in=1&t=[ID_TABELLA]&d=[DOMINIO]&u=[UTENTE]&p=[PASSWORD]&c1=[VALORE_CAMPO_1]&c2=[VALORE_CAMPO_2] ...


In questa chiamata il parametro "in=1" ci consente di specificare che stiamo inserendo dei dati via URL (nell'esempio, i campi identificati come: "c1" e "c2", ovvero i campi aventi ID 1 e 2), nella tabella identificata con il codice ID specificato con [ID_TABELLA].

Occorre sostituire [DOMINIO], [UTENTE] e [PASSWORD] con i dati del vostro account Gabama.

In risposta alla chiamata riceveremo la stringa "ok" se tutto è andato bene, oppure la stringa "error" se qualcosa non ha funzionato. Se vogliamo ottenere in risposta alla chiamata l'ID del record inserito, occorre specificare il parametro lastid=1.

Se utilizziamo l'account di amministrazione, possiamo anche aggiungere il parametro "id". In questo caso, invece di un inserimento di nuovo record, sarà modificato il record avente ID specificato, come nel seguente esempio:

https://server30.gabama.com/?in=1&t=1&d=dom100&u=admin&p=12345&c1=prova&id=100


Sempre utilizzando l'account di amministrazione, è anche possibile utilizzare il parametro "del", indicando come valore l'ID di un record da cancellare, come nel seguente esempio:

https://server30.gabama.com/?in=1&t=1&d=dom100&u=admin&p=12345&del=101


I dati trasferiti devono essere nel formato "utente" ovvero le date nel formato "gg/mm/aaaa" e i numeri con il separatore "," per i decimali. Nel caso in cui non siano in questo formato, ma già nel formato "interno" al database (ovvero date come "aaaa-mm-gg" e numeri con separatore decimale "."), si può specificare il parametro "nf=1" per indicare che non si vuole riformattare i dati. Esempio:

https://server30.gabama.com/?in=1&t=1&d=dom100&u=admin&p=12345&c1=2014-12-02&nf=1


Nota: al posto della password (parametro "p") è possibile specificare il parametro "key" (sempre in abbinamento al parametro "d" e al parametro "u": quest'ultimo deve obbligatoriamente essere quello dell'amministratore, in questo caso), che è possibile conoscere leggendo il valore presente nelle "Impostazioni Generali", alla voce "Valore API Key" del gruppo "API". Questo valore non è correlato alla password per cui non cambia in caso di sua modifica; tuttavia è associato all'account dell'amministratore e se cambia il suo identificativo cambierà anche la "key". Esempio di chiamata con parametro "key":

https://server30.gabama.com/?in=1&t=1&d=dom100&u=admin&key=1234567890&c1=testo&id=50

Leggere i dati del database da un'applicazione esterna

Per poter leggere i dati contenuti nel database Gabama da parte di un'applicazione esterna (ad esempio un sito web o un altro applicativo della vostra azienda) è possibile utilizzare una chiamata HTTP formattata nel seguente modo:

https://server30.gabama.com/?out=1&t=[ID_TABELLA]&d=[DOMINIO]&u=[UTENTE]&p=[PASSWORD]

In questa chiamata il parametro "out=1" ci consente di specificare che stiamo richiedendo la lettura dei dati.

Occorre sostituire [DOMINIO], [UTENTE] e [PASSWORD] con i dati del vostro account Gabama (deve essere obbligatoriamente l'utente amministratore), mentre il valore del parametro [ID_TABELLA] deve essere l'ID della tabella da leggere.

Sarà restituita una struttura dati in formato JSON, contenente tutti i record della tabella specificata. E' possibile selezionare due tipi di disposizione per i dati: la disposizione colonne/righe oppure la disposizione righe/colonne: di default è selezionata la prima disposizione, mentre se si desidera la seconda disposizione occorre aggiungere il parametro format=1.

Alcuni campi non saranno restituiti (campi calcolati, derivati). Il formato dei dati contenuti nei singoli campi sarà quello utilizzato internamente da Gabama, per cui in alcuni casi (date, numerici, file, immagini, check, menu riferimento) andranno opportunamente formattati per essere rappresentati dalla vostra applicazione. La chiamata HTTP descritta, in abbinamento alla chiamata che permette di leggere la struttura della tabella e la tipologia dei campi (descritta nel paragrafo precedente), permetterà di interpretare e ricostruire in modo corretto il flusso di dati.


Se si desidera leggere un singolo record basterà specificare nella chiamata un ulteriore parametro "r" con l'indicazione dell'ID del record (gli ID dei record sono inclusi nella struttura dati JSON).
Ad esempio, la seguente chiamata HTTP restituirà il record avente ID pari a 1200:

https://server30.gabama.com/?out=1&t=1&d=dom100&u=admin&p=12345&r=1200


Se si desidera leggere solo uno specifico sottoinsieme di record è sufficiente includere ulteriori 2 parametri: "i" e "q". Il parametro "i" permette di indicare la posizione dalla quale vogliamo iniziare la lettura dei record (in ordine progressivo, a partire da "0") e il parametro "q" permette di specificare la quantità di record da leggere (da 1 in su).
Ad esempio, la seguente chiamata HTTP restituirà i primi 100 record a partire dal primo presente in tabella:

https://server30.gabama.com/?out=1&t=1&d=dom100&u=admin&p=12345&i=0&q=100


Se si ha necessità di filtrare i dati secondo un criterio specifico è possibile indicare sia l'espressione di filtro desiderata (anche articolata, come in SQL), sia il valore che un campo deve rispettare. Per specificare l'espressione di filtro occorre utilizzare il parametro where, come nel seguente esempio:

https://server30.gabama.com/?out=1&t=1&d=dom100&u=admin&p=12345&where=c1>10


Se invece è sufficiente recuperare i dati filtrandoli in base al valore di un campo è possibile specificare come parametro l'identificativo del campo e il valore che deve essere rispettato, come nel seguente esempio:

https://server30.gabama.com/?out=1&t=1&d=dom100&u=admin&p=12345&c1=1000


Se lo si desidera è possibile ordinare i valori secondo un criterio a scelta, utilizzando il parametro order, come nel seguente esempio:

https://server30.gabama.com/?out=1&t=1&d=dom100&u=admin&p=12345&order=c1


Nota: al posto della password (parametro "p") è possibile specificare il parametro "key" (vedi paragrafo precedente).