Newsgroup: it.comp.lang.visual-basic
Titolo: AIUTO!!! Diff tra DATE

ciao a tutti...dovrei risolvere il seguente problema: data una data
devo importare dei documenti aventi la data non più vecchia di 30
giorni...quindi devo calcolarmi la data di inizio che è uguale a: data
odierna - 30 giorni.
qualcuno potrebbe aiutarmi???
P.S. è molto urgente per il lavoro...grazie!

 ha scritto nel messaggio
news:1122644979....@g14g2000cwa.googlegroups.com...

qualcuno potrebbe aiutarmi???

Ti sei praticamente già risposto da solo nel subject: Diff ... DATE =>
DateDiff()
Bye
Raf

non esattamente capito...quale sintassi dovrei usare?

 qualcuno potrebbe aiutarmi???
Date per sapere che giorno e' oggi
DateDiff per fare la differenza
groups.google.it
 per leggere i post di *oggi* che trattano
lo stesso argomento
-- 
ciao, hal

 non esattamente capito...quale sintassi dovrei usare?
quella che e' spiegata sul tuo libro di visual basic
-- 
ciao, hal

 DateDiff per fare la differenza
Dissento. :-)
Nel caso è molto meglio un DateAdd.
Mi aspetto già l'obiezione: "ma io devo togliere trenta giorni, non
aggiungerli!" :-)
(ovviamente non da parte di hal :-)
-- 
Salutoni
Sergio
Per rispondere... togli il group dall'indirizzo
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 (ovviamente non da parte di hal :-)
Grazie della fiducia :-)
-- 
ciao, hal

vi ringrazio per le risposte ma non ci sto capendo molto se devo essere
onesto...

in poche parole...avete del codice da postare?
non ho un libro di vb... :-(

 aggiungerli!" :-)
No, in realtà l'obiezione è "ma io devo confrontare due date e stabilire se una
è non più vecchia di 30 gg. rispetto ad oggi", non è necessario ricavare la data
di 30 giorni fa...
If DateDiff("d", DataDocumento, Date) <= 30 Then
    ImportaDocumento
End If
In tutti questi anni ho imparato che i confronti tra date è *sempre* meglio
effettuarli con DateDiff, anziché con i soliti operatori <>=, non sia mai che ci
scappi una conversione implicita di VB...
Ouh... tutto questo IMHO, naturalmente!
Bye
Raf

purtroppo devo calcolarmi la data di 30 giorni fa per forza...perchè
devo eseguire una select (per la selezione dei record da importare) in
una tabella di almeno 200000 record...

 P.S. è molto urgente per il lavoro...grazie!
Se questo problema ti blocca non oso pensare che razza di lavoro tu stia 
facendo ;)
Ciao

non sono un programmatore, ma un semplice impegato in banca. ho la
passione per queste cose...
cmq mi potreste postare un po di codice?

 una tabella di almeno 200000 record...
Forse non mi sono spiegato bene...
Invece di fare:
    Data30GiorniFa = DateAdd("d", -30, Date)
e poi
    If DataDocumento >= Data30GiorniFa Then
        ImportaDocumento
    End If
Io suggerivo direttamente:
    If DateDiff("d", DataDocumento, Date) <= 30 Then
        ImportaDocumento
    End If
Se devi filtrare dei record in Access, le cose non cambiano in quanto DateDiff č
una funzione presente anche in Access:
SELECT * FROM Documenti
WHERE DateDiff('d', [DataDocumento], Date()) <= 30
Ti sembra piů chiaro ora?
Ciao
Raf

 non ho un libro di vb... :-(
Maurizio, in tutta sincerità...
Noi ti si può anche "postare" il codice per ottenere una data precedente
di trenta giorni dall'attuale. Non è difficile:
dim d1 as date
dim d2 as date
d1 = date
d2 = dateadd("d", -30, d1)
(che poi mica sono sicuro, qui non ho mica l'intellisense :-)
Ma poi, una volta che hai ottenuto quella data, sai come effettuare
l'interrogazione al db?


 WHERE DateDiff('d', [DataDocumento], Date()) <= 30
Inecepibile.
Se non fosse che non capisco perchč effettuare una operazione ventimila
volte invece che una sola.


a posto fatto...grazie!

 volte invece che una sola.
Ovviamente, con Access non ci si devono aspettare ottimizzazioni o altro...
In effetti concordo che per migliorare le prestazioni conviene precalcolarsi i
valori di confronto ed effettuare i confronti con <=.
Ciao
Raf

 passione per queste cose...
Allora non può essere "molto urgente per il lavoro".
Ciao