Newsgroup: it.comp.lang.delphi
Titolo: Problemi con date e recupero dati da MySQL

Ciao a tutti,
ho un campo gestito come stringa ma che in realtà contiene una data;
dovrei recuperare dei dati in base alla data inserita ma da software
non compare nulla mentre se copio la stessa query su MySQL, i
risultati vengono visualizzati.
Voi direte, ma perchè non usi un campo Date invece che una stringa? Il
fatto è che in questo modo non devo gestire le differenze dei campi
date, mi spiego meglio, in delphi il campo Date viene visualizzato
all'italiana (DD/MM/YYYY) mentre MySQL all'inglese (YYYY-MM-DD) quindi
ogni volta che faccio operazioni con le date dovrei formattarle nel
modo corretto e mi incasina il tutto. Potrei creare una funziona da
utilizzare che faccia queste conversioni ma trovo più comodo usare una
semplice stringa. Ora, perchè delphi non riesce a recuperare i dati
dalla query? In fin dei conti la data viene formattata in stringa
prima di essere inserita all'interno della query quindi dovrebbe
vederla correttamente. Invece no. Ho anche provato ad usare il LIKE
nella condizione WHERE ma non cambia nulla.
Potete fare un po di chiarezza? Grazie

 date [...]
Scusa, ma a me non sembra proprio una "genialata": invece di capire e 
applicare i metodi corretti per gestire il tipo di dato memorizzato nel 
DB come si deve, facendo eventualmente uso dei parametri, aggiri il 
problema (si fa per dire, visto che poi te ne crei un migliaio in più) 
in un modo del tutto errato e non convenzionale (arrivando magari a 
sprecare pure un mucchio di spazio sullo stesso DB) per ritrovarti alla 
fine con un campo su cui applicherai con difficoltà filtri e condizioni, 
perché si tratta di un dato appartenente ad un certo tipo che viene poi 
memorizzato con un altro, e questo ammesso che tu non abbia avuto per lo 
meno l'accortezza di inserire sottoforma di testo le date in modo 
"pesato", cioè specificando la data nel formato YYYY/MM/DD.
Fossi in te, farei marcia indietro subito... :-)
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)

Ok Marco, mi hai convinto.
Grazie

 dalla query? 
Perché Delphi si aspetta che tu faccia le cose correttamente, ovvero
usando campi di tipo data (e non stringa: non si fa mai) che vengano
mappati sul TDate.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Grazie a tutti dei consigli ma il problema di caricamento dati rimane
e non so perchè.
Allora, su MySQL il campo è formattato come Date e il formato è YYYY-
MM-DD.
Da delphi, all'apertura della maschera, utilizzo questo codice per
recuperare i dati dal DB:
DataProduzione.Date := Date();
  ZConnection1.StartTransaction;
  ZQueryProduzione.Close;
  ZQueryProduzione.SQL.Clear;
  ZQueryProduzione.SQL.Add('SELECT pratica, cliente, materiale,
kg_prodotti, kg_sfrido, mt_lineari, pezzi_piegati, pezzi_calandrati,
tempo_tot, conto FROM magazzino_lodi.tb_produzione WHERE
data_produzione = '+FormatDateTime('yyyy-mm-dd',Date())+'');
  try
    ZQueryProduzione.Open;
    ZConnection1.Commit;
  except
    ZConnection1.RollBack;
    raise
  end;
  if NOT ZQueryProduzione.Active then
    ZQueryProduzione.Active;
Nonostante tutto i dati non vengono recuperati. PERCHE'????
Probabilmente sbaglio qualche concetto di fondo ma onestamente non
capisco.

 data_produzione = '+FormatDateTime('yyyy-mm-dd',Date())+'');
Usa i parametri: ci pensa il provider a gestire tutto.
ACSH


     ZConnection1.Commit;
Fai il commit di una select ? stai usando le transazioni in modo errato.
Perché non usi i clientdataset?



Ma il commit non serve per ripristinare i dati di eventuali query
bloccate per non creare dati errati o mancanti nel DB? Forse nella
select non è necessario ma il commit l'ho interpretato in quel modo.
Ho forse capito roma per toma?
Grazie

 Ho forse capito roma per toma?
Decisamente. Prima di procedere, ti consiglio di cercare in giro
documentazione sulle transazioni e su come vanno usate.


 Ho forse capito roma per toma?
la select, per sua natura, estrae dei dati, non li modifica.
La commit non ha ragione di essere invocata in questo caso.
La commit serve quando sei TU che modifichi i dati e vuoi consolidarli in
quello stesso momento.
-- 
Morde