Ciao Chris.
Il problema delle performance che citi è interessante, soprattutto assieme alla successiva tua osservazione. Ritengo che ci sarebbe il materiale per aprire una issue sul bugzilla di LO, ma occorre predisporre i file di esempio e descrivere il caso con tutti i passaggi per renderlo replicabile. Avresti tempo/voglia di farlo e eventualmente anche di sottoporlo?
Ultima cosa: che versione LO stai usando e su quale piattaforma?
-- Per il caricamento delle formule: la scrittura delle stesse nel .csv mi pare la cosa più semplice se si ha accesso alla produzione del .csv.
Grazie, diego
--------------------------------------- Diego Maniacco, Bolzano (Italy) diego.maniacco@gmail.com ---------------------------------------
2017-12-06 12:48 GMT+01:00 Chris Mair chris@1006.org:
La domanda da 6 bitcoin e`: come faccio a fare eseguire questa formula da
B1 a B<N> dove <N> e` la riga fino a dove arrivano il valori nella colonna A?
Ciao,
grazie a tutti quelli che hanno risposto!
L'idea di Daniele e` interessante, purtroppo inserendo un campo come "=A1+B1" da database range risulta in una stringa "=A1+B1" inserita, non in una formula...
Il test di Diego funziona, se importato da CSV invece, "=A1+B1" viene interpretato come formula.
Probabilmente l'idea di Giacomo e` buona. In LOBASIC per esempio effettivamente ci sono delle funzione setString e setFormula e tutto... E` solo che vorrei evitare macro il piu` possibile...
Per il momento ho deciso di evitare di creare quella logica in LOBASIC e ho optata per la strada "sprecona", cioe` quella di semplicemente copiare le formule un numero elevato di volte...
Sto incontrando uno strano problema di performance ora. LO e` veloce a importare i dati e fare conti, ma e` molto sensibile a cambiamenti della dimensione di un database range. P.e. esempio importare 50k righe e calcolare 50k righe di formule non e` un problema, lo fa in pochi secondi. Ma guai se cambia la dimesione del database range.
Se parti da un database range von 50k righe, e aggiorni la query sempre con 50k, lo rifa in due secondi, ma se aggiorni la query con 5k righe (molto meno!) resta li` 5 minuti a fare finta di essere crashato prima di riprendersi.
Noto che se il database range diventa piu` piccolo, nelle parte calcolata dove precedentemente c'erano dei valori sostituisce le colonne con #REF! A quanto pare aggiornare un database range non vuole semplicemente dire di sovvrascrivere valori in celle, ma in qualche modo distruggere le celle e inserirne nuove. Questo processo deve triggerare qualche code path worst case dentro Calc...
Intanto sopravivo, ma se qualcuno ha altri buoni consigli sono benvenuti :)
Bye, Chris.