Milene, Por que vc não usa um DBComboBox para armazenar as informações antes de enviar para o banco ?
Exemplo: Var QueryGeral : TADOQuery; begin DBCombobox1.Enabled := True; QueryGeral:= Nil; QueryGeral := TADOQuery.Create(QueryGeral); QueryGeral.Connection := Tabelas.ADOConnSGI; QueryGeral.Sql.Add('select codigo from tabela'); QueryGeral.Sql.Add('order by codigo'); QueryGeral.Open; DBCombobox1.Items.Clear; while not QueryGeral.eof do begin DBCombobox1.AddItem(QueryGeral.FieldbyName('codigo').Value,Self); QueryGeral.Next; end; end; A pesquisa fica muito mais rápida creio eu, experimente o código acima e veja se resolve o seu problema. Em 29/01/07, Milene <[EMAIL PROTECTED]> escreveu: > > Olá, > > tenho uma aplicação com Firebird e configurei corretamente minha > DBLookUpComboBox, logo ela grava corretamente. > > Contudo preciso fazer uma busca rápida no clique dela e se não > encontrar o registro fazer um Insert, só que não quero perder o valor > dela e de outra, então armazeno numa variável temporária e após o > insert jogo de volta os dados nelas. > > Essa parte funciona bem quando faço: > > a:=DBLookupComboBox1.ListSource.DataSet.FieldByName('CODIGO').Value; > DataSourceEstoque.DataSet.Insert; > DBLookupComboBox1.KeyValue:=a; > > Ele restaura bem o valor na combo, mas na hora de gravar ele grava > vazio(<null>) no banco. > > Sinto que falta colocar o CODIGO em mais algum lugar, contudo não o > acho. > > Desde já, agradeço a atenção de todos! > > > [As partes desta mensagem que não continham texto foram removidas]