Newsgroup: it.comp.lang.delphi
Titolo: Evento OnCalcField

Salve a tutti!
Sto lavorando su una form (in Delphi3) in cui c'è un componente
TRxDBComboEdit che deve visualizzare il valore di un indirizzo.
NB. Via, CAP e comune di residenza si trovano in campi diversi di una
tabella Paradox.
Al componente è collegato come DataField un campo di LookUp che
servirà a sommare il valore dei campi e restituire l'indirizzo
completo.
Per assegnare il valore al campo devo gestire l'evento OnCalcFields
della tabella in cui si trovano i campi da sommare. Però non conosco
il comando da usare in queso caso. Potete aiutarmi??
Scusate se ho fatto un pò di confusione...ma non è che una minima
parte della confusione che ho in testa...!! (>_<)
Saluti
  Stefano

il comando da usare in queso caso.
Se ho capito bene quello che devi fare è sufficente che tu vada nell'evento
OnCalcFields e scriva :
NomeCampo := Valore;
Domanda : Devi proprio usare un DBComboEdit ? Personalmente ho
riscontrato che è lento ricercare il valore di un campo attraverso un
componente di questo tipo ed è anche molto brutto.
Quando ho necessità, come la tua, di ricercare un indirizzo o un nome
che si trova in una tabella anagrafica dove normalmente potrebbero
essere presenti migliaia di record preferisco utilizzare una form di
ricerca che va a fare delle query sulla tabella desiderata in base ai
parametri di ricerca impostabili dall'operatore.
Una volta che l'operatore ha trovato il nome o l'indirizzo che stava
cercando riporto i valori che mi servono nei campi del dataset presenti
sulla form di lavoro.
Ciao.
Marco D.T.

Il comando che dovevo inserire è il seguente:
DataSet.FieldByName('CLK_INDIRIZZO').AsString :=
DataSet.FieldByName('DD_VIA').AsString;
In questo modo assegno al campo CLK_INDIRIZZO SOLO il valore del campo
DD_VIA.
Come faccio ad aggiungere anche il valore dei campi DD_PROVINCIA e
NR_CAP?




Ciao
  Stefano

Problema risolto.
Ho creato una variabile di tipo stringa nella procedura chiamata
Indirizzo.
E le ho assegnato i valori dei campi di cui ho bisogno:
Indirizzo := DataSet.FieldByName('DD_VIA').AsString +
                 DataSet.FieldByName('DD_COMUNE').AsString +
                 DataSet.FieldByName('NR_CAP').AsString;
e in seguito assegno al campo CLK_INDIRIZZO il valore della nuova
variabile:
DataSet.FieldByName('CLK_INDIRIZZO').AsString := Indirizzo;
Scusate se non ci ho pensato prima!
A presto!
  Stefano

NR_CAP?
Cosě :
DataSet.FieldByName('CLK_INDIRIZZO').AsString :=
DataSet.FieldByName('DD_VIA').AsString+' '+
DataSet.FieldByName('DD_PROVINCIA').AsString+' '+
DataSet.FieldByName('NR_CAP').AsString;
Ciao.
Marco D.T.

Ok.
Ora se all'interno di questo codice io volessi fare la formattazione
del campo NR_CAP in modo che mi restituisca sempre 5 caratteri al
massimo?

 massimo?
Potresti utilizzare la funzione FormatFloat dopo aver trasformato in
numerico
il campo NR_CAP con funzioni del tipo StrToInt o StrToFloat.
Guarda sulla guida per vedere come utilizzare le funzioni che ti ho
elencato.
Considerazione : Se hai la necessità di controllare che la lunghezza del cap
sia di 5 caratteri c'è un problema di fondo nel programma, infatti dovresti
già avere nella tua tabella anagrafica tutti i CAP formattati a 5 caratteri.
Se così non è, il programma che si occupa dell'inserimento dei dati in
questa
tabella va migliorato per non consentire di inserire valori costituiti da un
numero di caratteri diversi da 5.
Una volta che hai migliorato questo programma non hai più la necessità
di formattare il campo NR_CAP a 5 caratteri perchè conterrà sempre
dei valori formati da 5 caratteri.
Ciao.
Marco D.T.

Ne ho già parlato prima di questo fatto. I CAP nella tabella non sono
formattati altrimenti poi occorre gestire l'inserimento dei dati nei
vari edit per non accettare lettere e altri caratteri.
Comunque la guida spiega come farlo nella sezione Format strings.
Ciao.
  Stefano

vari edit per non accettare lettere e altri caratteri.
E' proprio quello che dicevo che bisognerebbe fare infatti. Un programma
che non controlla l'input dei dati è una vera schifezza !!!
Quindi torno a ripetere che, anzichè preoccuparti di formattare il cap in
visualizzazione, dovresti preoccuparti di controllarne l'inserimento.
Fatto questo devi correggere tutti i cap già presenti nel tuo archivio
facendo in modo che abbiamo sempre e solo 5 caratteri.
Se fai in questo modo farai un buon lavoro, altrimenti il tuo lavoro
risulterà
scadente e, nel frattempo, i 6 mesi passano.
Ciao.
Marco D.T.

Se potessi decidere io il da farsi sarebbe diverso.
Purtroppo qui dentro sono l'ultimo vagone del treno e pur esprimendo la
mia opinione devo limitarmi a fare quello che vogliono gli altri,
'volendo o nolendo', che ne sia capace o meno. E quante volte ho dovuto
sbattere la testa su alcune cose.
Questo è il tirocinio...e i sei mesi passano...ma vadano come vadano.
Ciao
Stefano

In tal caso non possiamo fare altro che "attacare il padrone dove dice
l'asino" !!!
Ciao.
Marco D.T.