Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [ Delphi ] Filtro Dati

  1. #1
    piccaweb
    Guest

    [ Delphi ] Filtro Dati

    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
    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?

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    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.

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

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

  3. #3
    piccaweb
    Guest
    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:
    codice:
    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?

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Leggi la risposta al problema nell'altro thread.

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

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

  5. #5
    piccaweb
    Guest
    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

  6. #6
    piccaweb
    Guest
    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


  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    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!
    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.