Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    34

    [Delphi] -- Media di campi autocalcolati

    Salve ragazzi,
    ho una tabella con un campo autocalcolato, in particola supponendo che i campi della tabella sono a,b,c,d e d è il campo in questione ho d = (a+ b)*c. Mi servirebbe la media del campo d. Ho provato attraverso una query, ma non riesco ad ottenere il valore....è come se non trovasse il campo in questione (Presumo dipenda dal fatto che il campo è autocalcolato). Qualcuno saprebbe darmi una mano... ...grazie tanto.. :tongue: ...ciao.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Non è possibile ottenere il valore aggregato che desideri attraverso una query, poichè lo statement SQL che la costituisce viene eseguita sul database server o comunque usando il driver per database...ma il campo calcolato sul quale devi basare la tua elaborazione non appartiene nativamente alla struttura del DB...ma dal tuo messaggio vedo che questo lo hai capito anche tu.

    Purtroppo, credo che l'unica soluzione sia quella di scandirsi la tabella e, per ciascun campo calcolato, eseguire la somma per dividerla successivamente per il numero di record reperiti, a meno che tu non abbia a disposizione una base dati - che non hai specificato - in grado di supportare i campi calcolati all'interno della struttura del DB.

    Magari scrivi con maggiore precisione gli strumenti che utilizzi; ad esempio, accedi al DB attraverso il motore BDE? con quali componenti (TTable, TQuery...)? che formato di database usi?

    Forse c'è modo di trovare qualche soluzione più pulita.

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

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    34
    Ciao Alka,
    innanzittutto grazie per la tua gentile disponibilità.. :tongue:
    Hai ragione non sono stato molto chiaro nel messaggio.. ...
    Ora provvedo a chiarire la mia situazione:

    -Accesso al db attraverso motore BDE e utilizzo tabelle paradox
    -Gli oggetti utilizzati sono : TTable, TDataSourse(Per visualizzare i dati in una DBGrid, ma credo non sia importante) e TQuery per effettuare la query in questione.

    Spero di essere stato abbastanza chiaro..
    Ciao a presto.

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Sei stato chiaro. La richiesta di informazioni aggiuntive era necessaria per suggerire eventuali soluzioni.

    Purtroppo, rimango dell'idea che ho già espresso nel messaggio precedente...

    Credo che la cosa migliore sia quella di calcolare il valore all'interno di Delphi. Usando BDE e Paradox, potresti utilizzare direttamente la TTable o la TQuery che usi per visualizzare i dati (in una griglia?), scandendola al momento dell'apertura (o quando vengono modificati i dati) per calcolare il valore della media.

    Per navigare all'interno di Query e Table (sono entrambi dei DataSet) puoi usare i metodi First, Last, Eof, Bof, Next e così via.

    L'effetto collaterale che otterresti sarebbe quello di vedere la griglia scorrere mentre il tuo codice esplora i dati per calcolare la media, poichè la griglia è associata - tramite il TDataSource - al DataSet, query o tabella che sia.

    Per evitare questo effetto, che ha anche lo svantaggio di rallentare le operazioni, potresti richiamare il metodo DisableControls della query o tabella per inibire l'aggiornamento dei Data Control associati, effettuare la scansione dei record dal primo all'ultimo estraendo i valori del campo calcolato e facendo la media, richiamando alla fine del processo il metodo EnableControl per ripristinare l'aggiornamento dei controlli visuali associati alla tabella dati.

    Spero ti bastino queste indicazioni teoriche, perchè non ho purtroppo il tempo di produrre esempi codificati, ma sulla Guida trovi altre informazioni sulle classi, sui metodi e le proprietà citati.

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

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    34
    Si mi bastano sei stato chiarissimo!!!...
    Anche io avevo pensato ad una soluzione di questo tipo...l'unica cosa di cui ho paura è che in questo modo il codice diventi particolarmente "pesante" quando i record in tabella sono molti.. ...Comunque più tardi implemento questa via e poi ti faccio sapere.
    Ti ringrazio...ciao M.

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.