Newsgroup: it.comp.lang.delphi
Titolo: Link tra tabelle?

Hello, boys (and girls)!
Ho un grande piccolo problema e spero che qualcuno possa darmi qualche
suggerimento: sto cimentandomi per la prima volta con i componenti DB del
BDE (Delphi3 standard) e non riesco a linkare tra loro due tabelle.
In dettaglio la situazione è questa:
ho una tabella con dei nomi ed un codice numerico per ogni nome; in un'altra
tabella ho un codice numerico (che identifica il nominativo sulla prima
tabella) ed un campo contenete un indirizzo.
Su di una form ho inserito due componenti TTable collegati alle due tabelle
precedenti, più un componente TDataSource collegato con la tabella degli
indirizzi; inoltre ho una DBGrid (collegata al DataSource e su cui vengono
visualizzati correttamente i record degli indirizzi) ed un TDBEdit, linkato
al DataSource sul quale vorrei far visualizzare il nome relativo
all'indirizzo selezionato sulla DBGrid; il problema è che nella proprietà
"DataField" mi compaiono solo i campi della tabella degli indirizzi (cioè
quella collegata al DataSource).
Ho fatto vari tentativi (Referential integrity; link Master-Detail; incidi
vari) ma nessuno ha risolto il problema.
Grazie anticipate!
Silvio
. Spero di esser


Se non ho capito male, devi avere 2 datasource. La prop MasterSource e'di
tipo TDataSource.
Inoltre la tabella deve avere un indice il cui primo campo deve essere
quello che usi per stabilire il collegamento tra le 2 tabelle.
Se poi non ho capito un saciccio, fammelo sapere...! :D
Saluti
AS
"Se è Microsoft non funziona"


Ti ringrazio per il suggerimento, ho provato a fare come dici ma non ho
risolto il problema.
Cerco di spiegarlo meglio:
su una form ho una DBstringGrid sulla quale vengono visualizzati
(correttamente) i record della tabella con gli indirizzi; quello che vorrei
fare è avere anche un DBedit nel quale compaia il nome della persona alla
quale si riferisce l'indirizzo selezionato (questo dato è su un'altra
tabella chiamata "nomi").
Quello che vorrei è attivare un link tra la tabella "indirizzi" e quella
"nomi" e poter accedere tramite un DBEdit ai campi della tabella "nomi" pur
avendo selezionato nel DataSource la tabella "indirizzi":
TTable1.TableName :=indirizzi.db;
TTable2.TableName :=nomi.db;
DataSource1.DataSet = TTable1;
DBEdit1.DataSource := DataSource1;
Tabella "indirizzi.db"                               Tabella"nomi.db"
-------------------------------------      ---------------------------------
CodiceIndirizzo (Numero) *
CodiceNome (Numero)    ========> CodiceNome (numero) *
Indirizzo (alfanum)                                  Nome (alfanum)
* = campi "key"
Sono convinto che sia una cosa banale ma mi sta veramente facendo impazzire
:-s !
Silvio

Ciao Silvio
se ho ben capito ti serve un collegamento master detail tra le tabelle
indirizzi e nomi.
prima di tutto metti due componenti TTable uno per gli indirizzi e uno per i
nomi con i rispettivi DataSource.
Quindi table.indirizzi e datasource.indirizzi
           table.nomi e datasource.nomi.
nelle proprieta' della table.indirizzi devi mettere il
masterSource=datasource.nomi e
master.field=codice.numero(della table nomi)
A questo punto avrai una relazione tra le tabelle e se nella form dove hai
la dbgrid metti un DBEdit con il nome (dalla Table.nomi) quando selezioni
una riga
di indirizzo vedrai comparire anche il nome corrispondente.
NB. i codici.nome delle due tabelle devono corrispondere ed essere univoci e
possibilmente in chiave sulle due tabelle
Ciao e spero di essere stato di aiuto
                                 Gigi