Dúvida qto a implementação de campos Lookup com Delphi7 FB

Delphi

16/04/2006

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


Faustoalves

Faustoalves

Curtidas 0

Respostas

Thomaz_prg

Thomaz_prg

16/04/2006

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:

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)



GOSTEI 0
POSTAR