Fórum Dúvida qto a implementação de campos Lookup com Delphi7 FB #319253
16/04/2006
0
Boa noite a todos.
Pessoal, estou migrando meus sistemas de Paradox para FB, estou utilizando Delphi 7 com DBExpress.
Minha dúvida é com relação aos campos de lookup ex:
Em um cadastro de pedidos tenho:
CD_Fabrica
CD_Cliente
CD_Vendedor
Ambos os campos são FK´s no pedido, como eu faria para que durante o cadastro de pedidos, digamos, em modo Browse eu obtivesse o seguinte resultado:
[b:0e9bbd0b68]Fabricante: 110 Costa Calçados
Cliente: 20 Paqueta Modas
Vendedor: 50 Jose Antonio[/b:0e9bbd0b68]
No Paradox eu apenas adicionava os campos Lookup no Fields Editor.. mas como agora estou utilizando o FB gostaria de saber como fazer isto, pois não gostaria de ter estas tabelas abertas sem necessidade.
Se alguém puder me dar uma dica desde já agradço
[]´s
Fausto
Pessoal, estou migrando meus sistemas de Paradox para FB, estou utilizando Delphi 7 com DBExpress.
Minha dúvida é com relação aos campos de lookup ex:
Em um cadastro de pedidos tenho:
CD_Fabrica
CD_Cliente
CD_Vendedor
Ambos os campos são FK´s no pedido, como eu faria para que durante o cadastro de pedidos, digamos, em modo Browse eu obtivesse o seguinte resultado:
[b:0e9bbd0b68]Fabricante: 110 Costa Calçados
Cliente: 20 Paqueta Modas
Vendedor: 50 Jose Antonio[/b:0e9bbd0b68]
No Paradox eu apenas adicionava os campos Lookup no Fields Editor.. mas como agora estou utilizando o FB gostaria de saber como fazer isto, pois não gostaria de ter estas tabelas abertas sem necessidade.
Se alguém puder me dar uma dica desde já agradço
[]´s
Fausto
Faustoalves
Curtir tópico
+ 0
Responder
Posts
17/04/2006
Thomaz_prg
Amigo, vc pode também fazer dessa mesma forma (inserindo os lookup´s no Fields Editor), mas vou lhe colocar a forma que faço.... não sei se é exatamente o mais correto e/ou mais simples, mas enfim, é uma forma...
Eu crio um campo no CDS do tipo InternalCalc, e no evento onCalcFields, eu passo o valor do campo da outra tabela para a tabela o campo. Por exemplo, se eu tivesse que inserir o nome do produto numa tabela de vendas, no evento OnCalcFields do ClientDataset de Vendas eu colocaria o seguinte:
claro que, crio uma função para não ter que repetir esse código, tipo, a função é criada para retornar o valor do campo. Mas isso no caso da edição. Quando é apenas para mostrar, insiro o campo no SQL mesmo:
Eu crio um campo no CDS do tipo InternalCalc, e no evento onCalcFields, eu passo o valor do campo da outra tabela para a tabela o campo. Por exemplo, se eu tivesse que inserir o nome do produto numa tabela de vendas, no evento OnCalcFields do ClientDataset de Vendas eu colocaria o seguinte:
with cdsPesqProduto do begin Close; CommandText := ´select nome from produtos where id_produto = :id´; Params[0].Value := cdsVendas.FieldByName(´id_produto´).Value; Open; end; cdsVendasNOMEPROD.Value := cdsPesqProduto.Fields[0].AsString;
claro que, crio uma função para não ter que repetir esse código, tipo, a função é criada para retornar o valor do campo. Mas isso no caso da edição. Quando é apenas para mostrar, insiro o campo no SQL mesmo:
select V.ID_ITEM, V.ID_PRODUTO, P.NOME AS NOME_PRODUTO, V.QUANTIDADE, V.VL_UNIT from VENDAS_ITENS V left outer join PRODUTOS P on (P.ID_PRODUTO = V.ID_PRODUTO)
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)