Newsgroup: it.comp.appl.access
Titolo: Impostazione tipo dato in una union

Ciao a tutti,
 
Ho una query Union simile:
 
Select Id, Nome, '' As Inizio From Tab1 Union
Select Id, Nome, Inizio From Tab2
 
La query funziona bene, i records Inzizio di Tab1 sono rappresentati 
con una cella vuota, quelli di Tab2 invece contengono un data ma di 
tipo testo. Il mio problema ï¿œ che quando faccio un test sul campo 
Inizio mi restituisce un errore di tipo.
 
Come fare perchï¿œ restituisca un tipo Data?
Ho provato ad invertire l'ordine delle tabelle ma senza risultato.
Grazie a tutti
 
-- 
Greg
 
 


Prova cosï¿œ:
 
Select Id, Nome, Inizio From Tab2
Union
Select Id, Nome, Null As Inizio From Tab1
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
Access Lobby: 
http://www.AccessDevelopers.org
 

 Select Id, Nome, Null As Inizio From Tab1
 
Ciao Karl, e grazie per il tuo intervento.
Devo dire che dopo '' avevo pure pensato di usare Null.
Putroppo va bene nella prima query, ma in quella che risulta dalla 
Union dioventano Null pure i valore sella seconda query, che invece 
questi Null non sono affatto.
 
Continuo a pensare che sarebbe ottima una cosa del genere: CDate('' As 
DataInvio) nella prima query, ma non funziona :(
 
-- 
Greg
 
 

 Select Id, Nome, Null As Inizio From Tab1
 
Ciao Karl, e grazie per il tuo intervento.
Devo dire che dopo '' avevo pure pensato di usare Null.
Putroppo va bene nella prima query, ma in quella che risulta dalla 
Union diventano Null pure i valori della seconda query, che invece 


 non sono affatto.
 > ...
 
Non sono sicuro di capirti.
Hai visto che ho invertito l'ordine delle query?
Cioï¿œ la query _dopo_ UNION dev'essere quella con Null.


 Cioï¿œ la query _dopo_ UNION dev'essere quella con Null.
 
Si Karl, avevo notato la finezza e all'improvviso mi si era accesa la 
lmpadina: il tipo viene ereditato dal campo dell'ultima tabella
Putroppo prevale sempre il tipo string
Oggi riprovo a ragionarci su con piï¿œ calma, con tabelle pulite da zero, 
se risolvo poi verrï¿œ a dirlo.
Perï¿œ grazie come sempre per i tuoi suggerimenti.
 
-- 
Greg
 
 

 lmpadina: il tipo viene ereditato dal campo dell'ultima tabella
 
No, dalla prima query nell'Union che contiene dati.
 
 > Putroppo prevale sempre il tipo string...
 
Penso di capire che giï¿œ nella tabella si tratta di un campo testo invece 
di un campo data. Non puoi cambiare il tipo nella tabella?
In questo caso dipende dal formato della data nel testo.
Puoi provarlo cosï¿œ:
 
Select Id, Nome, CDate(Inizio) AS DataInizio From Tab2
Union
Select Id, Nome, Null From Tab1
 
Stai atento che di solito devi usare un alias diverso dal nome del campo 
("DataInizio" nell'esempio) per non creare problemi.
 
Se non funzioni, mostra esempi di cosa esattamente si trova nel campo.


 Se non funzioni, mostra esempi di cosa esattamente si trova nel campo.
 
Ciao Karl,
ti incollo sotto le query interessate, come  vedi c'ï¿œ un  campo 
chiamato Data di tipo Data (formato data in cifre) poi questo diventa 
Ultimo con un alias e da questo viene calcolato Prossimo, aggiungendo 
un certo numero di giorni al valore di Ultimo.
 
Q1
SELECT Clienti.IdNome, Clienti.Nome, Clienti.Giorni, '' AS Ultimo, '' 
AS Prossimo, Man.TipoMan, Clienti.Attiva
FROM Clienti LEFT JOIN Man ON Clienti.IdNome = Man.IdCli
WHERE (((Man.TipoMan)='Extra' Or (Man.TipoMan) Is Null) AND 
((Clienti.Attiva)=True));
 
Q2
SELECT Man.IdCli, Clienti.Nome, Clienti.Giorni, Max(Man.Data) AS 
Ultimo, 
IIf([ultimo]>#12/12/1980#,DateAdd('d',[giorni],[ultimo]),#12/12/2001#) 
AS Prossimo, Man.TipoMan, Clienti.Attiva
FROM Clienti RIGHT JOIN Man ON Clienti.IdNome = Man.IdCli
GROUP BY Man.IdCli, Clienti.Nome, Clienti.Giorni, Man.TipoMan, 
Clienti.Attiva
HAVING (((Man.TipoMan)='Prog') AND ((Clienti.Attiva)=True));
 
Q3
Select * from Q1 Union Select * from Q2
 
(qui vedo giï¿œ che il campo Prossimo ï¿œ allineato a sinistra invece di 
destra)
 
Q4
Select * from Q3 Where Year(Prossimo) = 2014
 
e qui ottengo: errore dati non corrispondenti nell'espressione criterio
 
Ti ringrazio per la tua pazienza :)
 
-- 
Greg
 
 

 Select * from Q3 Where Year(Prossimo) = 2014
 
A cosa serve chiedere i dati di Q1 per un anno se non c'� una data?
O fai ancora altro con Q3?


 O fai ancora altro con Q3?
 
Scusa Karl, ma per questa via mi sono perso. Ho risolto valorizzando 
nella prima query i campi data con un valore fittizio di tipo data, 
cosi tutto fila liscio, poi alla fine trasformo in null quel campo 
data.
Grazie infinite per il tuo aiuto :)
 
-- 
Greg