Newsgroup: it.comp.lang.delphi
Titolo: Creazione di Campi calcolati

Vorrei poter creare dei campi calcolati a runtime
ma se li creo prima dell'apertura del query allora
il query mi restituirà soltanto i campi calcolati
se invece li creo dopo l'aperture ovviamente và
in errore perchè è un'operazione non valida.
Come posso fare per creare dei campi calcolati
a runtime in modo che il query mi restituisca
sia i campi specificati nel query stesso che
quelli che ho creato?
CB.

falli fare direttamente alla query.
Bye
A.

..in che senso?
CB.
"Alberto Salvati" <x@x.x> ha scritto nel messaggio news:ai8fa3$2kp5$1...@newsreader1.mclink.it...


> ..in che senso?
Che significa "in che senso"?
Tu in una query puoi mettere :
SELECT * FROM TABELLA...
Ma puoi anche mettere:
SELECT (CAMPO1+CAMPO2-CAMPO3)/CAMPO4 AS QUALCOSA FROM...
Bye
A.

..i miei 21 campi calcolati sono il risultato di diverse operazioni
  svolte tra altri 60 campi per il calcolo del fabbisogno di materia
  prima di un'industria.
CB.
"Alberto Salvati" <x@x.x> ha scritto nel messaggio news:ai8kh9$2otd$1...@newsreader1.mclink.it...


 ha scritto nel messaggio
news:mOQ19.145416$Jj7.3...@news1.tin.it...


Quale db usi?
Bye
A.

  ..DB2 e dBaseIV..
CB.
"Alberto Salvati" <x@x.x> ha scritto nel messaggio news:ai8lnf$2pj5$1...@newsreader1.mclink.it...


su db2 hai le stored procedure e poresti fare una cosa, a patto che il
risultato sia a sola lettura....
Puoi crearti una tabella temporanea dove il primo campo contiene un codice
che identifica in modo univoco l'utente che ha fatto l'interrogazione, tipo
indirizzo IP o MacAddress.
Poi ti fai una stored procedure che fa i calcoli e scrive i risultati in
questa tabella temporanea.
Dopodiche, la tua dbgrid legge i records da questa tabella:
SELECT * FROM TABELLATEMP WHERE USERID = CODICEUTENTE
La stored procedure, come prima riga avrebbe questa:
DELETE FROM TABELLATEMP WHERE USERID = CODICEUTENTE
CodiceUtente viene passato come parametro alla SP insieme alle altre
schifezzelle ce ti servono per l'interrogazione.
Riguardo il dbase4, li è un casino..
Non è un ambiente un po eterogeneo?
Bye
A.

 ha scritto nel messaggio news:JnR19.145753$Jj7.3...@news1.tin.it...


 quelli che ho creato.
no.
Bye
A.

Io ti consiglierei (ma devi faer una prova, non sono riuscito a
provare per vedere se funziona) a creare i fielddefs a runtime sia per
i campi calcolati che per quelli reali su un TClientDataset che poi
associ questo alla query tramite un datasetprovider.
Tra l'altro il TClientDataset è molto piu' gestibile della TQuery.
Ciao, Rocco.

   prima di un'industria.
Sono un po' sbalordito: "ventuno" campi calcolati ?
Quando parli di 60 campi, parli del numero di campi coinvolto in una
query sola ? non voglio sperarlo, ma se e' cosi', stai sicuramente
sbagliando qualcosa a livello di design del programma.  E' anche
probabile che la struttura delle tabelle non vada poi cosi' bene, se
ti impone di avere un cosi' grande numero di campi calcolati.  Che io
sappia, cio' che chiedi non si puo' fare, il che non vuol
necessariamente dire che non si possa fare, personalmente non ne ho
mai sentito la necessita' e quindi non ho approfondito la questione.
Ribadisco il mio punto di vista (che puo' essere sbagliato): se hai
bisogno di avere un cosi' grande numero di campi calcolati a run-time,
e' probabile che si farebbe bene a memorizzare quelle informazioni
nelle tabelle opportune.