11/12/2005

Resultado da Consulta num Combobox

Olá amigos!!!!

Eu havia citado esta questão em uma outra dúvida que tive, colocada no tópico Gravação Usuário. O que eu estou tentando fazer, não sei se é possível, é ao consultar um usuário, mostrar num combobox o código do depto. e o departamento que este atua.

Eu tentei fazer isso:

procedure TfrmCadUsuarios.btnProcurarClick(Sender: TObject);
begin
inherited;

// Pesquisa por código

if rdbtnCodigo.Checked = true then
begin
with dmUsuarios.cdsUsuarios do
begin
close;
commandText := ´select * from USUARIOS ´ +
´ where COD_USER = ´ + edtProcurar.Text;
open;

if not isempty then
begin
cbbxUnidade.Items.Clear;
cbbxUnidade.Items.Add(FieldByName(´COD_DEPTO´).AsString + ´ - ´ + FieldByName(´DEPTO´).AsString);
cbbxUnidade.ItemIndex := 0;
...

end;
end;
end;

Desse jeito, qdo digito um código e clico no procurar, os itens da combobox sao apagados (cbbxUnidade.Items.Clear;), deixando apenas o item que foi encontrado, e é exibido o resultado (001 - COMERCIAL), através da linha cbbxUnidade.ItemIndex := 0.

Vamos supor que o objetivo desta consulta seja alterar o depto, aí não há os outros itens. Agora, se não for utilizado nenhum tratamento, não será exibido o resultado, fica em branco, e qdo clica na seta, aparecem todos os itens.

Eu queria que aparecesse todos os itens no combobox, e selecionado apenas aquele associado com o usuário, dando também a possibilidade de escolher outro para fazer uma alteração.

Gostaria de uma opinão de vcs sobre esta questão, se é ou não possível. Espero que tenham entendido minha dúvida.

Um abraço a todos,

Rogério


Roger1976

Respostas

12/12/2005

Adriano Santos

Pelo jeito vc está usando um ComboBox comum, pq não usar um Lookup ? Mais fácil. Vc ´linka´ ele na tabela de departamentos e seu campo na tabela de usuarios, assim poderá alterar normalmente e ainda terá o conteudo da tabela de departamentos.


Responder Citar

12/12/2005

Roger1976

Adriano, eu encontrei a solução, não sei se é a melhor...

No trecho estava assim...

cbbxUnidade.Items.Clear;
cbbxUnidade.Items.Add(FieldByName(´COD_DEPTO´).AsString + ´ - ´ + FieldByName(´DEPTO´).AsString);


e agora ficou assim...

cbbxUnidade.Items.Clear; (eu tirei)
cbbxUnidade.Items.Add(FieldByName(´COD_DEPTO´).AsString + ´ - ´ + FieldByName(´DEPTO´).AsString);
cbbxUnidade.ItemIndex := FieldByName(´COD_DEPTO´).AsInteger - 1;

Obs.: o -1 pq no combobox o índice começa pelo 0, para que pegue do código 1 em diante...

Eu já tentei usar o dblookupcombobox, mas qdo seleciono um item aparece um campo... Como sou iniciante em delphi, o lookup está relacionado com o componente citado acima? Há algum exemplo que vc conheça?

Kra, valeu pela atenção...

Rogério


Responder Citar