PDA

Visualizza la versione completa : [ Delphi ] - Date


piccaweb
18-06-2002, 15:28
Ho una data prelevata con un TDateTimePicker e due date presenti in un campo del Db (DATA INIZIO e DATA FINE)!

Il formato delle data nel DB Ú : 05/12/02 (dd/MM/yy)
Mentre nel date time Picker Ú :12/02 (MM/yy)

Vorrei che nel DataSet siano visualizzati tutti i record che hanno il campo DATA INIZIO compreso nel mese selezionato dal DateTimePicker!

Come posso fare...?

Successivamente dovrei far visualizzare l'intervallo dei giorni tra
DATA INIZIO e DATA FINE in una DrawGrid se l'intervallo appartiene al mese selezionato

Come posso fare...?

Spero di essermi spiegato nel migliore dei modi!
Grazie a chi mi aiuterÓ...


:quote:

bDaniele
18-06-2002, 19:05
imponi un filtro al dataset o prova con un setrange se hai l'indice.

alka
19-06-2002, 11:42
Inserisci sul tuo form un componente TQuery e costruisci uno statement SQL che ti prelevi i record compresi tra un intervallo di date. Lo statement sarÓ simile a questo:


SELECT * FROM TABELLA
WHERE (DATAINIZIO BETWEEN :INIZIOPERIODO AND :FINEPERIODO)

In questo modo, hai preparato il DataSet per restituirti i record compresi tra un determinato intervallo di date.
DopodichŔ, ti basta estrarre dal TDateTimePicker il mese selezionato, anche se a questo punto quel controllo visuale non Ŕ pi¨ molto utile, perchŔ potresti usare una comune TComboBox inizializzata con i nomi dei mesi dell'anno. Avendo l'indice del mese, devi determinare il giorno iniziale e quello finale. Cerca le funzioni legate ai tipi TDateTime nella Guida in linea di Delphi per conoscere le operazioni a tua disposizione per i valori data/ora. Per determinare il giorno iniziale del mese, non dovrebbero esserci grossi problemi. Per determinare il giorno finale, ti suggerisco di usare un trucco che pu˛ evitarti molte scocciature: ottieni il giorno iniziale del mese successivo e sottrai un giorno dal risultato.
A questo punto, dovrai inserire gli estremi dell'intervallo usando la proprietÓ ParamByName del componente TQuery:


Query1.ParamByName('INIZIOPERIODO').AsDateTime := inizioPeriodo;
Query1.ParamByName('FINEPERIODO').AsDateTime := finePeriodo;

e, successivamente, aprire la query come una normale tabella:


Query1.Open;

Per visualizzare i dati, utilizza un controllo TDBDataGrid collegandolo alla query tramite un componente TDataSource.

Buona sperimentazione!

Ciao! :ciauz:

Loading