Newsgroup: it.comp.lang.delphi
Titolo: Cosa strana con le date

Sto sviluppando un'applicazione
La finisco e la consegno al cliente
Ovviamente mi chiede di aggiungere una cosa che non era stata pattuita (la
solita storia)
Aggiungo e... magicamente il programma fa le bizze
Tutte le selezioni che avevo fatto con le date non vanno piů
Le tabelle Access hanno la data come dd/MM/yyyy, io faccio
 select * from Tabella where Data = DateToStr(data)
e quello mi trova le date in formato MM/dd/yyyy ?!?!?
Allora ho fatto un'applicazioncina di prova collegata ad un nuovo db e
funziona, cambio il collegamento al db che fa lo scemo e continua a fare lo
scemo!
Allora mi dico: Č il db Access!
Apro Access, faccio una query e la fa correttamente!
Ora, non č Delphi, non č Access, cosa non va piů?
PS Delphi6, ADO, Access e non ho cambiato le impostazioni internazionali
--
_________________________________
Edmondo Di Tucci 
snar...@tin.it
www.powernetsi.it
 
edm...@powernetsi.it

 PS Delphi6, ADO, Access e non ho cambiato le impostazioni internazionali
Il sistema operativo è in italiano o in inglese ?
A me è capitato che su win2k inglese succedeva questo (su win2k italiano
nessun problema) :
- nella mia applicazione impostavo :
  ShortDateFormat:='dd/mm/yyyy';
  LongDateFormat:='dddd d MMMM yyyy';
  ShortTimeFormat:='hh:mm';
  LongTimeFormat:='hh:mm:ss';
 Application.UpdateFormatSettings:=FALSE;
- inspiegabilmente (dopo settimane di corretto funzionamento) a volte mi
ritrovavo con alcuni dati visualizzati in formato mm/dd/yyyy
- ho risolto riscrivendo le funzioni StrToDateTime e DateTimeToStr e
forzando ogni volta i valori di ShortDateTime ...
Ciao, Roberto

Per ora vai a cambiare le impostazioni della data nel sistema, tramite il
pannello di controllo, almeno qualcosa funziona, ma appena puoi cambia tutto
il programma non convertendo la data in stringa, ma passando alla query un
parametro di tipo TDateTime.
Se non fai cosě troverai eternamente impicci!!!
Ciao,
  Fabio

 select * from Tabella where Data = DateToStr(data)
Sbagliatissimo.
Quando si lavora in SQL con le date (e non solo) e` necessario usare i
parametri.
La tua query dovrebbe essere:
select * from Tabella where Data = :PData
e poi dovresti assegnare il valore al parametro mediante AsDateTime.
Solo in questo modo puoi astrarre dalle rappresentazioni (a volte astruse,
come nel caso di Access) delle date.
--------------------------------
Inviato via 
http://usenet.libero.it

Ho analizzato meglio la cosa
Succede cosě
Se la data č dubbia tipo 10 settembre la considera 9/10 invece che 10/9
Se č inconfondibile tipo 22 settembre la da come 22/9
Mi spieghi meglio sta cosa dei parametri?


 Mi spieghi meglio sta cosa dei parametri?
Avrai sempre problemi, con le date, se assumi un ordine particolare di
giorno/mese/anno.
Specialmente con Access, in cui c'e' l'astrusa regola di racchiudere le date
tra cancelletti (#).
Se vuoi evitare i problemi, devi usare, appunto, i parametri:
  Q.SQL.Text := 'select * from tabella '+
                'where (data > :pdata1) '+
                'and (data < :pdata2)';
  Q.ParamByName('pdata1').AsDateTime := Date-10;
  Q.ParamByName('pdata2').AsDateTime := Date+10;
  Q.Open;
  ...
