Newsgroup: it.comp.lang.delphi
Titolo: caricare i dati su combobox da tabella

Vorrei realizzare un filtro per una tabella.
Per realizarre questo filtro vorrei caricare tutti i valori di un campo in
un combox.
Qualcuno sa darmi una dritta su come posso fare questa operazione, senza
ricorrere al metodo add ?
Grazie e ciao;

 ricorrere al metodo add ?
Potresti utilizzare un controllo *TDBLookupComboBox* provvedendo ad 
impostare solamente le proprietà che implementano la ricerca nella 
tabella di lookup (/ListSource/, /ListField/, /KeyField/) senza 
impostare /DataSource/ e /DataField/.
Tuttavia, si tratta di un uso improprio del controllo o comunque il suo 
sfruttamento per scopi differenti da quelli per i quali il controllo 
stesso è stato progettato.
Presumo che la soluzione migliore in assoluto sia quella di adottare una 
comunissima *TComboBox* e caricare al suo interno gli elementi necessari 
scadendo i record del DataSet di riferimento e aggiungendo, per ogni 
record, il valore del campo desiderato agli elementi della casella di 
riepilogo.
Ciao,
   Marco.
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)

 ha scritto nel messaggio
news:44a90897$1...@newsgate.x-privat.org...


 componente? E' un crimine grave?
No, non mi riferivo ad una questione etica, ma puramente pratica. :-)
Se il controllo si comporta esattamente come desideri, allora puoi 
accettare di utilizzarlo in quel modo, anche se corri dei rischi; ad 
esempio, la correzione e la modifica delle sue funzionalità nel corso 
del tempo potrebbe mutarne l'effetto collaterale (personalmente, se io 
dovessi correggere un bug in modo tale per cui l'uso improprio di un 
controllo cambia o non è più possibile, non mi farei grossi scrupoli, in 
quanto l'importante è che il controllo svolga correttamente il compito 
che gli è stato affidato). Capito cosa intendo dire? ;-)


 record
Anch'io ho sempre usato il componente lookup perchè con il combo normale ho
due problemi:
* caricare tutta la tabella è impensabile
* la selezione dell'elemento non seleziona il relativo record
In verità il secondo è di piutosto semplice soluzione, basta una query, ma
il lookup lo fa da solo.
Per il primo invece non saprei come risolvere.
Tu hai qualche idea?
grazie, giubbe

 Tu hai qualche idea?
Mmm... temo di non aver compreso il problema: cosa intendi con "caricare 
tutta la tabella è impensabile"?
In genere, non dovrebbe porsi questo problema in quanto il vantaggio di 
usare un controllo ComboBox (in generale) diminuisce all'aumentare del 
numero di record.
O meglio, se si raggiunge un certo numero di record, allora preferisco 
fornire un controllo alternativo per la selezione di uno specifico 
record tra questi, con la possibilità di filtrare e ordinare.


 record tra questi, con la possibilità di filtrare e ordinare.
si, lo faccio anch'io.
Io, però, mi riferivo a casi di di 100-200 record. Con lookup ho il
"riempimento" del controllo immediato e altrettanto facilmente ho la
chiave della tabella. Con il combo devo "perdere tempo" per riempirlo e
poi eseguire una query. In genere se i record sono in numero inferiore
anzichè inserire una stringa, inserisco un oggetto contenente chiave e
stringa, in questo modo ho subito gli elementi che mi necessitano senza
interrogare nuovamente il DB.
Mi chiedevo se tu conoscessi un metodo più efficiente per usare i
combo al posto del lookup.
grazie ancora, giubbe

 combo al posto del lookup.
Direi di no. Per usare un normale ComboBox, non mi viene in mente 
nient'altro che creare una query, scandire i singoli record aggiungendo 
i valori da visualizzare (o gli oggetti corrispondenti) nella proprietà 
/Items/. :-|
