Base è sempre ancora la parte debole di LO, in particolare il motore di database integrato e il Report Writer di Oracle. Per il database però si può optare per una soluzione esterna; potrebbe essere proprio una installazione esterna di HSQLDB di ultima versione, l'accesso via JDBC o altro protocollo. Non è immediato.
In ogni caso Andrea non ha descritto nel completo il suo problema: se deve gestire un vero registro di protocollo o solo la numerazione automatica.
diego --------------------------------------- Diego Maniacco, Bolzano (Italy) diego.maniacco@gmail.com ---------------------------------------
On Tue, 4 Dec 2018 at 20:53, Matthias Dieter Wallnöfer < matthias.wallnoefer@lugbz.org> wrote:
Ed infine si aggiunge il fatto che LibreOffice sta ancora usando la vecchia release di HSQLDB 1.8 di dieci anni fa, non quella attuale 2.4 che comprenderebbe una sintassi estesa dei trigger.
http://hsqldb.org/web/openoffice.html
@Diego: è giusto che lo sviluppo di LibreOffice Base si è praticamente fermato, come altrimenti si potrebbe spiegare questa situazione?
Matthias
Matthias Dieter Wallnöfer schrieb:
Allora prima di tutto il tuo secondo valore [INTEGER] non deve essere definito auto-incrementante siccome ci può essere solo una colonna tale (in gergo DB sarebbe una colonna IDENTITY cioè di identità = identificazione).
Dunque occorre individuare un'alternativa come quella di usare le sequenze. Però anche usando loro non ci arrivi.
Eseguendo le seguenti due istruzioni SQL dall'interprete (nel menu
"Extra"):
create sequence SeqSecondaColonna; create table TabellaTest(col1 integer identity primary key, col2 integer generated by default as sequence SeqSecondaColonna not null)
La seconda non va a buon fine perché HSQLDB (motore di LibreOffice Base) apparentemente supporta solo una colonna generate oppure colonne d'identità per tabella (http://hsqldb.org/doc/2.0/guide/databaseobjects-chapt.html):
The |<identity column specification>| or |<identity column sequence specification>| can be specified for only a single column of the table.
Secondo me restando su questo schema non rimane altro che usare i trigger. Un concetto che poi non è banalissimo...
Matthias
Andrea Congiu wrote:
Buon giorno, avrei bisogno di creare con LO Base una tabella con due campi [INTEGER] ad incremento automatico di cui solo uno che sia una chiave primaria. Quando provo a farlo, anche sul secondo campo mi crea automaticamente la chiave e non trovo la soluzione.
Ne ho bisogno in quanto una volta all'anno dovrei riportare a 1 il valore del secondo campo con l'istruzione SQL ALTER TABLE "T_PROTOCOLLO" ALTER COLUMN "N_PROTOCOLLO" RESTART WITH 1
Al primo campo essendo una chiave primaria al quale sono collegate altre tabelle, non posso farlo e in oltre il Data Base non mi permetterebbe di avere due o più valori identici nella stessa chiave.
Il tutto dovrà gestire il protocollo della posta in entrata e in uscita. Ho dovuto creare un DB in quanto non ho trovato nessun programma per Linux Mint a 64 bit (nemmeno a pagamento).
Quindi, come potrei risolvere la questione dei due campi incrementali? Oppure, avete un programma da consigliarmi?
Ciao e grazie
andrea
[Clicca per aprire il sito] <https://www.andrea-congiu.it/wiki/doku.php
GnuPG - ID chiave pubblica: D3E105A5855121BB ID diaspora* - congiu_andr@diasp.org SIP - congiu.andr@ekiga.net URL - https://www.andrea-congiu.it https://www.andrea-congiu.it/wiki/doku.php