PDA

Visualizza la versione completa : [ Delphi ] Filtro Dati


piccaweb
16-07-2002, 08:54
Ciao!
Ho una tabella ( TTable) con un campo Data Inizio e vorrei che attraverso due DataPickerTime vengano selezionate due date da utilizzare come range per il filtraggio!

Utilizzo qst codice


Filter:='(DataInizio > '+ DateToStr(DateTimeMin.Date) + ')AND (DataInizio < '+ DateToStr(DateTimeMax.Date)+')';
Filtered:=True;


Mi restituisce come errore
Aritmetic in filter expressions not supported

Come mai?

alka
16-07-2002, 09:27
E' probabile che per specificare una valore data/ora serva una notazione particolare. Ad ogni modo, ti consiglio di privilegiare l'utilizzo di query, che sono più performanti dei filtri. La query ti permette di ottenere solo i dati che ti servono (quelli che corrispondo al criterio definito nello statement SQL), mentre i filtri agiscono solo sui record caricati, tutti i record, valutando quali devono essere resi disponibili e quali no.
Se vuoi vedere come parametrizzare il tuo filtro, prova a leggere questo thread (http://forum.html.it/forum/showthread.php?s=&threadid=274038).

Ciao! :ciauz:

piccaweb
16-07-2002, 09:40
Infatti ho usato subito le query ma non riesco a impostare il parametro SQL
Mi spiego meglio: per ogni RadioButton che ho nella form devo assegnare alla fine un comandao SQL alla query in base al Radio selezionato!
Ho inserito una variabile temporanea del tipo TStrings, ma mi restitutisce una errore appena la inizializzo:


var
tmp: TStrings;//definisco il nuo componente
begin
tmp := TStrings.Create;//Creo il componente
try
tmp.text:= ...;
finally
tmp.Free; //Libero le risorse
end;

e mi restutisce l'errore appena compio la prima operazione con Tmp!
Errore alla riga subito dopo:
Abstract Error

Come mai?

alka
16-07-2002, 09:50
Leggi la risposta al problema nell'altro thread (http://forum.html.it/forum/showthread.php?s=&threadid=280202).

Ciao! :ciauz:

piccaweb
16-07-2002, 09:59
Scusami se rompo ancora , ma sembra che i problemi aumentino!
Come fai ad inserire un record in una query?

Io utilizzo il comando insert ma mi dice che il DataSet é Read/Only! :-(

Ho controllato ma il Db non é impostato read Only, anzi con altre tabelle riesco benissimo a inserire e modificare i record ma con qst ultima faccio solo le modifiche e non accetta l'istruzione INSERT!

Devo usare qualche comando SQL particolare?
Lo so che potrei inserire un record usando SQL , ma i campi sono circa 15 e non vorrei incasinarmi nella struttura...

Ciao:ciauz:

piccaweb
16-07-2002, 10:05
Grazie per la StringList, ora funziona... coma mai con TStrings mi dava errore mahh!

Ti ricordi il problema non-Blob columns to perform this operation ...mi hai consigliato di impostare una proprietà Default ma non la trovo!

Help

:ciauz:

alka
16-07-2002, 10:17
Per aggiornare una query inserendo nuovi record, devi associare ad essa un componente UpdateSQL...si tratta comunque di scrivere gli statement SQL di aggiornamento e inserimento per poterli applicare alla query (leggi la Guida in linea per maggiori informazioni).
Per quanto riguarda il problema BLOB, non mi sembra di aver nominato una proprietà Default...l'unica cosa che ti ho suggerito è di eliminare il valore inserito nella caratteristica Valore predefinito nei campi all'interno del database Access, utilizzando direttamente Microsoft Access.
La TStrings non funzionava poichè, come ti ho spiegato, è astratta. Prova a vedere il codice sorgente della classe in Delphi: noterai che pochissimi metodi hanno un'implementazione vera e propria; si dicono appunto astratti. Tali metodi devono essere ereditati da classi discendenti, come TStringList, ed implementati adeguatamente. Questo permette ad un componente di utilizzare TStrings potendosi interfacciare a tutte le classi discendenti, poichè la loro struttura è uniforme (alcune classi, diverse da TStringList, ottimizzano ad esempio la memorizzazione e l'ordinamento delle stringhe).

Ciao! :ciauz:

Loading