Pagina 1 di 2

Esportare Base in server

MessaggioInviato: lunedì 7 marzo 2011, 12:47
da UTPiovene
Per cercare di risolvere la "fragilità" di Base in rete, mantenendo i lavori già fatti, ho spulciato internet e con il nostro CED abbiamo risolto così (e per il momento funziona).
Premetto che sembra che la fragilità di base con utilizzo in rete non sia dovuta al motore HSQLDB di per sè, ma da come questo viene utilizzato all'interno di Base. In pratica i documenti .odb sono files compressi e contengono sia la parte relativa alle tabelle che quella delle ricerche, formulari e rapporti.
La perdita di dati sembra sia legata alla procedura di scrittura nel file, che deve essere decompresso, aggiornato e ricompresso.
Per farla breve, seguendo delle info trovate sul forum internazionale, la procedura è la seguente:
* creare una copia del file .odb di origine
* rinominare la copia del file da .odb a .zip
* aprire il file compresso appena creato (.zip); estrarre dalla cartella "database" i files contenuti e rinominarli anteponendo il nome del database e mantenendo come "estensione" il nome originale (es. mydb.data, mydb.script, ecc.), posizionandoli nella cartella nel server (dalla quale non devono essere spostati più)
* nel menù strumenti -> opzioni -> java:
impostare il runtime java
in classpath aggiungere hsqldb.jar (quello di OOo si trova in ...\OpenOffice.org 3\Basis\program\classes)
* aprire un nuovo database collegandosi al database appena creato in rete attraverso il driver JDBC
* nella URL del database inserire:
jdbc: hsqldb:file:/users/public/databases/mydb/mydb;default_schema=true;shutdown=true;ssqldb.default_table_type=cached;get_column_name=false
dove /mydb/mydb è il nome della cartella e del vostro database (in sistemi windows utilizzare "\" al posto di "/")
* specificare JDBC driver class: org.hsqldb.jdbcDriver
* lo Username di accesso è SA
* registrare il database
(è la stessa procedura che dovrebbe essere fatta per collegare Base ad un database Mysql o PostgreSql)
Aprire il vecchio file .odb e fare copia/incolla delle ricerche, formulari, rapporti e macro.
Per l'utilizzo da parte di più utenti distribuire il file .odb appena creato
Salvare il nuovo .odb in locale. All'apertura del documento non ci sarà più bisogno di rifare la trafila precedente.
La procedura invece deve essere ripetuta per ogni nuovo database.

ATTENZIONE: se c'è bisogno di modificare il database è meglio installare una interfaccia che gestisca HSQLDB, anche se HSQLDB.jar ha un suo editor, ma molto povero.
Per riferimenti (in inglese):
http://user.services.openoffice.org/en/forum/viewtopic.php?p=162653#p162653
http://www.oooforum.org/forum/viewtopic.phtml?p=396523#396523

Considerazioni:
Se si vuole utilizzare Base in rete mantenendo i propri databases già realizzati è necessario seguire la procedura riportata.
Se c'è la necessità di creare nuovi databases utilizzare MySql, MariaSql, PostgreSql, o altro programma esterno, in quanto si riescono a gestire meglio in caso di modifiche alle tabelle.

Re: Esportare Base in server

MessaggioInviato: venerdì 25 marzo 2011, 16:12
da UTPiovene
Aggiungo:
le tabelle non sono più modificabili, nemmeno con degli editor HSQLDB e nemmeno utilizzando il motore HSQLDB in modalità server invece che standalone.
In realtà alcune modifiche si possono fare, ma il modo non è il massimo della comodità.

E' possibile comunque fare il drag&drop delle tabelle fra una sessione Base con motore standalone ed una istanza verso mySql.
Non ho provato fra enbedded e MySQL.
Attenzione però che alcuni dati saranno persi nel caso di campi autoincrementanti in quanto Base parte da 0 (zero) e MySQL da 1.
I dati collegati al dato 0 (zero) saranno persi.
Almeno a me è successo questo facendo delle prove di trasferimento dati

Re: Esportare Base in server

MessaggioInviato: giovedì 5 maggio 2011, 14:43
da UTPiovene
Aggiornamento:
avendo la necessità di modificare le tabelle per adattarle a sopravvenute esigenze mi sono dovuto arrabbatare in qualche modo spulciando la rete ... senza trovare alcuna soluzione.
In realtà la soluzione è semplice: utilizzando la modalità standalone si devono estrarre i singoli files che compongono il database. Tali files vanno rinominati dando un nome (che sarà quello del database) e lasciando il nome originale come estensione.
Il file che avrà estensione .script è quello che definisce le tabelle in formato sql. Quindi basta modificare lo script sql per modificare le tabelle (attenzione: fare sempre la copia di backup).

Re: Esportare Base in server

MessaggioInviato: domenica 8 maggio 2011, 9:51
da vladko
tutorial ben fatto, e soluzione grafica ottima.
ma provato se con comandi sql funziona?
http://hsqldb.org/doc/guide/ch09.html#a ... le-section

attenzione che comando drop cancella definitivamente tutti i dati

Re: Esportare Base in server

MessaggioInviato: giovedì 20 ottobre 2011, 22:47
da UTPiovene
Scusami se rispondo solo adesso, ma è da un po' che sono assente dal forum per motivi di lavoro.
Non ho provato i comandi sql perchè per le modifiche di cui normalmente ho bisogno è sufficiente editare il file .script con un programma tipo Notepad++

Re: Esportare Base in server

MessaggioInviato: domenica 15 gennaio 2012, 13:17
da dino
non so se posso attaccarmi a questo tread... ma prima di aprire un altro argomento...

volevo utilizzare un hosting esterno per il database mysql al quale collegarmi con base da varie postazioni:
c'è in giro qualcosa? ci sono protocolli o librerie particolari da attivare?
io fino ad ora ho utilizzato aruba per dei siti con php... ma da quanto ho capito quel servizio non posso utilizzarlo.

grazie

Re: Esportare Base in server

MessaggioInviato: martedì 31 gennaio 2012, 14:59
da UTPiovene
Mi spiace, ma non ti so rispondere.
E' già tanto se con le mie conoscenze informatiche (moooooolto scarse) sono riuscito a portare Base nel server.
Però è già un buon risultato perchè se ce l'ho fatta io lo può fare chiunque ...

Re: Esportare Base in server

MessaggioInviato: venerdì 3 febbraio 2012, 12:57
da TMY
UTPiovene ha scritto:* creare una copia del file .odb di origine
* rinominare la copia del file da .odb a .zip
* aprire il file compresso appena creato (.zip); estrarre dalla cartella "database" i files contenuti e rinominarli anteponendo il nome del database e mantenendo come "estensione" il nome originale (es. mydb.data, mydb.script, ecc.), posizionandoli nella cartella nel server (dalla quale non devono essere spostati più)
* nel menù strumenti -> opzioni -> java:
impostare il runtime java
in classpath aggiungere hsqldb.jar (quello di OOo si trova in ...\OpenOffice.org 3\Basis\program\classes)
* aprire un nuovo database collegandosi al database appena creato in rete attraverso il driver JDBC
* nella URL del database inserire:
jdbc: hsqldb:file:/users/public/databases/mydb/mydb;default_schema=true;shutdown=true;ssqldb.default_table_type=cached;get_column_name=false
dove /mydb/mydb è il nome della cartella e del vostro database (in sistemi windows utilizzare "\" al posto di "/")
* specificare JDBC driver class: org.hsqldb.jdbcDriver
* lo Username di accesso è SA
* registrare il database

ho eseguito quanto da te riportato ma ricevo il seguente errore (vedi immagine)
qualche soluzione???
open.JPG

Re: Esportare Base in server

MessaggioInviato: venerdì 3 febbraio 2012, 13:06
da TMY
passa a primo

Re: Esportare Base in server

MessaggioInviato: venerdì 3 febbraio 2012, 15:29
da UTPiovene
TMY ha scritto:passa a primo

Cosa significa?
Verifica che il driver sia esatto; dal messaggio di errore non mi sembra abbia lo stesso nome di quello che ho indicato io.

Re: Esportare Base in server

MessaggioInviato: sabato 4 febbraio 2012, 12:19
da TMY
scusami UTPiovene ma avendo visto (Male) che il tread non veniva inserito tra i primi, ho inserito un nuovo messaggio "passa a primo" per vedere se si spostava.
ho capito solo ora che il tread tutorial funziona diversamente.

Re: Esportare Base in server

MessaggioInviato: sabato 18 febbraio 2012, 17:39
da UTPiovene
Ho visto che ci sono persone interessate all'utilizzo di Base in rete.
Per il momento la mia esperienza aveva trovato una sufficiente corrispondenza alle esigenze configurando il motore HSLQDB per lavorare in modo da non perdere i dati trasferendolo sul server, quindi a disposizione di più utenti.
La soluzione che ho sopra riportato però non mi soddisfava molto poichè avevo riscontrato che il database non poteva essere utilizzato contemporaneamente da più persone, quindi, nel poco tempo a disposizione, ho continuato la ricerca per avere Base multiutente.
HSQLDB può essere utilizzato in modalità server (quindi multiutente), ma deve essere sempre avviato e spento. Cosa che per i meno esperti (non che io sia esperto, anzi) poteva creare qualche problema.
Sono da qualche giorno approdato al motore H2 che può essere utilizzato in modalità server senza aver bisogno di essere avviato e spento. Ci pensa lui da solo.
E' sempre scritto in Java e può coesistere con il classpath di HSQLDB. Quindi potete mantenere i vostri "vecchi" database HSQLDB, almeno fino a quando deciderete di fare il passaggio definitivo.
Ho fatto delle prove, al dire il vero poco approfondite, ma sembra che effettivamente gestisca più utenti contemporaneamente.
Tabelle, Ricerche, Formulari e Rapporti possono essere trascinati fra i due databse (HSQLDB e H2).
Primo problema:
H2 però funziona con gli "schemi" come MySql. Per poter eseguire i trasferimenti con il drag&drop è necessario creare uno schema con nome SA (può essere rinominato successivamente con comandi sql). Contrariamente vi avviserà che non trova lo schema SA.
Secondo problema:
I dati ad incremento automatico (identity) su H2 partono dal valore 1 e non dal valore 0 come di HSQLDB. Vi potrebbe pertanto essere un problema di collegamento fra tabelle (dico potrebbe perchè non l'ho ancora verificato).
Inoltre H2 utilizza un dato di tipo BIGINT per i campi ad incremento automatico. Di conseguenza nel traferimento delle tabelle è necessario convertire i dati di tipo INTEGER in campi di tipo BIGINT se questi sono utilizzati per collegare le tabelle.
Primo vantaggio:
Può coesistere con HSQLDB impostando entrambi i classpath nella sezione Java di Openoffice
Secondo vantaggio:
E' più veloce
Terzo vantaggio:
Come MySql crea un solo database, composto da 2 files, e gestisce all'interno i vari schemi. Quindi per il backup si salvano solo 2 files anzichè 4 (in realtà sarebbe 1 solo file, quello con nome filedb.h2.db).
Al momento sto provando a traferire un database abbastanza complesso ed ho trovato qualche problema, ma può essere dovuto a come io ho strutturato il database, cioè male.
Vi terrò al corrente degli sviluppi.

Re: Esportare Base in server

MessaggioInviato: lunedì 20 febbraio 2012, 17:31
da UTPiovene
Sto tentando di replicare in H2 le impostazioni dei database che già avevo in HSQLDB.
Al momeno ci sono problemi che non riesco a risolvere in merito ai subForm. All'apertura del Formulario principale si genera un errore che non permette di caricare i dati collegati nei sottoformulari.

Re: Esportare Base in server

MessaggioInviato: lunedì 20 febbraio 2012, 18:06
da vladko
puoi dire quale errore?

Re: Esportare Base in server

MessaggioInviato: lunedì 20 febbraio 2012, 18:37
da UTPiovene
Stavo litigando con il server remoto per caricare l'immagine dell'errore, per non allegarlo al messaggio, ma non posso fare altrimenti.

Re: Esportare Base in server

MessaggioInviato: martedì 21 febbraio 2012, 16:08
da vladko
dispiace che non posso fare dei test ma sono un po occupato

Re: Esportare Base in server

MessaggioInviato: mercoledì 22 febbraio 2012, 9:43
da UTPiovene
Adesso sinceramente mi viene la curiosità di provare con MySql per vedere se genera lo stesso errore.
Da quanto ho potuto testare, questo dipende proprio dal collegamento dei subform con il form principale.
Nella finestra delle proprietà del subform, inserendo i campi di collegamento, da quello che ho capito, dovrebbe generarsi il codice sql necessario. Probabilmente questo codice non è supportato da H2. Mi sembra strano che possa essere così, perchè i comandi sql dovrebbe essere standard, ma non trovo altra spiegazione.
Se invece inserisco i nomi dei campi di collegamento a mano non si collega il subform con il form.
Ho provato anche cambiando i vari parametri contenuti nella tabella (che l'help non spiega a cosa servono), ma non cambia nulla, mi da sempre lo stesso errore.

Re: Esportare Base in server

MessaggioInviato: mercoledì 22 febbraio 2012, 10:54
da vladko
che stringa usi per la connessione?

Re: Esportare Base in server

MessaggioInviato: mercoledì 22 febbraio 2012, 11:00
da UTPiovene
Generalmente uso la maschera proposta dalle proprietà del subform (e mi genera l'errore).
Ho provato inserendo "database"."schema"."tabella"."campo", in questo caso non genera l'errore, ma nemmeno si collega.

Re: Esportare Base in server

MessaggioInviato: mercoledì 22 febbraio 2012, 11:10
da vladko
no scusa intendo stringa di connessione al db

da qualche parte su sito giapponese ho trovato questo ma per altre cose

Codice: Seleziona tutto   Espandi visualeStringi visuale
h2:file:/;DB_CLOSE_ON_EXIT=TRUE;AUTO_SERVER=TRUE;AUTO_RECONNECT=FALSE;MODE=PostgreSQL


penso che tu usi quella della guida di DACM

Codice: Seleziona tutto   Espandi visualeStringi visuale
h2:~/mydb;IFEXISTS=TRUE;AUTO_SERVER=TRUE;MVCC=TRUE


ora giusto per capire ma dalla descrizione di h2 dice qualcosa con la compatibilità di postgres, non so quindi se quella si può aggiungere e servire

chiedo anche se hai provato a creare uno nuovo database e da li fare test per form e sub?

Re: Esportare Base in server

MessaggioInviato: mercoledì 22 febbraio 2012, 11:13
da UTPiovene
E' quella di DACM.
Ho provato anche su un altro DB sempre con il medesimo risultato

Re: Esportare Base in server

MessaggioInviato: mercoledì 22 febbraio 2012, 13:58
da UTPiovene
Ho provato il collegamento del sito giapponese, ma non cambia nulla.
Dal sito di H2: "The error with code 42001 is thrown when trying to execute an invalid SQL statement."
Da notare che il codice sql viene creato in automatico da Base.

Re: Esportare Base in server

MessaggioInviato: mercoledì 22 febbraio 2012, 15:13
da UTPiovene
Ho provato anche a sostituire MODE=HSQLDB a MODE=PostGRE, ma il risultato non cambia.
Per la cronaca si può impostare anche MODE=MYSQL e altri motori database

Re: Esportare Base in server

MessaggioInviato: venerdì 24 febbraio 2012, 11:28
da UTPiovene
Su una vecchia guida che fa riferimento a OpenOffice 2.0, per la parte rigurdante Base MySql, viene riportato che il dato di tipo decimal, con le versioni dalla 5.0.xx, non vengono più gestiti come stringa, ma come dato in formato binario. Formato che potrebbe creare problemi con applicazioni come OpenOffice.
Può essere questo il problema?

Re: Esportare Base in server

MessaggioInviato: venerdì 24 febbraio 2012, 13:45
da vladko
non saprei anche se non credo
ma puoi provare togliendo quel tipo di campo

Re: Esportare Base in server

MessaggioInviato: venerdì 24 febbraio 2012, 13:54
da UTPiovene
Però, riflettendoci, i campi sono collegati con valori di tipo INT o BIGINT. Da una parte ad incremento automatico tipo IDENTITY e dell'altra forzatamente con BIGINT in quanto H2 gestisce IDENTITY con dato BIGINT (che secondo me spreca spazio ed è più lento in elaborazione).
Non sono quindi campi di tipo DECIMAL e non dovrebbero creare problemi, a meno che i problemi non sorgano quando viene letta tutta la tabella caricando i dati contenuti.
Lunedi spero rientri il collega del CED e provo a portare il database in MySql per verificare se anche lì ha gli stessi problemi.

Re: Esportare Base in server

MessaggioInviato: mercoledì 29 febbraio 2012, 16:25
da UTPiovene
Ho fatto varie prove anche ricostruendo da zero un database che in HSQLDB funzionava in modo standalone e, almeno per il momento, devo purtroppo ricontrare che con il motore H2, pur lavorando egregiamente in modalità server, non è possibile creare formulari con subformulari a causa di un errore sql sul collegamento dei campi di riferimento.
Allo stato attuale quindi devo scartare questo motore. Peccato.

Re: Esportare Base in server

MessaggioInviato: giovedì 1 marzo 2012, 10:05
da vladko
ok scusa se non provato prima ma fatto una prova adesso
per stringa connessione usato:
Codice: Seleziona tutto   Espandi visualeStringi visuale
h2:~/mydb;IFEXISTS=TRUE;AUTO_SERVER=TRUE;MVCC=TRUE;;ALIAS_COLUMN_NAME=TRUE


modificato parametro su
Edit->Database->Advanced Settings. On the "Special Settings" tab, select
the option, "Replace named parameters with '?'". che in italiano dovrebbe essere

Sostituisci parametri denominati con"?"

ho provato a fare due tabelle query etc funziona tutto
ma ci vuole un db un po complicato
o invii tuo per test oppure prova con parametri modificati che vediamo

p.s. ho trovato anche questo
https://groups.google.com/group/h2-data ... da818b2314

Re: Esportare Base in server

MessaggioInviato: venerdì 2 marzo 2012, 15:08
da UTPiovene
vladko ha scritto:ok scusa se non provato prima ma fatto una prova adesso
per stringa connessione usato:
Codice: Seleziona tutto   Espandi visualeStringi visuale
h2:~/mydb;IFEXISTS=TRUE;AUTO_SERVER=TRUE;MVCC=TRUE;;ALIAS_COLUMN_NAME=TRUE


Questa impostazione non l'ho fatta, ma ho tolto ...;MODE=NOMEMOTOREDB (avevo impostato HSQLSB e poi provato anche con MYSQL)
Poi ho modificato o parametri nella configurazione avanzata come in immagine allegata


il mio inglese purtroppo è molto scarso (mannaggia averlo capito quando andavo a scuola quanto è utile!!!) e non ho ben afferrato tutto

Comunque adesso i collegamenti funzionano. Ora mi devo concentrare sulle macro.

Re: Esportare Base in server

MessaggioInviato: lunedì 5 marzo 2012, 14:49
da vladko
quindi funzionano anche subform?