DBLookupComboBox

Delphi

04/10/2004

Desculpe-me todos, mas já pesquisei (pesquisar) o termo em questão e foi-me retornado diversas msg postas/respondida, porém nenhuma atendeu à minha questão. Por isso solicito a gentileza dos amigos para o seguinte problema:

Sou iniciante na linguagem DELPHI e a minha maior dificuldade é encontrar material, traduzido para o português, que descreva, minuciosamente, as funções e os componentes do DELPHI.
No momento estou iniciando o desenvolvimento de um aplicativo e, de cara, estou “num beco sem saída” pelo fato de não saber usar, corretamente, o componente DBLookUpComboBox.
Em um form, inseri um DBLookUpComboBox baseado em uma Table que contém 4 campos: idEspecie; nEspecie; Gestação e vUtil. Quando escolho um item, por exemplo Bovino, gostaria que os campos (valores) Gestação e vUtil fossem inseridos nos DBEdit_Ges e DBEdit_vu, respectivamente.
Como fazer isso?
Sem mais para o momento, antecipadamente agradeço.


Ananias Duarte

Ananias Duarte

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

04/10/2004

Crie um campo Lookup no seu componente DataSet (TTable?) para cada um dos campos associados ao campo chave e o DBLookupCombo ao selecionar o valor do campo chave, automaticamente irá atualizar os outros


GOSTEI 0
Ananias Duarte

Ananias Duarte

04/10/2004

ai meu Deus, que vergonha!
Desculpem a minha ignorância, mas não consegui entender a sua msg.
O que eu preciso é usar os dados (valores) que estão no campo ´gestação´ e ´vidautil´ do registro retornado pelo DBLookUpComboBox. Por isso é que gostaria que esses valores fossem inseridos nos respectivos Edits.
Desculpem-me se não me expressei bem.
obrigado


GOSTEI 0
Gandalf.nho

Gandalf.nho

04/10/2004

Você sabe o que é um campo Lookup? É um campo que puxa informação de outra tabela. Por ex: crie um no seu Table vinculado ao campo nEspecie de outro Table e o DBlookupCombo deve ter como origem o mesmo table usado para buscar o dado do campo. Quando você puxar o campo ID, automaticamente atribuirá o nome tb.


GOSTEI 0
Ananias Duarte

Ananias Duarte

04/10/2004

Valeu, amiga gaúcha. Muito obrigado pelas dicas, porém continuo sem resolver o meu problema. :oops:
abraços


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

04/10/2004

Colega,

Você pode utilizar também o evento OnDataChange do DataSource que está ligado ao dbLookUpComboBox, verificar o estado do DataSet e fazer a atribuição se estiver em dsEdit ou dsInsert.
Adicione mais detalhes e se possível um fragmento do código para que possamos trabalhor sobre o mesmo.


GOSTEI 0
Ananias Duarte

Ananias Duarte

04/10/2004

Ola pessoal, bom dia!

Caro Aroldo, atendendo à sua solicitação descrevo, a seguir, como faça para cria um DBLookupComboBox no ACCESS. veja:

No MS Access, o correspondente ao DBLookupcombobox teria a seguinte estrutura:
Coluna0 = IdEspecie
Coluna1 = nEspecie
Coluna2 = Gestacao
Coluna3 = vUtil
Tabela de origem = Tab_Especie
Tabela-destino = Tab_Animal
Campo-destino = IdEspecie
Configuração da apresentação da combo_Especie = 0cm;3cm;0cm;0cm, isto é: apenas a coluna1 seria visível ao usuário, porém, internamente, a combo_Especie teria a seguinte aparência:
IdEspecie     nEspecie   Gestacao   vUtil
1             Ovino      150        100
2             Caprino    150        100
3             Bovino     270        150
4             Bubalino   270        150

Em dois controles (Edits) faço constar os dados referentes a gestação e vUtil, da seguinte maneira:
Na propriedade Origem do Controle do Edit1, digito o seguinte: combo_Espécie.column(2)
Na propriedade Origem do Controle do Edit, digito o seguinte: combo_Espécie.column(3)
Como funciona?
Suponha que o usuário escolha a opção 3 (bovino). No campo idEspecie da tab_animal será gravado = 3. O edit1 conterá 270 e o Edit2 conterá 150.

Fazer isso no DELPHI, usando do DBLookUpComboBox é que ta DOSE!!!
Ficaria imensamente agradecido pela ajuda.
abraços


GOSTEI 0
Ananias Duarte

Ananias Duarte

04/10/2004

Minha gente, que é isso!....
Ninguem se habilita?!
Será que o ´meu problema´ é tal banal que não merece a atenção dos profissionais do DELPHI?
abraços


GOSTEI 0
Horus

Horus

04/10/2004

Não sei qual banco de dados você tá usando. Eu uso o Firebird.
Eu faço assim:

1. Coloco uma query no form selecionando os campos de pesquisa na tabela de pesquisa que eu quero extrair os dados.

2. Coloco um dblookupcombobox no form.

3. Vou no object inspector e defino a propriedade datasource, datafield de acordo com a tabela de destino.

4. Defino as propriedades listsource, listfield, keyfield de acordo com a tabela de pesquisa.

5. No evento oncloseup do dblookupcombobox eu digo que :
campo_da_tabela_de_destino := campo_da_tabela_de_pesquisa

