Newsgroup: it.comp.lang.delphi
Titolo: Problema con TField

Ho un piccolo problema, e non riesco a ottenere una doluzione.Spero che
qualcuno sia cosí gentile da risolverlo per me.
Ho due tabelle che hanno entrambe un Field "DATUM".
Ho un Query con Sql (Interbase):  "select * from Table1, Table2" e una
DbGrid collegata.
Le colonne di tale DBgrid sono quindi:  DATUM e DATUM_1.
Cosa mi serve:
Per es. Cliccando sul titolo della seconda colonna voglio ottenere il
nome originale del Field, quindi non DATUM_1 ma DATUM (se possibile
anche il nome della tabella: Table2.Datum)
Sono stata abbastanza chiara?
Ringrazio anticipatamente, Paola.

Ciao Paola,
Paola Calovi ha scritto:

quasi sicuramente si, è solo che io non uso interbase e nemmeno SQL.
Comunque per rispondere alla tua domanda non credo sia richiesto questo
requisito.
Quando clicchi sul titolo della colonna di un TDBGrid, puoi gestire l'
evento "OnTitleClick" che nel suo parametro ti riporta una variabile di tipo
TColumn, cioè la colonna cliccata.
Visto che tramite la colonna puoi risalire al campo associato, puoi
scrivere:
var Campo:String;
begin
  Campo:=Column.Field.FieldName;
  ......
  ......
e dovresti risolvere in pieno questo primo problema.
Per il secondo problema (il nome della tabella) dovrei far almeno una prova.
Per ora dai un' occhiata alla proprietà DataSet del TField.
Quindi prova a scrivere:
NomeTabella:=
Column.Field.DataSet.Name
;
se non funziona scrivi nuovamente, io non ho mai usato questa riga di
codice. (magari ho scritto una cavolata mostruosa )
Ti saluto........ciaooooo !!!!
Antonio Tarolla
BSSoftware Tips Mailing - List Support

   ......
Grazie mille Antonio per avermi risposto!
Purtroppo cosí non funziona.
Ottengo che Campo = DATUM_1, mentre io voglio ottenere DATUM.
Anche per quanto riguarda il nome della  tabella non va,  perché facendo come
hai scritto ottengo il nome della Query.
In tutti i casi sei stato molto carino. Grazie ancora. Ciao.


 anche il nome della tabella: Table2.Datum)
Ciao! Premettendo che non so assolutamente nulla di dbase e dei componenti
in questione...
ok... a quanto ho capito a te interessa il "nome originale" del field ...
che non dovrebbe essere "ABCDEF_XXX", ma solo "ABCDEF" ... giusto ?
 se si, allora (se le var ritornate sono di tipo string o pchar ... come
credo) potresti fare :
var s : String;
begin
  s := Column.Field.FieldName;  // copiata dalla risposta di Antonio Tarolla
!!
  delete (s, pos('_'),maxint);   // elimina ogni carattere da '_' in poi.
end;
se no ... mi dispiace ... non ho capito il problema allora ! :(
Spero funzioni... Ciao!
Davide DG

In tutti i casi sei stato molto carino.
grazie :-)))
Ti saluto....ci si sente !!


 Davide DG
Ciao Davide, hai proprio capito bene il mio problema! Inoltre la tua idea é
buona e penso di fare cosí come dici tu.
Diciamo peró che mi piacerebbe ugualmente una soluzione che vada sempre bene per
ottenere questo benedetto " Nome originale" del Field .
Per es. Se ho un SQL del tipo: "select inziodata as Data1 ..." La tua soluzione
(anche se per altri casi utile) non va piú bene.
Io lavoro abbastanza "Database" e ogni tanto mi creo componenti. A volte peró
realizzo una componente di cui inizialmente sono soddisfatta e poi salta fuori
il caso particoloare in cui  non va piú bene. Cosí provo a cercare la soluzione
che soddisfi tutti le situazioni.
In tutti i casi mille grazie e buona notte. Paola.

che soddisfi tutti le situazioni.
comunque ci dovrebbe essere una soluzione.
Ieri sera era tardissimo e non ho fatto più nulla, però oggi ci voglio
provare.
Se proprio non ci si riesce, si potrebbe fare un' array di campi, ma questa
la lascio come ultimissima soluzione !!
Ti saluto......ciao !!


Ciao Antonio! Che  ci sia una soluzione puó anche essere, ma non credo che sia
cosí facile da trovare. Io non ho torvato nessuna funzione in delphi per
ottenere ció che voglio. Ti scrivo perché non voglio che diventi matto per colpa
mia!
 In ogni caso io mi sono arresa. Diciamo che mi sono addattata a una soluzione
un pó bruttina. All´inizio ho pensato di utlizzare l´idea di Davide, ma poi mi
sono resa conto che in un paio di casi non va piú bene. Cosí ho aggiunto alla
mia componente una proprietá di tipo Tstrings in cui scrivo il nome originale
dei Tfield  dove Fieldname <> "OriginalFieldname".
Ciao e grazie ancora. Paola.


 anche il nome della tabella: Table2.Datum)
MyGrid.Columns.Items[x].Field.Origin ?

Carlo Bosich wrote:

Ciao Carlo.  Avevo giá notato questa proprietá e pensavo di aver finalmente
la soluzione.
Purtroppo non funziona, oppure sono il che non utilizzo giustamente questa
proprietá. Ho provato con una Query un po´ complicata e
quando richiedo MyGrid.Columns.Items[x].Field.Origin, mi da l´origine di un
altro field. Sono io che sbaglio qualcosa? Ciao e grazie di
nuovo.Paola.

...
|Ho un piccolo problema, e non riesco a ottenere una doluzione.Spero che
|qualcuno sia cosí gentile da risolverlo per me.
|
|Ho due tabelle che hanno entrambe un Field "DATUM".
|
|Ho un Query con Sql (Interbase):  "select * from Table1, Table2" e una
|DbGrid collegata.
|Le colonne di tale DBgrid sono quindi:  DATUM e DATUM_1.
|
|Cosa mi serve:
|Per es. Cliccando sul titolo della seconda colonna voglio ottenere il
|nome originale del Field, quindi non DATUM_1 ma DATUM (se possibile
|anche il nome della tabella: Table2.Datum)
|


 altro field.
prova a postare il sorgente della query e il  codice che accede alla colonna
e relativo field, dimmi anche che versione di delphi usi.
comunque se ti restituisce il nome originale di un altro field probabilmente
sbagli solo a calcolare x.