ho due query che contengono dei campi numerici, formattati con
separatore delle migliaia e 2 cifre decimali.
Lo so che l'aspetto delle query non dovrebbe essere importante (in
quanto la presentazione dei dati è delegata ai report) ma il cliente per
la tipologia di lavoro che svolge ha bisogno di vedere i dati formattati
anche nelle query (visualizzazione foglio dati).
Bene, dicevo, entrambe le query hanno gli stessi campi e quelli numerici
sono formattati come sopra.
Se però eseguo una query unione su queste, i campi numerici perdono la
loro formattazione e soprattutto non riesco più a impostarla (scompare
proprio l'opzione nei menu).
Nemmeno posso provare con Format() da VBA perché queste query unione
vengono create al volo quando necessario e quindi si vuole evitare di
passare dal codice.
La domanda quindi è: come faccio a impostare il formato dei campi
numerici in una query unione?
Grazie!
Marco
Per usare la funzione Format() non devi usare codice.
Basta usarla per il campo direttamente nella query.
In alternativa puoi provare il tipo di dati Valuta con formato
standard nella tabella. Nella mia piccola prova diverso dei
tipi numerici ha mantenuto il formato in una query union.
--
Ciao
Karl
*********
Access FAQ: http://www.donkarl.com/it
> Per usare la funzione Format() non devi usare codice.
> Basta usarla per il campo direttamente nella query.
Ma intendi nella query union? Perché in quel caso non mi presenta la
finestra "struttura" ma solo il codice SQL.
> In alternativa puoi provare il tipo di dati Valuta con formato
> standard nella tabella. Nella mia piccola prova diverso dei
> tipi numerici ha mantenuto il formato in una query union.
Posso provare per curiosità il tipo valuta (nelle query di origine
quindi) ma effettivamente vorrebbe utilizzare proprio il numerico...
Marco
> Certo, una query "all'interno" sempre consiste dal testo SQL.
> Non importa se la visualizzazione struttura funziona o no. Parlo di:
>
> SELECT Format(Foo,"#,###.00") ecc... FROM Tabella1
> UNION ALL
> SELECT Format(Bar,"#,###.00") ecc... FROM Tabella2
Ah perfetto, non avevo mai usato il Format direttamente nell'SQL.
Lunedì provo, tanto devo solo scrivere per esteso tutti i campi anziché
fare SELECT *.
Grazie della dritta!
> Uso il tipo valuta non solo per soldi ma per molte cose che
> devono essere precisi e non hanno più di 4 decimali.
Buona anche questa.
Sperimento e faccio sapere.
Marco
> Ah perfetto, non avevo mai usato il Format direttamente nell'SQL.
> Lunedì provo, tanto devo solo scrivere per esteso tutti i campi anziché
> fare SELECT *.
>> Uso il tipo valuta non solo per soldi ma per molte cose che
>> devono essere precisi e non hanno più di 4 decimali.
>
> Buona anche questa.
> Sperimento e faccio sapere.
Mi sono creato un file di esempio per provare.
Impostare i tipi di dati come valuta non cambia la situazione, cioè
nella query di unione viene persa la formattazione.
Funziona invece il metodo Format nell'SQL. Ci sono però due problemi:
1. mi sostituisce il nome del campo formattato con "Expr1000". Per
modificarlo devo usare gli alias, ma non posso usare lo stesso nome di
origine pena un riferimento circolare. Invece è necessario che il campo
formattato abbia lo stesso nome...
2. per quanto questa strada risolva il problema, è scomoda poiché se ho
una query con 30 campi devo selezionarli esplicitamente tutti (visto che
non posso usare *). Non c'è davvero altro modo affinché una query unione
mantenga il formato dei dati di orgine?
Grazie!
Marco
Qui invece funziona. L'ho provato in diversi varianti.
Difficile a dire cosa fai di diverso o quale impostazione è diversa.
Se vuoi, puoi creare un download del tuo db di esempio su
un qualsiasi sito, p.e. http://myfreefilehosting.com/.
> Funziona invece il metodo Format nell'SQL. Ci sono però due
> problemi:
> 1. mi sostituisce il nome del campo formattato con "Expr1000". Per
> modificarlo devo usare gli alias, ma non posso usare lo stesso nome
> di origine pena un riferimento circolare. Invece è necessario che
> il campo formattato abbia lo stesso nome...
Per usare un Alias identico devi qualificare il riferimento,
cioè anche scrivere il nome della tabella non solo del campo.
P.e. non
SELECT Format(Campo1,"#,###.00") AS Campo1 FROM Tabella1
ma
SELECT Format(Tabella1.Campo1,"#,###.00") AS Campo1 FROM Tabella1
> 2. per quanto questa strada risolva il problema, è scomoda poiché
> se ho una query con 30 campi devo selezionarli esplicitamente tutti
> (visto che non posso usare *). Non c'è davvero altro modo affinché
> una query unione mantenga il formato dei dati di orgine?
Non che so io.
Sei sicuro che assolutamente devi usare una query unione?
Si puo evitare >90% di tutti query unioni del mondo con una
struttura diversa del db.
> Qui invece funziona. L'ho provato in diversi varianti.
> Difficile a dire cosa fai di diverso o quale impostazione è diversa.
> Se vuoi, puoi creare un download del tuo db di esempio su
> un qualsiasi sito, p.e. http://myfreefilehosting.com/.
> Per usare un Alias identico devi qualificare il riferimento,
> cioè anche scrivere il nome della tabella non solo del campo.
> P.e. non
> SELECT Format(Campo1,"#,###.00") AS Campo1 FROM Tabella1
> ma
> SELECT Format(Tabella1.Campo1,"#,###.00") AS Campo1 FROM Tabella1
> Non che so io.
> Sei sicuro che assolutamente devi usare una query unione?
> Si puo evitare >90% di tutti query unioni del mondo con una
> struttura diversa del db.
Personalmente le query unione le evito come la peste anche perché di
solito (nei casi che seguo) sono dei sotterfugi per aver organizzato
male i dati.
Però se ci sono le devo gestire :(
Visto che mi stanno antipatiche perché anche se formatti i valori
l'uscita è sempre di tipo testuale (e sta cosa non la condivido!) ho
risolto in un'altra maniera.
Faccio una query di selezione sulla query unione... e allora posso avere
i dati numerici *veramente* numerici.
Marco