Selezione di record che occorrono in una certa data

domenica 02 maggio 2010 - 10.41

nicorvp Profilo | Newbie

Sto cercando di fare una query ad un file di MSProject (esportato in formato Access) per ricavare tutti i record che occorrono in un determinato giorno. Potrei usare:
... WHERE MyDate>=TASK_START_DATE AND MyDate<=TASK_FINISH_DATE
Però ...
Supponendo ad esempio che uno dei record abbia:
TASK_START_DATE 21/01/2010 8.00.00
TASK_FINISH_DATE 25/01/2010 8.00.00
e volendolo recuperare con MyDate=21/01/2010 ... non ci riesco perchè Access suppone che MyDate =21/01/2010 0.00.00 che è prima delle 8.00.
Ho tentato di eliminare dalle date l'ora con DatePart, ma senza successo.
Potete aiutarmi?
Grazie
Nico

DomA Profilo | Expert

Ciao,
per selezionare i record tra due date devi fare così:

DataIn = CDate(DateTimpiPicker1.value) Dim datain2 = DataIn.ToString("MM/dd/yyyy") DataFin = CDate(DateTimpiPicker2.value) Dim dataFin2 = DataIn.ToString("MM/dd/yyyy") "SELECT * FROM TuaTabella WHERE CampoData BETWEEN #" & DataIn2 & "# AND #" & DataFin2

Dove:
DataIn = Data Iniziale
DataFin= Data Finale
>>come vedi ho trasformato le due date nel formato: "MM/dd/yyyy"
perchè access utilizza tale formato.
Fammi sapere come va,
Domenico

nicorvp Profilo | Newbie

Grazie per la risposta, ma io vorrei fare tutto dentro la query per creare una datatable con i soli record che mi interessano. Il motivo è che i db del Project sono a volte molto grossi ed a caricare ad ogni refresh tutti i record impiegherei troppo tempo.
Io pensavo a qualcosa del genere (che però non funziona):
SELECT TASK_UID, ..... , TASK_START_DATE, TASK_FINISH_DATE FROM MSP_TASKS WHERE ? between # "datepart("m", TASK_START_DATE) & / & datepart("d",TASK_START_DATE) & / & Datepart("y",TASK_START_DATE) " # AND # "datepart("m", TASK_FINISH_DATE) & / & datepart("d",TASK_FINISH_DATE) & / & Datepart("y",TASK_FINISH_DATE) " #

DomA Profilo | Expert

Ciao,
ma perchè complicarsi la vita?

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Ho visto che il tuo codice non è scritto correttamente. Prova così:

"SELECT TASK_UID, ..... , TASK_START_DATE, TASK_FINISH_DATE FROM MSP_TASKS WHERE ? between #" & datepart("m", TASK_START_DATE) & "/" & datepart("d",TASK_START_DATE) & "/" & Datepart("y",TASK_START_DATE) & "# AND " & "#" & datepart("m", TASK_FINISH_DATE) & "/" & datepart("d",TASK_FINISH_DATE) & "/" & Datepart("y",TASK_FINISH_DATE) & "#"

>>E' chiaro che al posto del ? devi mettere il nome del campo che contiene le date.
>>Partendo dal 1° esempio dovrebbe essere MyDate.

Comunque se posti il db vedrò di dargli uno sguardo.
A presto,
Domenico

nicorvp Profilo | Newbie

Ho trovato una funzione adatta al mio problema:
WHERE DateValue("21/04/2010 0.00.00")>=DateValue([TASK_START_DATE]) AND DateValue("21/04/2010 0.00.00")<=DateValue([TASK_FINISH_DATE])
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5