Nel momento in cui si lavora con un file Excel ed è necessario salvare in formato CSV, ci si può imbattere in alcuni problemi che possono troncare i decimali quando il numero è più lungo di 11 cifre.
Questo accede quando i decimali sono "nascosti" nell'excel nativo, quando abbiamo magari un numero che ha 4 cifre decimali ma decidiamo per comodità di mostrarne solo 2.
Questa modalità è anche default nel tipo di cella "Accounting", in altri casi ad esempio nel formato di cella "Number" possiamo avere 0 decimali mostrati di default.
Prendiamo ad esempio il numero:
123456789,01234
Questo numero viene mostrato di default con una cella tipo "General" come:
123456789
Viene mostrato di default con una cella tipo "Number" come:
123456789,01
Viene mostrato di default con una cella tipo "Accounting" come:
123.456.789,01
(nella versione inglese di Excel i punti e le virgole sono ribaltati)
Nel momento in cui salviamo il file in formato CSV, notiamo come i valori dei numeri prendono ciò che è mostrato, per cui nel primo caso ("General") andremo a perdere tutti i decimali, negli altri 2 casi perderemo gli ultimi 3 decimali.
Un metodo che ho trovato per ovviare al problema è quello di salvare il numero con un apex davanti. Questo trasforma il numero in testo, e permette di salvare il numero così come ci serve:
'123456789,01234
Attenzione. Non è sufficiente trasformare il tipo di cella, diciamo da number a text, perchè in quel caso verrà mostrato il valore che è già contenuto nella cella, cioè:
123456789 --> da "General" a "Text"
123456789,01 --> da "Number" a "Text"
123.456.789,01 --> da "Accounting" a "Text"
Grazie!
29 ottobre, 2013
28 ottobre, 2013
Joomla su Hosting Aruba Windows
Riporto qui una vecchia discussione che avevo postato su Giorgiotave (http://www.giorgiotave.it/forum/joomla/29473-problemi-con-aruba-host-windows-e-joomla.html), che riguarda la possibilità di installare Joomla su un hosting Aruba Windows.
Se leggete in giro per il web si dice che questo non sia possibile, dimostro qui invece che lo sia e come si fa ad impostare correttamente sia l'hosting che il CMS.
Nel caso stavo utilizzando la versione di Joomla 1.7.1, lascio a voi provare con le versioni successive.
Praticamente ho fatto l'upload della cartella di Joomla nel folder remoto, ho tentato di installare ma all'ultimo passaggio continuava a caricare e non terminava mai.
Quello che Joomla tentava di fare, in quest'ultimo passaggio, è creare il file "configuration.php".
Il problema però è che la cartella è in sola lettura, o meglio i file dentro la cartella non hanno accessi sufficienti per scrivere al suo interno.
Per questo motivo bisogna andare nel pannello di controllo del dominio e andare sul "Permission Manager" e dare alla cartella il permesso di scrittura.
Fatto questo, potrete installare Joomla senza problemi.
L'unico altro dettaglio, che però è comune sia all'Hosting Windows che a quello Linux, è che dopo l'installazione anche cliccando sui vari link, articoli ecc., mi rimaneva sempre nella "Home" del sito.
Nel caso si usi quindi host Aruba Windows e si voglia (giustamente) avere un SEO corretto, si dovrà andare a commentare la riga 20 del file htaccess.txt:
da Options +FollowSymLinks dovremo mettere # Options +FollowSymLinks.
Questo dovrebbe assicurarvi un corretto funzionamento dei "Friendly URLs".
Comunque sia, ci sono dei vantaggi nell'uso di Hosting Linux Aruba con Joomla, in quanto è possibile impostare il phpinfo() adatto a Joomla,
mentre alcuni parametri consigliati al momento non sono configurabili con Hosting Windows:
Per quanto riguarda la possbilità dell'installazione automatica di Joomla offerta dall'Hosting Linux Aruba, (il "Linux Installer") quando facevo i test ti permette di installare la versione 1.5.
Se sei interessato ad una versione più aggiornata, devi comunque installartela per conto tuo.
Questo è quello che ho fatto, e che mi ha permesso di installare Joomla su Aruba windows.
Se leggete in giro per il web si dice che questo non sia possibile, dimostro qui invece che lo sia e come si fa ad impostare correttamente sia l'hosting che il CMS.
Nel caso stavo utilizzando la versione di Joomla 1.7.1, lascio a voi provare con le versioni successive.
Praticamente ho fatto l'upload della cartella di Joomla nel folder remoto, ho tentato di installare ma all'ultimo passaggio continuava a caricare e non terminava mai.
Quello che Joomla tentava di fare, in quest'ultimo passaggio, è creare il file "configuration.php".
Il problema però è che la cartella è in sola lettura, o meglio i file dentro la cartella non hanno accessi sufficienti per scrivere al suo interno.
Per questo motivo bisogna andare nel pannello di controllo del dominio e andare sul "Permission Manager" e dare alla cartella il permesso di scrittura.
Fatto questo, potrete installare Joomla senza problemi.
L'unico altro dettaglio, che però è comune sia all'Hosting Windows che a quello Linux, è che dopo l'installazione anche cliccando sui vari link, articoli ecc., mi rimaneva sempre nella "Home" del sito.
Nel caso si usi quindi host Aruba Windows e si voglia (giustamente) avere un SEO corretto, si dovrà andare a commentare la riga 20 del file htaccess.txt:
da Options +FollowSymLinks dovremo mettere # Options +FollowSymLinks.
Questo dovrebbe assicurarvi un corretto funzionamento dei "Friendly URLs".
Comunque sia, ci sono dei vantaggi nell'uso di Hosting Linux Aruba con Joomla, in quanto è possibile impostare il phpinfo() adatto a Joomla,
mentre alcuni parametri consigliati al momento non sono configurabili con Hosting Windows:
Direttive
Safe Mode
Display Errors
File Uploads
Magic Quotes Runtime
Register Globals
Output Buffering
Session Auto Start
Safe Mode
Display Errors
File Uploads
Magic Quotes Runtime
Register Globals
Output Buffering
Session Auto Start
Raccomandati
Off
Off
On
Off
Off
Off
Off
Off
Off
On
Off
Off
Off
Off
Attuali
Off
On
On
Off
On
On
Off
Off
On
On
Off
On
On
Off
Per quanto riguarda la possbilità dell'installazione automatica di Joomla offerta dall'Hosting Linux Aruba, (il "Linux Installer") quando facevo i test ti permette di installare la versione 1.5.
Se sei interessato ad una versione più aggiornata, devi comunque installartela per conto tuo.
Questo è quello che ho fatto, e che mi ha permesso di installare Joomla su Aruba windows.
25 gennaio, 2010
Out of Memory incident
Ci siamo trovati ad affrontare recentemente un problema di OutOfMemory che ha creato non pochi problemi alla società per cui lavoro.
Abbiamo analizzato l'andamento della memoria con diversi strumenti, abbiamo notato che questo errore ricorreva quando la memoria per il processo superava i 1,2 Gb, mentre la memoria attesa era 1,8Gb.
Alla fine dell'analisi, abbiamo scoperto che ciò era dovuto ad un flag, il large address aware, che non era stato aggiunto all'eseguibile.
Se avete un problema simile, controllate il vostro eseguibile, il problema potrebbe semplicemente essere questo!
17 gennaio, 2008
ORA-01410: invalid ROWID
Da qualche tempo sono tornato a lavore alacremente su un linguaggio, il PL-SQL, molto versatile ma anche complicato. Il mio lavoro è quello di scoprire e correggere dei bug di codice, e ultimamente mi sono trovato di fronte a questo errore.
Bene se uno conosce un pò Oracle sa che è presente un campo "nascosto" chiamato ROWID, è un campo che identifica la riga nella tabella.
Ecco questo è un campo particolare, perchè se noi facciamo una select ad esempio
SELECT emp_id FROM emp WHERE emp_id = 0
e non esiste nessun campo con emp_id = 0 sappiamo la query semplicemente non ci restituisce nulla. Se al contrario facciamo:
SELECT emp_id FROM emp WHERE ROWID = 0
e non esiste nessun campo con ROWID = 0 (in realtà poi il ROWID è un campo con valore esadecimale) la query al contrario ci restituirà l'errore ORA-01410.
Solitamente se usiamo il ROWID dobbiamo selezionarlo da una tabella e cercarlo nella stessa, altrimenti potremmo o avere questo errore oppure avremo dei dati incongruenti, e non saprei dire quale dei due sia la cosa peggiore.
Bene se uno conosce un pò Oracle sa che è presente un campo "nascosto" chiamato ROWID, è un campo che identifica la riga nella tabella.
Ecco questo è un campo particolare, perchè se noi facciamo una select ad esempio
SELECT emp_id FROM emp WHERE emp_id = 0
e non esiste nessun campo con emp_id = 0 sappiamo la query semplicemente non ci restituisce nulla. Se al contrario facciamo:
SELECT emp_id FROM emp WHERE ROWID = 0
e non esiste nessun campo con ROWID = 0 (in realtà poi il ROWID è un campo con valore esadecimale) la query al contrario ci restituirà l'errore ORA-01410.
Solitamente se usiamo il ROWID dobbiamo selezionarlo da una tabella e cercarlo nella stessa, altrimenti potremmo o avere questo errore oppure avremo dei dati incongruenti, e non saprei dire quale dei due sia la cosa peggiore.
20 novembre, 2007
Errore 3704 VB
Nello specifico questo errore mi è capitato su una macro VBA su Excel, quando tentavo di fare l'operazione:
Nel caso specifico adoRS è un recordset con dei dati presi da un DB Oracle, per la precisione versione 9.2.0.1.
Il fatto strano era che su un pc mi funzionava mentre su un altro no, utilizzando lo stesso codice. A questo punto un dubbio deve sorgerti spontaneo, e cioè se è tutto configurato a dovere o almeno se è tutto configurato "uguale",almeno per la parte che ti interessa; nel caso specifico infatti avevo 2 versioni diverse degli ODBC Driver, ho dovuto utilizzare quindi gli stessi identici files. La stessa cosa si può presentare con Java, in questo caso avremo invece una roba del tipo:
java.sql.SQLException: [Microsoft][Driver Manager ODBC] Funzione SQLAllocHandle
del driver su SQL_HANDLE_ENV non riuscita.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
Sapete java deve fare più il fico.. Comunque per ovviare al problema è semplice, installate in tutti i pc gli stessi ODBC/JDBC driver.
Ecco qui i link alle risorse Oracle:
JDBC
ODBC
Le risorse sono gratuite, è però necessario creare un account sul sito Oracle per poterle scaricare.
Cells (6, a). CopyFromRecordset adoRS
Nel caso specifico adoRS è un recordset con dei dati presi da un DB Oracle, per la precisione versione 9.2.0.1.
Il fatto strano era che su un pc mi funzionava mentre su un altro no, utilizzando lo stesso codice. A questo punto un dubbio deve sorgerti spontaneo, e cioè se è tutto configurato a dovere o almeno se è tutto configurato "uguale",almeno per la parte che ti interessa; nel caso specifico infatti avevo 2 versioni diverse degli ODBC Driver, ho dovuto utilizzare quindi gli stessi identici files. La stessa cosa si può presentare con Java, in questo caso avremo invece una roba del tipo:
java.sql.SQLException: [Microsoft][Driver Manager ODBC] Funzione SQLAllocHandle
del driver su SQL_HANDLE_ENV non riuscita.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
Sapete java deve fare più il fico.. Comunque per ovviare al problema è semplice, installate in tutti i pc gli stessi ODBC/JDBC driver.
Ecco qui i link alle risorse Oracle:
JDBC
ODBC
Le risorse sono gratuite, è però necessario creare un account sul sito Oracle per poterle scaricare.
01 ottobre, 2007
Creare files Zip con java
Allora java di per sè è un brutta bestia, ma come vedremo non lo sarà mai abbastanza. Quando infatti tentiamo di creare un file zip, ci troveremo di fronte a diversi problemi. Possiamo ovviare a questi problemi utilizzando lo script che si trova a questo indirizzo:
http://www.exampledepot.com/egs/java.util.zip/CreateZip.html
Oppure ancora meglio possiamo utilizzare come partenza quello script, e come arrivo il mio:
import java.util.zip.*;
import java.io.*;
public class CreateZip {
public CreateZip(String cartella,String[] arrayDiNomiFiles) {
// These are the files to include in the ZIP file
String[] filenames = new String[arrayDiNomiFiles.length];
//qui io inizializzo l'array con i files da inserire nell'archivio, a me
//serviva perchè avevo già un array con dei nomi ma i nomi files
//erano diversi anche se standardizzati
for (int i=0;i 0) {
out.write(buf, 0, len);}
// Complete the entry
out.closeEntry();
in.close();}
// Complete the ZIP file
out.close();} catch (IOException e) {
//la si può gestire anche in altri modi,ma è importante che non si lasci vuoto
System.out.println(e);}}}
Il sito exampledepot è utile ma diciamo che alcuni piccoli pezzi celi siamo dovuti trovare da soli. L'importane è comunque essere riusciti nel nostro intento.
http://www.exampledepot.com/egs/java.util.zip/CreateZip.html
Oppure ancora meglio possiamo utilizzare come partenza quello script, e come arrivo il mio:
import java.util.zip.*;
import java.io.*;
public class CreateZip {
public CreateZip(String cartella,String[] arrayDiNomiFiles) {
// These are the files to include in the ZIP file
String[] filenames = new String[arrayDiNomiFiles.length];
//qui io inizializzo l'array con i files da inserire nell'archivio, a me
//serviva perchè avevo già un array con dei nomi ma i nomi files
//erano diversi anche se standardizzati
for (int i=0;i
out.write(buf, 0, len);}
// Complete the entry
out.closeEntry();
in.close();}
// Complete the ZIP file
out.close();} catch (IOException e) {
//la si può gestire anche in altri modi,ma è importante che non si lasci vuoto
System.out.println(e);}}}
Il sito exampledepot è utile ma diciamo che alcuni piccoli pezzi celi siamo dovuti trovare da soli. L'importane è comunque essere riusciti nel nostro intento.
04 settembre, 2007
Gestione della clipboard con Excel VBA
Al contrario del post precedente, possiamo notare come viene gestita la clipboard dal VBA di excel:
Visual Basic For Application
Microsoft Excel 11.0 Object Library
OLE Automation
Microsoft Office 11.0 Object Library
Microsoft Forms 2.0 Object Library
Microsoft ActiveX Data Objects 2.7 Object Library
Set mydata = New DataObjectNaturalmente, è necessario che siano abilitati i riferimenti, andando su strumenti -> riferimenti e flaggando dove necessario, nel caso io ho flaggato:
mydata.SetText STRINGA
mydata.PutInClipboard
Visual Basic For Application
Microsoft Excel 11.0 Object Library
OLE Automation
Microsoft Office 11.0 Object Library
Microsoft Forms 2.0 Object Library
Microsoft ActiveX Data Objects 2.7 Object Library
Gestione della clipboard con Access VBA
Mi sono trovato ultimamente ad utilizzare access per un piccolo progetto e, nel momento del debug,mi sono reso conto che il vba access non ha una gestione della clipboard. A cosa potrà servire la clipboard se hai a disposizione un database, direte voi. Certo la domanda è legittima, ed in effetti si può anche evitare di usarle,inserendo i valori necessari all'interno di una cella, ma per questioni di praticità,efficienza e velocità, mi sono reso conto che la maniera più comoda di gestire il debug del sql di access è proprio la copia della stringa contenente il sql nella clipboard. Cmq poco importa a cosa possa servire questa funzionalità, l'importante è sapere che si può fare e come sono le modalità per farlo.
Per prima cosa dobbiamo creare un nuovo modulo, anche dalla finestra oggetti, e successivamente inserire questo codice che io sinceramente non ho nemmeno letto:
Fatto questo nel codice della nostra form dovremmo scrivere:
dove STRINGA è il nome della variabile di tipo String che contiene il nostro sql.
Fatto questo basterà creare una query farlocca nel quale inserire di volta in volta il sql presente nella clipboard cliccando il nostro ben conosciuto ctrl+v.
Per prima cosa dobbiamo creare un nuovo modulo, anche dalla finestra oggetti, e successivamente inserire questo codice che io sinceramente non ho nemmeno letto:
Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) _Il tutto al di sotto della scritta Option Compare Database.
As Long
Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) _
As Long
Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, _
ByVal dwBytes As Long) As Long
Declare Function CloseClipboard Lib "User32" () As Long
Declare Function OpenClipboard Lib "User32" (ByVal hwnd As Long) _
As Long
Declare Function EmptyClipboard Lib "User32" () As Long
Declare Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, _
ByVal lpString2 As Any) As Long
Declare Function SetClipboardData Lib "User32" (ByVal wFormat _
As Long, ByVal hMem As Long) As Long
Public Const GHND = &H42
Public Const CF_TEXT = 1
Public Const MAXSIZE = 4096
Function ClipBoard_SetData(MyString As String)
Dim hGlobalMemory As Long, lpGlobalMemory As Long
Dim hClipMemory As Long, X As Long
' Allocate moveable global memory.
'-------------------------------------------
hGlobalMemory = GlobalAlloc(GHND, Len(MyString) + 1)
' Lock the block to get a far pointer
' to this memory.
lpGlobalMemory = GlobalLock(hGlobalMemory)
' Copy the string to this global memory.
lpGlobalMemory = lstrcpy(lpGlobalMemory, MyString)
' Unlock the memory.
If GlobalUnlock(hGlobalMemory) <> 0 Then
MsgBox "Could not unlock memory location. Copy aborted."
GoTo OutOfHere2
End If
' Open the Clipboard to copy data to.
If OpenClipboard(0&) = 0 Then
MsgBox "Could not open the Clipboard. Copy aborted."
Exit Function
End If
' Clear the Clipboard.
X = EmptyClipboard()
' Copy the data to the Clipboard.
hClipMemory = SetClipboardData(CF_TEXT, hGlobalMemory)
OutOfHere2:
If CloseClipboard() = 0 Then
MsgBox "Could not close Clipboard."
End If
End Function
Fatto questo nel codice della nostra form dovremmo scrivere:
ClipBoard_SetData STRINGA
dove STRINGA è il nome della variabile di tipo String che contiene il nostro sql.
Fatto questo basterà creare una query farlocca nel quale inserire di volta in volta il sql presente nella clipboard cliccando il nostro ben conosciuto ctrl+v.
Ciao sono Diego mi presento
Ciao sono Diego mi presento piacere Diego. Sono un programmatore, il linguaggio che uso in maniera specifica è il PLSQL, ma spesso mi ritrovo ad usare altri linguaggi e programmi come VBA o Java, e dato che mi trovo a volte in situazioni difficili, dal punto di vista della programmazione, e che riesco con gran fatica, solamente attraverso ricerche magari di giorni sul web o su libri di programmazione, a risolvere, apro questo blog per condividere alcune soluzioni che ho trovato e che per alcuni potranno sembrare banali ma che per altri possono richiedere parecchio tempo per essere risolti. Magari invece uno viene qui trova la soluzione ai soui problemi,anzichè dover girare per forum o gruppi per ore arrabattandosi con pezzi di codice qui e pezzi di codice li. Oltre a problemi di programmazione indicherò alcuni programmi utili magari sotto windows o sotto linux così che se qualcuno ha problemi può usare quelli per risolverli.
Ciao ci sentiamo presto.
Ciao ci sentiamo presto.
Iscriviti a:
Post (Atom)