Newsgroup: it.comp.lang.delphi
Titolo: Parametri SQL

Salve a tutti!
Avrei bisogno di un aiuto per quanto riguarda l'utilizzo di un
componente query in Delphi3.
Dopo aver settato l'istruzione SQL ho bisogno di creare un nuovo
parametro e l'ho fatto in questo modo:
     QySaldi.SQL.Add('VALUES(:SALDO PROGRESSIVO)');
Il valore di questo parametro in un record deve corrispondere alla
somma di due campi (IMPORTONETTO , IMPBUONO)
Come faccio a valorizzarlo?
 Grazie!
Ciao!!
Stefano M.

La questine è ancora più complessa...Non mi rimproverate ma nel
precedente post ho commesso un errore!
In realtà il campo PROGRESSIVO non deve essere la somma dei due campi
citati sopra, bensì la somma fra il campo IMPBUONO dello stesso record
e lo stesso campo PROGRESSIVO del record precedente.....
Per fare un esempio:
IMPBUONO       PROGRESSIVO
       6                            6
      10                          16
       -6                          10
       20                          30
ecc... ec.....
Spero di essere stato abbastanza chiaro.
Grazie della pazienza!
Ciao a tutti!!!
Stefano M.

>precedente post ho commesso un errore!
Mi dispiace, ma per poterti aiutare ho bisogno di ulteriori dettagli.
Cosa deve fare la query ? Deve aggiornare una tabella ?
In caso affermativo, la query aggiorna la stessa tabella da cui
estrae i dati o deve andare ad aggiornare una tabella diversa ?
Perchè non parti dall'inizio e ci spieghi in breve cosa stai cercando
di fare ?
Se ho capito bene ciò che stai facendo, forse la soluzione adottata
non è la migliore e non penso nemmeno che possa condurre a dei
risultati.
Resto in attesa i ulteriori notizie ...
Ciao.
Marco D. T.

Dunque, la funzione deve creare un file excel contenente i dati di un
dataset.
Ho utilizzato un componente TQuery con la seguente richiesta:
SELECT DATAINSERIMENTO, NUMEROBADGE, NOMEBADGE,  IMPORTONETTO,
IMPBADGE, IMPBUONO
FROM VENDITAT
WHERE DATAINSERIMENTO BETWEEN :DATAINIZIO AND :DATAFINE
ORDER BY NUMEROBADGE, DATAINSERIMENTO
Mediante DataSource ho collegato il DataSet ad una TdxDbGrid in modo da
poter poi convertirla in file di excell. E funziona!
Oltre ai campi selezionati dalla query (che non faccio altro che
copiarli nel dataset),ho bisogno però di un altro campo (PROGRESSIVO)
che viene calcolato in base al criterio citato nel mio precedente post.
Spero di essere stato chiaro....
Stefano M.

>che viene calcolato in base al criterio citato nel mio precedente post.
Ora sembra chiaro quelli che ti serve.
Ti dico un modo semplice per risolvere la cosa, anche se forse non è la
cosa migliore che si possa fare.
1) Aggiungere un campo calcolato alla query chiamato PROGRESSIVO
2) Dichiara una variabile di tipo Extended o comunque numerica che preveda i
decimali
    (Esempio Var PROGRESSIVO:Extended;)
    Azzera la variabile prima di aprire la query.
3) Nell'evento CalcField della tua query valorizza il campo progressivo così
:
PROGRESSIVO:=PROGRESSIVO+QySaldi.FieldByName('IMPBUONO').AsFloat;
QySaldi.FieldByName('PROGRESSIVO').AsFloat:=PROGRESSIVO;
Nel momento in cui verrà aperta la query il campo PROGRESSIVO assumerà il
valore desiderato e lo
potrei utilizzare nella griglia per l'esportazione in excel o per farci
qualunque altra cosa.
Non ho provato l'esempio quindi potrebbe anche contenere qualche errore,
comunque credo che almeno
a livello logico dovrebbe funzionare tutto.
Ciao.
Marco D.T.

E' la cosa che avevo pensato anch'io, però vengono fuori dei numeri un
pò alti e non sono riuscito a capire come mai.
In ogni caso grazie mille!
Stefano M.

pò alti ...
(Battutaccia !!!) Se i numeri vengono alti prova a ridurre il font !!! :).
Parlando seriamente invece, in questo caso dovresti interrogare la tabella
del database e vedere il contenuto del campo IMPBUONO.
Probabilmente in questo campo sono contenuti dei valori altissimi.
Cancella il contenuto della tabella e inserisci solo pochi record, mettendo
manualmente in IMPBUONO dei semplici valori tipo 10,20,30 ecc ...
e poi esegui la tua query.
Se hai ancora problemi allora vuol dire che è sbagliata la query.
Ciao.
Marco D.T.

Sono riuscito!
L'istruzione va bene, ne ho provata anche un' altra ma il risultato è
lo stesso.
L'unico problema è che nel primo record il risultato era
sbagliato...di conseguenza anche gli altri risultavano errati ma la
procedura la eseguiva correttamente.
Per ovviare a questo problema ho inserito un istruzione mediante la
quale imposto direttamente il valore del campo progressivo del primo
record = IMPBUONO, tanto non esiste nessun progressivo precedente da
sommare.
Ciao
Stefano M.