Newsgroup: it.comp.appl.access
Titolo: Operazioni su date in query

Ciao a tutti,
 dovrei eseguire una differenza di orari in una query...l'unico problema è
nel formato della differenza, manca  quello data ora...e come risultato ho
un numero decimale.
Come posso fare, per visualizzare in formato data ora ?



dim i as date
dim j as date
i= #10:55:00 AM#
j= #11:55:00 AM#
debug.print "E'passato: ";  Format((j-i), "hh:nn")
Ricordati che col QBE ci vuole punto e virgola (;) a posto della
virgola (,) nell'espressione format.
Ciao. Fabrizio.
(Access XP (sp2), Win ME, P4 1Ghz, 320 RAM)

virgola (,) nell'espressione format.
Questo serve nel caso usi QBE per definire la query.


se ho tab1:
ora part    data
ora arriv    data
e query importa la tab1
ora part        ora arriv        tempo:[ora arriv]-[ora part]
raggrupp        raggrupp        espressione
                                            E' qui che va il format ?
Ma non so come scriverlo con i campi ok per VBA.
Ciao



Un secondo che cerco di capire .... numble ... fammi riguardare il QBE
che non mi ricordo più come si chiamanno le righe ( suppongo che siamo
nel QBE , vero?)
(riga)campo  |   ID       |  ora part | ora arriv | ESPRESSIONE FORMAT
___________|_______|_______|________|____________________
(riga)tabella  | tabella1 | tabella1 | tabella1  | 
___________|_______|_______|________|____________________
(riga)formula | raggr.   |  raggr.     |   raggr.    | espressione
________________________________________________________
(riga)............| .....
Non capisco il raggrupamento , ma di sicuro hai le tue ragioni.
******
Supponendo che la tabella si chiami : Tabella1
supponendo che i campi di Tabella 1 siano : ID (contatore , chiave
primaria), ora part (Data/ora), ora arriv (Data/ora).
SQL:
SELECT Tabella1.ID, Tabella1.[ora part], Tabella1.[ora arriv],
Format(([ora arriv]-[ora part]),"hh\:nn") AS espr
FROM Tabella1
GROUP BY Tabella1.ID, Tabella1.[ora part], Tabella1.[ora arriv];
Questo l'ho fatto col QBE , ma lo messo giù così per chiarezza , se no
hai voglia a capirsi sulle righe , i campi, etc.
Ciao e buona fortuna.
N.B. Format(([ora arriv]-[ora part]),"hh\:nn") 


Ok,,mi hai suggerito un'altra possibile soluzione e cioè andare in struttura
query; evidenziare il campo incriminato;  fare proprietà e nella casella
formato digitare "hh:nn"...
Funziona
Ora nasce un problema quando ho orari di partenza tipo 22.30.00 e di arrivo
ex. 0.20.00 dove il risultato della differenza è falsato in
22.10..!!!!!!come posso evitare che succeda...hai qualche consiglio?

 formato digitare "hh:nn"...
Lascia una parte del messaggio a cui rispondi (la più significativa e che si
chiama quoting), rispondendo poi DOPO il quoting stesso o i mezzo
Antonio



Così di botto mi viene in mente di fare una iif per controllare se ora
part è minore di ora arriv , è da lì fare operazioni di tipo diverso a
seconda dei casi: chiudo il collegamento è provo a vedere se funzia.
DOMANDA: metti solo gli orari oppure anche le date ? ( la prima mi
sembra più logica ) 



wrote:

Antò è il nostro censore , non te la prendere e segui i suoi consigli
: sono sempre utili.


sembra più logica ) 
Vorrei premettere una cosa  a scanso di equivoci: in questo momento
sto ristudiando Pascal e, siccome sono uno studente diligente , mi sto
studiando anche IF ... THEN .... ELSE ( ....per la milionesima volta
.... ), per cui mi è venuto in mente subito il costrutto IIF per
questo motivo : magari c'è qlc di meglio.
Cmq:
________________________________________________
 IIf([ora part]<[ora arriv];Format(([ora arriv]-[ora
part]);"hh:nn");Format(((24-[ora part])+[ora arriv]);"hh:nn"))
________________________________________________
****attento se fai copia/incolla che non vi siano parti troncate , è
meglio se copi a manina santa *****
Stai attento : 
-se usi tale sintassi in uno script SQL o in codice VBA devi cambiare
il "punto e virgola" in "virgola".
-Si presuppone che i viaggi durino meno di 24 ore ( al contrario
parliamo di transsiberiana o treni italiani molto lenti :-)  ),
altrimenti a quel punto è necessario anche indicare il giorno della
partenza e quello dell'arrivo.
-Ho riproposto l'espressione Format : cmq penso che cambi poco , da
qlc parte devi dichiarare il formato del campo.
Ciao e fammi sapere.
p.s. non so perchè mi sono messo in testa che parliamo di treni? ;-)


Ho provato....ma forse per la mia poca dimestichezza ho qualche problemino.
Ho la solita finestrella pop-up che si apre chiedendomi il contenuto dei
campi orario arrivo e partenza  quando lancio la query.
Mi potresti, per favore, spiegare bene come inserirle all'interno della
query
La mia estrae L'orario arrivo come Max di una tabella orario che gli ho
dato, e l'orario part come il Min .
I minuti effettivi sono definiti come Minuti:[Orario arr]-[orario part]
(come espressione)
Fino a qui funziona. Quando inserisco l'iif mi chiede il valore dei campi.
Dove sbaglio ??



Devi postare la stringa SQL : devo vedere esattamente cosa hai fatto ,
perchè così, altrimenti , ci giriamo intorno per dei giorni.
Per trovare la stringa SQL : apri la query, visualizza -->
visualizzazione SQL , dopodichè fai copia incolla e posti il tutto sul
NG. 
Cmq, a naso , direi che se hai fatto una query di raggrupamento , il
nome dei campi sarà diverso da quello che ti ho postato , per Es.:
SELECT 
	Tabella1.ID, 
	Min(Tabella1.[ora part]) AS [MinDiora part], 
	Max(Tabella1.[ora arriv]) AS [MaxDiora arriv], 
	IIf(Min([ora part])<Max([ora arriv]),((Max([ora
arriv])-Min([ora part]))),(((24-Min([ora part]))+Max([ora arriv]))))
AS espr
FROM 
	Tabella1
GROUP BY 
	Tabella1.ID;
Questo script SQL funge (almeno sui pochi dati di prova che ho usato)
e come noterai il costrutto IIF è uguale a quello che ti ho postato
precedentemente , ma cambiano soltanto i riferimenti ai campi che
questa volta sono di raggruppamento .
Cmq posta lo script , che gli diamo un'occhiata.
