Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [ Delphi ] - Date

  1. #1
    piccaweb
    Guest

    [ Delphi ] - Date

    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:

  2. #2
    imponi un filtro al dataset o prova con un setrange se hai l'indice.

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    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:
    codice:
      Query1.Open;
    Per visualizzare i dati, utilizza un controllo TDBDataGrid collegandolo alla query tramite un componente TDataSource.

    Buona sperimentazione!

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.