Pagina 1 di 1

Compatibilità OpenOffice - Libreoffice etc

Inviato: venerdì 14 gennaio 2022, 17:49
da Luberfly
Ciao a tutti.
Ritorno dopo alcuni anni...
Alcuni anni fa realizzai un DB che funzionava sulla versione 4.02 di Libreoffice. Il DB conteneva una buona parte di codice VBA. Ora dopo circa 8 anni lo devo riprendere in mano.
Ho provato ad eseguirlo con Libreoffice 7.1 ed ho notato alcune caratteristiche / differenze.
Ecco alcuni quesiti
1) Tra Libreoffice ed OpenOffice vi è diversità in termini di database e di codice VBA? Nel senso un DB con relativo codice creato con una versione di Libreoffice può girare anche in Libreoffice?
2) Tra Libreoffice 4.02 e Libreoffice 7.1 vi possono essere diversità in termini di codice di programma?
3) E' ormale che il DB realizzato e funzionante con Libreoffice 4.02 sia mooolto lento nell'apertura dei vari formulari quando eseguito con la versione 7.1? Nel senso che tutte le operazioni sembrano rallentate anche banalmente la semplice apertura e chiusura di una tabella.
4) Nella versione 4.02 di Libreoffice dove installare anche il relativo modulo SDK. Nella versione 7.1 devo fare la stessa cosa?

Un grazie a tutti coloro che mi aiuteranno a rispolverare Libreoffice e la compatibilità.
Grazie

Luca

Re: Compatibilità OpenOffice - Libreoffice etc

Inviato: sabato 15 gennaio 2022, 9:10
da patel
Luberfly ha scritto:Il DB conteneva una buona parte di codice VBA.
cosa intendi per codice VBA ? quello di excel o di starbasic ?
Comunque se non alleghi un file di esempio dubito che qualcuno possa risponderti.

Re: Compatibilità OpenOffice - Libreoffice etc

Inviato: sabato 15 gennaio 2022, 10:38
da Luberfly
Ciao e Grazie.
Per "VBA" usato in modo improprio, intendo il Basic di Libreoffice/OpenOffice, quindi suppongo si chiami Starbasic.
Allego una subroutine che mi da errore....
Allego anche foto dell'errore.

La mia domanda è: tra Libreoffice ed Openoffice ci sono incompatibilità?
Grazie
Luca

Codice: Seleziona tutto

REM *** AGGIORNA IL CAMPO DATA PRESENZA del formulario F_Presenze *****
public sub AggDTPRESENZA (oEvent)                     ' AGGIORNA CAMPO DATA
   dim oForm, oSForm as object                   ' FORMULARIO SU CUI SI OPERA
   dim sNmFrm, sNmSFrms as string                ' NOME FORMULARI SU CUI SI OPERA
   '---------------------------------------------'
   sNmFrm  = "F_Presenze"                        ' NOME FORMULARIO PRINCIPALE
   sNmSFrm = "SF_Presenze"                       ' NOME FORMULARIO SECONDARIO
   '---------------------------------------------'   
   oForm  = Ff_FrmLoad(sNmFrm)                   ' ACQ. OGGETTO FORM
   oSForm = oForm.getbyname(sNmSFrm)             ' ACQ. OGGETTO SUBFORM  
   oCntl  = oForm.getbyname("datData")
   oCntl.data   = TimeStampDate("DATA")          ' IMPOSTO DATA
   oCntl.commit = true                           ' CONFERMO IN DB
'   oForm.UpdateRow()
end sub                                          ' FINE

Re: Compatibilità OpenOffice - Libreoffice etc

Inviato: sabato 15 gennaio 2022, 11:57
da charlie
Ciao,
patel ha scritto:Comunque se non alleghi un file di esempio dubito che qualcuno possa risponderti.
Mi associo.
Comunque intuisco che siamo in Base, sbaglio?

Re: Compatibilità OpenOffice - Libreoffice etc

Inviato: sabato 15 gennaio 2022, 12:25
da Luberfly
Si, è in base. Allego database

Re: Compatibilità OpenOffice - Libreoffice etc