Posso inserir algumas condições se for o caso e depois também, se for o caso salvar as alterações.

Espero ter ajudado.


GOSTEI 0
Ananias Duarte

Ananias Duarte

04/10/2004

Caro Horus, obrigado pela participação.
Peço desculpas por não ter-me feito entender, pois, ao que parece, vc não entendeu o problema.
O que vc disse, já é feito!
O que eu quero é ´capturar´ os [u:ba4e3b5b12]valores[/u:ba4e3b5b12] da coluna ´[b:ba4e3b5b12]gestação[/b:ba4e3b5b12]´ e da coluna ´[b:ba4e3b5b12]vUtil[/b:ba4e3b5b12]´ e, apenas, colocá-los em dois Edits e não gravá-los em uma tabela.
abraços e +1x obrigado


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

04/10/2004

Colega,

O que eu quero é ´capturar´ os valores da coluna ´gestação´ e da coluna ´vUtil´ e, apenas, colocá-los em dois Edits


No [b:1ab955804a]OnDataChange [/b:1ab955804a]do [b:1ab955804a][color=red:1ab955804a]DataSource[/color:1ab955804a][/b:1ab955804a]:

Edit1.Text := tbXcolunaA.AsString;
Edit2.Text := ...



GOSTEI 0
Ananias Duarte

Ananias Duarte

04/10/2004

Grande Moderador... Valeu.
Não tenho o DELPHI aqui. Vou testar isso em casa.

Tô entendendo q ´X´ é o nome da Tabela-fonte do DBLookupcombobox, no meu caso a Tab_Especie e ´A´ é a coluna A da combo?!
Desculpe a pergunta, pois no Access as colunas são numerados a partir do ZERO: coluna0, coluna1, ...

Muito obrigado. Amanhã conto se deu certo.
bye bye


GOSTEI 0
Ananias Duarte

Ananias Duarte

04/10/2004

olá pessoal.
Agradeço a ajuda recebida e, em especial, ao Aroldo pela dica que se tornou o ´gatilho´ da solução que encontrei. É certo que deve existir outra maneira de resolver a questão, porém foi assim que resolvi o meu problema com o DBLookUpComboBox.

O [b:8a1f7ba007]DBLookUpComboBox[/b:8a1f7ba007]:

Tenho um DBLookUpComboBox baseado em uma tabela que possui quatro campos:
id_especie;
especie;
gestacao; e
vutil.

O [b:8a1f7ba007]PROBLEMA[/b:8a1f7ba007]:

Preciso que os dados (valores) que estão nas colunas (campos) [u:8a1f7ba007]gestação [/u:8a1f7ba007]e [u:8a1f7ba007]vutil [/u:8a1f7ba007] fossem copiados/inseridos em dois edits (edit_gest e edit_vutil).

[b:8a1f7ba007]COMO FAZER ISSO[/b:8a1f7ba007]?

Após horas e horas de tentativas e fracassos, eis que surge um único acerto: a dercoberta da propriedade FIELDS! Essa propriedade, ao que parece, trata-se de um ARRAY, logo a sua manipulação fica fácil.
Veja como ficou o código que captura os valores das colunas [u:8a1f7ba007]gestação [/u:8a1f7ba007]e [u:8a1f7ba007]vutil [/u:8a1f7ba007].

procedure TForm_User.DS_EspecieDataChange(Sender: TObject; Field: TField);
begin
ctrl_gestacao.text:=tb_Especie.Fields[2].AsString;
ctrl_vutil.text:=tb_Especie.Fields[3].AsString;
end;

Veja que usei o evento [b:8a1f7ba007]DataChange [/b:8a1f7ba007]do [b:8a1f7ba007]DataSource[/b:8a1f7ba007] que contém a Tab_Especie (tabela fonte do DBLookUpComboBox).

abraços e obrigado


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

04/10/2004

Colega,

Outras formas:

procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
                                      |
begin                 +---------------+
  try                 |
                      V
    Edit1.Text  := DataSet.FieldValues[´Last_Name´];
    Edit2.Text  := DataSet.Fields[1].Value;
    Edit3.Text  := DataSet.FieldByName(´acct_nbr´).AsString;

  except
        // Exceção silenciosa
  end;
end;



GOSTEI 0
Ananias Duarte

Ananias Duarte

04/10/2004

Num falei?!!
Tudo se resume em [b:d68732fb66]conhecer [/b:d68732fb66] as funções e funcionalidadeS de cada [b:d68732fb66]propriedade, método, instrução, função[/b:d68732fb66], etc. da linguagem e, para isso,só existe um caminho: estudar. Agora... para quem não sabe inglês...

Valeu Aroldo.

ah, quando vc indicaria o uso do TRY/EXCEPT? seria em qualquer construção BEGIN/END?

ABRAÇOS


GOSTEI 0
By_gandalf

By_gandalf

04/10/2004

voce podeira tambem colocar 2 DBEdits no form e setar as propriedades DataSource e DataSet, e deixar o campo desabilitado,,, assim que ele mudar o ponteiro da tabela no dblookupcombobox automaticamente o dbedit mudará. Essa é a melhor forma eu acho, sendo que não precisa colocar código nenhum...

Abraços


GOSTEI 0
Ananias Duarte

Ananias Duarte

04/10/2004

putz!! essa é d+. vou testar.
valeu
abraços


GOSTEI 0
POSTAR