Newsgroup: it.comp.lang.delphi
Titolo: Query e grid

salve a tutti...
Usando delphi5 mi si propone un quesito...
Vorrei inserire in una tabella master dei record tramite una grid 
utilizzando query.
La tabella nella quale devo inserire record ha dei campi che fanno 
riferimento a tabelle di detail.
esempio :
Tabella master : CLIENTI. Campi : id_cliente, Ragione_sociale, id_sede.
tabella detail : SEDI. Campi : id_sede, id_cliente, descrizione_sede
Quale metodo devo utilizzare per consentire alla grid di nserire modificare 
records nella tabella CLIENTI mantendo la lookup per la descrizione sede ?
Al momento ho utilizzato una query su CLIENTI senza JOIN con campo lookup su 
altra query SEDI che filtra le sedi all'evento scroll di clienti, ma 
ovviamente quando il cliente cambia mi spariscono dalla grid le sedi di 
clienti diversi.
Spero di essere stato chiaro  (ne dubito) !!

altra query SEDI che filtra le sedi all'evento scroll di clienti, ma 
Se usi un campo di lookup non devi filtrare tu il dataset nell'evento on 
scroll... lascia che ci pensi Delphi.
--- posted by geoForum on 
http://www.delphiedintorni.it

se nn filtro la query detail , avrň nella lookup tutti gli elementi presenti 
nella table e non solo quelli relativi ad id_cliente... per questo 
sull'evento onscroll ho fatto un filtro
"Stefano F" <s...@nowhere.nwh> ha scritto nel messaggio 
news:5c2krdF...@mid.individual.net...


 sull'evento onscroll ho fatto un filtro
Il master/detail non si implementa in questo modo in Delphi. Cerca su
Google e in questo gruppo (c'è un mio vecchio post a riguardo) come
implementare correttamente una relazione m/d. Ci sono varie tecniche, in
dipendenza dal tipo di accesso ai dati.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Ti ringrazio. Ho gia' cercato su google ma francamente non so bene come 
porre la domanda...Gia' e' stato complicato spiegarlo a voi e mi avete 
capito perche' siete del mestiere ma google tira fuori veramente di tutto...
"Andrea Laforgia" <x...@xx.xx> ha scritto nel messaggio 
news:f3hac0$k5s$1...@news.newsland.it...


>se nn filtro la query detail , avrň nella lookup tutti gli elementi >
Sě, l'idea della lookup č quella. Tra l'altro non capisco bene come sono 
organizzate le tue tabelle, in particolare perché id_sede e id_cliente 
sono presenti in entrambe le tabelle - e quali sono le PK e le FK.
Non ho capito bene cosa devi fare:
- Se ti serve solo visualizzare la sede, e non modificarla meglio una 
join nella query.
- Se devi modificare la sede con solo quelle disponibili per il cliente 
selezionato, allora farlo in una griglia con le lookup standard non č 
possibile, Se filtri il dataset le altre righe della griglia non sanno 
piů che pesci (o sedi) pigliare. Devi usare un metodo diverso, ad 
esempio una combo non dove carichi solo i dati permessi.


 più che pesci (o sedi) pigliare. Devi usare un metodo diverso, ad


Descrizione ( lookup sulle sedi )
Se ho ben capito nella griglia vuoi prima poter selezionare il cliente, 
e una volta fatto questo poter selezionare solo le sedi del cliente 
selezionato, in pratica una soluzione a due livelli, corretto?
Se è questo che vuoi, non mi viene in mente una soluzione semplice con 
le funzioni di lookup standard di Delphi... il lookup mostra l'intera 
origine, e la griglia usa il campo di lookup sia per le righe 
selezionate che quelle no... forse usando due origine diverse, ma non 
credo che la griglia standard te lo lasci fare facilmente.


 credo che la griglia standard te lo lasci fare facilmente.
Che cosa intendi? c'e' qualche componente grid che ha la possibilità d avere 
+ datasource?
"Stefano F" <s...@nowhere.nwh> ha scritto nel messaggio 
news:5c5gs7F...@mid.individual.net...


>Che cosa intendi? c'e' qualche componente grid che ha la possibilità d 
Ci sono tante grid più sofisticate... per quello che vuoi fare tu 
dovresti avere il campo di lookup standard per la visualizzazione, e poi 
riempire opportunamente la lista delle scelte disponibili usando un 
altro dataset filtrato per il cliente corrente, nell'evento di apertura 
della lista a discesa.
Non so se con la griglia normale si può fare facilmente, qui usiamo la 
QuantumGrid e credo si possa fare.


Anch'io uso le quantumgrid 2.2, infatti le lookup sono proprio su campi che 
arrivano da lookup (scusa il bisticcio) di campi fra 2 query distinte. il 
problema e' che quando la query detail tolgo il filtro o la chiudo e riapro 
... nella dxgrid tutti i campi che puntavano alla lookup precedente vengo 
cancellati ( a video ) .. come detto nel db quando salvo (oltre tutto sono 
in una transaction) li vedo perfettamente, infatti rientrando tutto e' 
settato bene ma appena comincio a fare modifiche su d una riga diventano a 
video blank
"Stefano F" <s...@nowhere.nwh> ha scritto nel messaggio 
news:5c7mh1F...@mid.individual.net...


problema e' che quando la query detail tolgo il filtro o la chiudo e 
Dalla query detail - ma in questo caso non è una query detail, è una 
query di lookup(1) - non devi mai aggiungere/togliere alcun filtro. 
Quella deve solo servire alla griglia per visualizzare i record. Devi 
aggiungerne un'altra da utilizzare per i combobox di selezione.
(1) In una relazione master/detail hai una relazione padre/figlio, e 
ogni figlio ha un unico padre (es. testata ordine/ordini) e la FK è 
nella tabella detail, in una relazione di lookup hai una tabella di 
decodifica, la relazione è diversa, ogni record della tabella di lookup 
può essere referenziato da più di un record della tabella principale, e 
la FK è nella tabella principale.