Inviato: sabato 15 gennaio 2022, 12:49
da Luberfly
Allego database completo. 1Mb circa una volta decompresso.
Provate la sezione Presenza, Inserimento. andrà in errore. E provate a vedere la velocità di apertura delle form.
Lo sto usando con Libreoffice 7.18
Sono ben graditi tutti i suggerimenti / consigli
Grazie

Re: Compatibilità OpenOffice - Libreoffice etc

Inviato: sabato 15 gennaio 2022, 15:51
da charlie
Il problema si presenta anche in OpenOffice e quindi escludo che sia dovuto a differenze con LibreOffice.
Il messaggio di errore e piuttosto chiaro, non trova una proprietà o un metodo. In effetti la proprietà 'data' non esiste, semmai sarà 'date'. Ma anche così dà lo stesso errore. Usando la proprietà 'text' l'errore scompare ma non so valutare l'effetto ai fini del funzionamento generale, vista anche la complessità del database.

Per quanto riguarda la velocità di esecuzione non vedo problemi con il mio computer (vedi firma)

Re: Compatibilità OpenOffice - Libreoffice etc

Inviato: domenica 16 gennaio 2022, 10:54
da Luberfly
Ti ringrazio.
La proprietà "text" mi da un errore di dato in quanto il campo è di tipo data e quindi dovrei convertire il valore da text a data.
Una domanda: dove trovo i'elenco dei metodi?
Grazie
Luca

Re: Compatibilità OpenOffice - Libreoffice etc

Inviato: domenica 16 gennaio 2022, 14:55
da charlie
Qualcosa trovi nel manuale Base Handbook di LibreOffice che qualche tempo fa ho tradotto in italiano: viewtopic.php?f=29&t=10531.
A pag. 19 e seguenti ci sono le proprietà dei controlli.
Ma a pag. 38 c'è un paragrafo dedicato alle date che fa pensare possano essere le differenze che cercavi fra OO e LO. Ne riporto l'essenziale:
Da LO 4.1.2, le date sono state memorizzate come matrici all'interno dei controlli del formulario. Ciò significa che il valore corrente del controllo non può essere utilizzato per accedere alla data stessa. La data deve essere ricreata dal giorno, mese e anno se deve essere utilizzata ulteriormente nelle macro.

Re: Compatibilità OpenOffice - Libreoffice etc

Inviato: lunedì 17 gennaio 2022, 14:24
da charlie
Ho avuto modo di approfondire, anche cercando aiuto ...
La proprietà da usare per leggere un campo data in LibreOffice è

Codice: Seleziona tutto

.CurrentValue
o, in maniera più specifica

Codice: Seleziona tutto

.CurrentValue.Year   .CurrentValue.Month   .CurrentValue.Day
Se poi si deve ri-usare il risultato come data, si può ricorrere alla funzione

Codice: Seleziona tutto

CDateFromUnoDate(oField.CurrentValue) 
oppure alla funzione

Codice: Seleziona tutto

CDateFromIso(oField.CurrentValue.Year & Format(oField.CurrentValue.Month,"00") & Format(oField.CurrentValue.Day,"00"))
In quest'ultima bisogna formattare (Format) il mese e il giorno perchè darebbero errore qundo sono ad una sola cifra. Infatti la funzione vuole in input il formato AAAAMMGG o AAAA-MM-GG.

Re: Compatibilità OpenOffice - Libreoffice etc

Inviato: mercoledì 19 gennaio 2022, 10:58
da Luberfly
Ok. Grazie.
CurrentValue però è di sola lettura.
Se devo scrivere la data su un control (oCntl.data) come nel mio caso come faccio?
Se uso oCntl.text mi da errore perchè associato al control ho un campo di tipo data e "text" e "data" sono incompatibili.
Se uso OCntl.data mi dice che non riconosce la proprietà data
Ed è qui che mi perdo...

Re: Compatibilità OpenOffice - Libreoffice etc

Inviato: mercoledì 19 gennaio 2022, 15:22
da charlie
Devi usare la proprietà BoundField come nell'esempio a pag 17 del manuale che ti ho linkato in precedenza.
Riporto qui uno screenshot:
Schermata 2022-01-19 alle 15.22.41.png