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:
codice:
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:
codice:
Query1.ParamByName('INIZIOPERIODO').AsDateTime := inizioPeriodo;
Query1.ParamByName('FINEPERIODO').AsDateTime := finePeriodo;
e, successivamente, aprire la query come una normale tabella:
Per visualizzare i dati, utilizza un controllo TDBDataGrid collegandolo alla query tramite un componente TDataSource.
Buona sperimentazione!
Ciao!