spero di non aver capito male quello che devi fare
secondo me potresti usare una TStringList in cui ci metti tutti i valori presi dal DB
se in una TStringList ad esempio una riga è: "VALORE1=DECODIFICA 1"
allora al variare del valore del combo puoi fare qualcosa tipo:
var sl: TStringList;
s: string;
begin
...
s := 'VALORE1'; // valore chiave nel combo
Edit1.Text := sl.Values[s]; // in Edit1.Text ci va il valore 'DECODIFICA 1'
...
end;
leggi qua http://www.freepascal.org/docs-html/rtl/classes/tstrings.values.html (http://www.freepascal.org/docs-html/rtl/classes/tstrings.values.html)
in poche parole:
1) devi caricare le 9000 righe nella TStringList, formato "chiave=valore"
3) devi caricare nel combo le 9000 chiavi
2) nell'OnChange del Combo metti l'istruzione:
Edit1.Text := sl.Values[ Combo1.Text ];
Se i tempi sono troppo lunghi forse dovresti usare un dataset...