Newsgroup: it.comp.lang.delphi
Titolo: SELECT con campo data

eseguendo il seguente codice:
Query1.Active := FALSE;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM Activity');
Query1.SQL.Add('WHERE Data>=#03/03/2003# AND Data<=#03/03/2003#');
try
  Query1.Active := TRUE;
  showmessage(inttostr(Query1.recordcount));
except
end;
Mi ritorna sempre ZERO anche se ci sono record (lo stesso comando
fatto direttamente in ACCESS funziona).
Questa sintassi mi ha sempre funzionato, dove sbaglio?

 fatto direttamente in ACCESS funziona).
Fatto direttamente in Access? La query restituisce un RecordSet, quindi 
non necessariamente il numero di record (che in alcune situazioni 
potrebbe non essere corretto).
Usa piuttosto:
"
   Query1.Active := FALSE;
   Query1.SQL.Clear;
   Query1.SQL.Add('SELECT COUNT(*) FROM Activity');
   Query1.SQL.Add('WHERE Data>=#03/03/2003# AND Data<=#03/03/2003#');
   try
     Query1.Active := TRUE;
     showmessage(inttostr(Query1.Fields[0].AsInteger));
   except
   end;
"
Oppure, aggiungi:
"
Query1.Last;
"
prima di testare RecordCount.
Se però ti interessa solo il numero di record e non i dati, usa /COUNT/: 
molto meglio ricevere dal server 4 byte che un set di dati.
Ciao,
Gianluca

 Questa sintassi mi ha sempre funzionato, dove sbaglio?
Attenzione che l'sql che passi via OLEDB ad access deve avere il mese e
l'anno scambiati di posizione. Purtroppo non e' facile prendere delle
stringhe sql da access e importare in delphi senza avere problemi di
conversione tra tonnellate di parentesi quadre e sintassi strane quali ad
esempio i nomi delle espressioni se non utilizzi "espressione AS nomeexpr".
Ergo, controlla la sintassi e prova cambiare date, scegli intervalli piu'
ampi.
Facci sapere qual'era il problema.
-- 
Morde. 
M-List di icld: 
http://it.groups.yahoo.com/group/icld/

 ampi.
Prova a cercare con gg in borland.public.delphi.database.ado per "access
date".
Ci sono tanti thread utili.


 Query1.SQL.Add('WHERE Data>=#03/03/2003# AND Data<=#03/03/2003#');
Cambia il nome del campo, non usare DATA, ma qualcos'altro.
Fidati, poi mi ringrazierai.
-- 
Jax
====
Studiate come se non doveste raggiungere la conoscenza, ma come se
doveste perderla.

Risolto,
ho cancellato tutti i dcu e ricompilato tutte le unit e ora funziona,
naturalmente non dovevo solo contare i campi, ho scritto così per
semplicità
Grazie
Gianluca

 semplicità
In futuro, sappi che se chiamerai un campo DATA, con access+ado avrai
problemi.
-- 
Jax
====
Fai un programma che anche un idiota può usare, e solo un idiota vorrà
usarlo.

Jax
	Ciao
	MassimoB
 
---------------------------
http://www.massimobeschi.it/

Ma, ineddetti sono anni che lavoro con ACCESS e non ho mai avuto
problemi con i nomi dei campi, piuttosto oracle è più delicato,
comunque grazie per la segnalazione.
Gianluca

 Che tipo di problemi? 0_0
Scusami. Ovviamente la mia memoria ha fatto cilecca, come al solito.
Meno male che c'è google... a volte non saprei cosa fare senza.
 
http://tinyurl.com/8okvd
-___-
-- 
Jax
====
L'esperienza è quel che ci rimane dopo aver perso tutto il resto.

 Meno male che c'è google... a volte non saprei cosa fare senza.
A questo proposito Jax volevo segnalarti questa possibilità: se hai access
2003, tramite il menu' Strumenti->Opzioni->Tabelle/Query, nel riquadro in
basso, "Sintassi compatibile SQL Server (ANSI 92)" puoi spuntare il
checkbox "database corrente".
Dovrebbe finire il problema delle parentesi quadre, l'sql ansi 92 e' uno
standard. :-)
Ciao!
-- 
Morde. 
FAQ di icld (beta-version): 
http://icld.altervista.org
 


 spuntare il checkbox "database corrente".
Grazie, avevo fatto un giro nelle opzioni quando l'ho installato, e appena
l'ho visto l'ho subito flaggato ;)
-- 
Jax
====
Il reciproco amore fra chi apprende e chi insegna è il primo e più
importante gradino verso la conoscenza. (Erasmo da Rotterdam)