PDA

Visualizza la versione completa : [delphi] dblookup in dbgrid


123delphi321
13-04-2004, 17:07
Ciao a tutti,

ho la solita tabella IBTableMovimenti in cui c'e' un filed Fornitori collegato ad una IBTableFornitori tramite una FOREIGN KEY.

ho inserito un componente dbgrid nel quale visualizzo la tabella movimenti.

quindi automaticamente visualizza i field della suddetta tabella:

id_movimenti
fornitore
data
numero_fattura

ho inserito una nuova colonna al fine di visualizzare il nome del fornitore che devo recapitare nella IbTableFornitori.


ma come devo fare per settare il nome fornitore nella colonna dbgrid?

forse invece di collegare la IbTable nel datasource...devo inserire un componente IBDataset dove eseguo una query con il comando Join?

grazie

alka
13-04-2004, 18:11
Il metodo pi¨ aperto Ŕ forse il seguente:

aggiungi un altro componente IBTable che carichi al suo interno la tabella FORNITORI.

Nel componente IBTable che rappresenta la tabella MOVIMENTI, aggiungi un campo di tipo lookup.
Per creare il campo, fai doppio clic sul componente per far apparire il "Field Editor"; con il tasto destro del mouse seleziona "Add Fields" oppure "Add all fields" per aggiungere tutti i campi.

Si tratta dei "campi persistenti" che vengono creati per ciascun campo fisico presente nella tabella e consentono di personalizzare a livello di applicazione le proprietÓ dei campi dal punto di vista della loro rappresentazione come oggetti Delphi TFields.

A questi campi, che hanno un corrispondente campo fisico, si possono aggiungere altri campi che sono invece calcolati oppure di lookup.

Per definire un campo di lookup, seleziona la voce di menu "New fields" facendo clic con il tasto destro; attribuisci un nome e un tipo di dati appropriato al nuovo campo e imposta la tipologia "Lookup"; si abiliterÓ l'apposito pannello che ti consente di selezionare quale campo della tabella di origine confrontare con il campo di destinazione e quale campo deve essere restituito e visualizzato.

Associando una colonna della DBGrid ad un campo di lookup, viene fornito anche il supporto diretto per l'editing di tale campo attraverso una combobox visualizzata nella cella che consente di scegliere il record della tabella secondaria da associare al campo nella tabella primaria.

123delphi321
09-05-2004, 16:46
ciao a tutti,

riesco a visualizzare i vari valori dei campi lookup.

sto avendo questo problema:

visualizzo nella mia dbgrid un datasetMovimeni in cui sta il field FORNITORE che referenzia un record nella tabella fornitori, e sta anke un field di lookup dove visualizzo automaticamente il nome del fornitore.

...a questo punto mi rendo conto di dover aggiungere un fornitore; lasciando sempre visualizzata la mia dbgrid, apro la form fornitori e procedo con la registrazione del nuovo fornitore. (sull'evento afterpost procedo con DataModule1.IBTransaction.CommitRetaining; al fine di rendere disponibile x tutti il nuovo record.)

successivamente,

nella dbgrid succede che viene accettato il codice fornitore, ma non visualizza il nome del fornitore.
dal momento che viene accettato il codice fornitore e' chiaro che riesce a leggere il nuovo record fornitore inserito.

ma nn riesco a capire xke' non mi visualizza il nome.
x visualizzare il nome devo chiudere e riavviare il programma.

mi sapete aiutare?
a voi e mai successo? come avete risolto?

grazie
fulvio

alka
10-05-2004, 01:06
Originariamente inviato da 123delphi321
mi sapete aiutare?
a voi e mai successo? come avete risolto?
Credo che tu debba chiudere e riaprire il DataSet che utilizzi come "sorgente" per i dati di lookup, presumibilmente la tabella dei FORNITORI.

Ciao! :ciauz:

Loading