Preencher edit conforme o que estiver no combobox
04/06/2018
0
procedure Tformitens.FormShow(Sender: TObject); begin with formitens do Zacao.Close; Zacao.SQL.Clear; Zacao.SQL.Add('SELECT CODIGO, NOME, VALOR_UNIT FROM CAD_PRODUTOS ORDER BY CODIGO;'); Zacao.Open; Zacao.First; While not Zacao.Eof do begin combo_produtos.items.add(Zacao.FieldByName('CODIGO').AsString +' - '+ Zacao.FieldByName('NOME').Asstring); Zacao.Next; end; end;
Quero que quando a pessoa escolha um produto no combo box o valor unitário desse produto que esta na tabela seja recebido no edit correspondente.
Preciso de ajuda!
Luiz Silva
Post mais votado
05/06/2018
Edbedit1.text:=combobox1.text;
Raimundo Pereira
Mais Posts
05/06/2018
Luiz Silva
05/06/2018
Raimundo Pereira
edit e não um dbedit
combobox e não um dblockupcombobox
Veja o exemplo que eu fiz:
https://uploaddeimagens.com.br/imagens/result-jpg-b3187d3a-4e38-4ac4-8f3a-fc4c51373135
05/06/2018
Luiz Silva
05/06/2018
Raimundo Pereira
Se combobox você precisará realizar um locate na descrição e retonar o campo que contem o valor.
if dm.suatabela.locate('NOME_PRODUTO',COMBOBOX.TEXT,[]) THEN
EDIT1.TEXT:=dm.suatabela.FIELBYNAME('CAMPO_VALOR').VALUE;
Se dblockoop
EDIT1.TEXT:=dm.suatabela.FIELBYNAME('CAMPO_VALOR').VALUE;
05/06/2018
Luiz Silva
05/06/2018
Raimundo Pereira
if dm.suatabela.locate('NOME_PRODUTO',COMBOBOX.TEXT,[]) THEN
EDIT1.TEXT:=dm.suatabela.FIELBYNAME('CAMPO_VALOR').VALUE;
05/06/2018
Luiz Silva
05/06/2018
Luiz Silva
05/06/2018
Raimundo Pereira
sac@p2tecnico.com.br
Assim que chegar em casa dou uma atenção melhor.
Abraço
05/06/2018
Luiz Silva
05/06/2018
Alberto
sete as propriedades:
ListSource = tabela
ListField = campo_que_tem_o_nome_do_produto
KeyField = campo_que_tem_o_codigo_do_produto
.
Nesse ponto vc já tem a lista de produtos SEM ter que fazer o loop que vc estava fazendo para preencher a lista.
.
no evento onCloseUp e no evento onKeyPress faça sua rotina usando o campo_VALOR da tabela
que já vai estar no registro correto, escolhido pelo usuario.
.
Nao esqueca de no evento onKeyPress fazer o:
IF Key = #13 Then Begin
...
End;
06/06/2018
Luiz Silva
06/06/2018
Raimundo Pereira
06/06/2018
Luiz Silva
exec: 'INSERT INTO (NOME, ..) VALUES'+
Quotedstr('DBCOMBOBOX.TEXT')+' , '+
...
08/06/2018
Alberto
Exemplo: Na tabela clientes vc tem um campo "TIPO" varchar(20) e nele voce quer gravar somente 1 de duas opcoes: ("amigo", "desconhecido"), entao vc coloca essas duas opcoes na propriedade ITEMS do dbcombobox, e nas propriedades: DataSource -> CLIENTES, e DATAFIELD -> TIPO, ao selecionar uma das opcoes o dbcombobox ja grava o valor no campo da tabela.
//
vc usa o dblookupcombobox quando quer:
1º = gravar na tabela A o valor de um campo contido na tabela B
2º = obter o valor de um campo na tabela B sem necessariamente gravá-lo (automaticamente atraves do componente) na tabela A
//
Na opcao 1 vc deve informar as propriedades da tabela B em
ListSource = tabela B
ListField = campos da tabela a aparecer na lista, separados por ;
keyField = campo chave da tabela B
e da tabela A em:
DataSource = tabela A
DataField = campo chave da tabela A
Nesse caso vc grava somente o campo CHAVE (que seria o codigo ou ID)
//
Na opcao 2 vc deve informar as propriedades da tabela B em
ListSource = tabela B
ListField = campos da tabela a aparecer na lista, separados por ;
keyField = campo chave da tabela B
Nesse caso vc usa o componente somente para POSICIONAR no registro
correto (escolhido pelo usuario) na tabela B
Apartir dai vc deve fazer o que quer fazer na "UNHA"
Exemplo:
1 - Quero que o valor do produto na tabela B seja mostrado num TEDIT
meuedit.text := tabela_B.FieldbyName('VALOR').AsString;
2 - Quero que o valor do produto na tabela B seja gravado num campo da tabela A
Tabela_A.FieldbyName('VALOR_PRODUTO').Value := tabela_B.FieldbyName('VALOR').Value;
.
Para fazer o que vc quer da maneira mais facil é trocar o componente dbcombobox pelo dblookupcombobox, sei que na programacao existem várias maneiras de fazer a mesma coisa,
mas, ilustrando, nesse caso, é como querer varrer o chao com o rodo ao inves da vassoura.
.
Espero que tenha entendido.
Clique aqui para fazer login e interagir na Comunidade :)