PDA

Visualizza la versione completa : [DELPHI] TDBGrid: ottenere numero riga/ID_Record


gabcaly
02-01-2009, 15:41
Salve,

da una TDGrid con una lista di Records vorrei ottenere al click di una cella di una X riga
il riferimento numerico della riga/Record per aprire una nuova Form di editing del record stesso.

In pratica ogni riga dovrebbe salvare un ID univoco del record per poi poterlo richiamare dal DB MySQL.

una sorta di indexFieldName ?


grazie

123delphi321
02-01-2009, 17:41
per visualizzare i dati in una dbgrid hai bisogno di un datasource, tale datasource e' colegato alla tua sorgente dati... quindi basta che nel record della tua sorgente dati ci sia anche il field id

gabcaly
02-01-2009, 17:52
non mi sono spiegato bene, scusami.

ho già un DBGrid popolato da Records, mi serve solo una procedura per cliccare sulla riga ed ottnere come riferimento un ID del Record per poi processarlo in una finestra secondaria.

Tutto qui. grazie comunque

123delphi321
02-01-2009, 18:01
mi fai vedere la query con cui popoli la dbgrid?

gabcaly
02-01-2009, 18:11
utilizzo ODBC driver per connettermi al server esterno MySQL per popolare la Grid.
Ho TTable, un DataSource e TDBGrid. niente codice vero e proprio.

La Grid ottiene i nomi campo dalla TTABLE.


http://helzel.interfree.it/page.jpg

123delphi321
02-01-2009, 18:18
allora,... da come capisco tu nella dbgrid visualizzi una tabella, e tale tabella ha un field che si chiama id.

adesso devi lavorare sull'evento ondbclick della dbgrid.
nel momento che posizioni il mouse su una riga della dbgrid hai automaticamente il campo id a disposizione.....

non so come e' la sintassi esatta per catturare quel campo (io utilizzo componenti diversi dai tuoi), ma suppongo qualcosa del genere ''trubrica.fieldbyname.....''

gabcaly
03-01-2009, 15:30
Ho risolto facendo una accurata ricerca su siti esteri.
In pratica ottenere un valore Field ROW è semplicissimo:



showMessage(MyDBGrid.DataSource.DataSet.Fields[0].asString);


dove valore numerico di Fields[] ritorna il valore stringa/numero del campo corrispondente.
Ottentuo questo, è possibile ad esempio, estrarre l'ID del Record e magari processarlo in una finestra secondaria.


Grazie lo stesso.

alka
13-01-2009, 10:35
Per ottenere il valore di un campo, è sufficiente leggerlo dal DataSet (tabella, query, ecc.) a cui il TDBGrid è collegato attraverso il componente TDataSource: il record selezionato sul componente è sempre il medesimo evidenziato nella griglia, poiché ogni interazione sui controlli data aware producono generalmente un'azione sul DataSet sottostante.

Nel caso in esame, comunque, se si tratta di implementare un meccanismo del tipo "testata/dettaglio" (master/detail), ci sono altri metodi più automatici ed efficaci per farlo, che non richiedono nemmeno di scrivere codice (fai una ricerca per ottenere qualche informazione in più).

Ciao! :ciauz:

gabcaly
13-01-2009, 12:21
per contribuire alla "conoscenza" potevi indicare maggiori dettagli, sarebbe stato gratificante apprendere metodi diversi.

Ti ringrazio lo stesso, ne farò cultura personale. Appena posso farò le ricerche che mi hai suggerito.

alka
13-01-2009, 12:26
Originariamente inviato da gabcaly
per contribuire alla "conoscenza" potevi indicare maggiori dettagli, sarebbe stato gratificante apprendere metodi diversi.
Avrei potuto, se avessi avuto il tempo. Un po' di comprensione... :)
Inoltre, non è conveniente che io riscriva quanto è già stato scritto estensivamente altrove.

Fai la ricerca che ti ho suggerito, poi - se non trovi nulla - chiedi.

Ciao! :ciauz:

Loading