Vorrei sostituire definitivamente Access con Base di Open Office, di cui ho visto la Sua Guida. Mi resta un grande problema per i campi calcolati sulle ricerche di Base. Non riesco a trovare la sintassi SQL per i seguenti campi calcolati:
1)calcolo in giorni fra due campi data ;
2)differenza in ore/minuti fra due campi ora,
3)funzione se (IIF(condizione;se vero;se falso)
Se digito le formule che utilizza Acces , Base mi da errori di sintassi SQL. Le sarei immensamente grato ,se mi desse una mano.
Cordiali saluti
P.A.Scarivaglione
In effetti l'immissione di funzioni in OOo Base non è molto intuitiva, ma non significa che non si possa fare. Ogni Ricerca di OOo Base è una stringa in SQL che viene passata al motore di Database che si sta utilizzando. Siccome ogni motore ha una sua sintassi, può capitare che una Ricerca funzioni ad esempio con HSQL e non con MySql. Fermandoci a HSQL, una lista di funzioni disponibili può essere consultata a questo indirizzo. Per le nostre esigenze possiamo usare DATEDIFF e CASEWHEN.
Supponendo di usare la sua tabella di esempio, per calcolare i giorni tra due date ed i minuti tra due orari, possiamo usare una Ricerca come questa:
La sintassi sql è:
SELECT
"IdReg", "Dal",
"Al", DATEDIFF( 'dd', "Dal", "Al" ) AS "Differenza Giorni",
"Da Ore", "A Ore", DATEDIFF( 'mi', "Da Ore", "A Ore" ) AS "Differenza Minuti",
casewhen( "IdReg" > 0, 'Vero', 'Falso' ) AS "test"
FROM "Registro Assenze"
Notare che i nomi di campo sono racchiusi da doppi apici, mentre le stringhe da singoli apici. La CASEWHEN è puramente dimostrativa, perchè IdReg è sempre positivo. Il risultato della Ricerca è questo:
Con lo stesso sistema è possibile utilizzare qualunque funzione presente nella sintassi SQL specifica del Motore.
|