Dúvidas para implementar campos Lookup

Firebird

21/10/2005

Bom dia a todos..
Estou migrando uma aplicação do Paradox para o Firebird e estou com seguinte dúvida..
Não estou sabendo implementar um campo de lookup..
Ex: Eu tenho uma tabela de cidades e nas tabelas de Clientes,Fornecedores,Vendedores tenho o campo código da cidade definido como FK, até ai tudo bem eu qdo estou cadastrando a partir do momento que o usuário seleciona a cidade eu mostro o código e o nome, mas e qdo eu estive em modo [b:d531d42c6e]dsBrowse[/b:d531d42c6e]?
Poderia fazer um campo de lookup no fields editor, mas para isto a tabela de cidades teria que ficar aberta, agora imaginem no caso de pedidos onde eu tenho vendedores,clientes, transportadoras,condição de pagamento.
Pois no paradox qdo crio um campo de lookup ele automaticamente abre a tabela source.
Como vc´s estão implementando isto?
Estou utilizando [b:d531d42c6e]Delphi 7,FB 1.5 com DBExpress[/b:d531d42c6e].

Grato
Fausto


Faustoalves

Faustoalves

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

21/10/2005

Em bancos de dados cliente/servidor não é aconselhável o uso de campos lookup, use querys em vez disso


GOSTEI 0
Faustoalves

Faustoalves

21/10/2005

Sim, entendi, mas meu problema esta justamente em como implementar isto na minha aplicação.
por exemplo tenho o pedido onde tenho como FK, CD_Cliente,CD_Transportre,CD_Vendedor, CD_CondPagto.
Pois bem, cada um destes campos se refere a outra tabela que eu gostaria de mostrar no form de consulta, como faço isto, pois não consigo enxergar o túnel quem dirá a luz no final dele.

Fausto


GOSTEI 0
Afarias

Afarias

21/10/2005

se a tabela é pequena (poucos registros) vc pode implementar um lookup tnormalmente, ou até de forma ´manual´ carregando os dados em uma tabela de memória.

para o caso de clientes, fornecedores e tals, deixe o usuário digitar uma informação chave (cgc, cpf, código, ...) e ao digitar faça a consulta no banco para trazer as informações pertinentes desse único registro

de forma mais avançada, permita q quando o usuário clique em um botão e/ou tecla especícifa abra uma tela de consulta onde ele pode buscar por parte do nome ou sei lá o q mais... dai ele escolhe em um grid qual é o registro q procura, dando OK vc captura isso


T+


GOSTEI 0
Faustoalves

Faustoalves

21/10/2005

Sim, entendi, isto eu faço em minhas consultas, onde também tenho a opção dele procurar por código ou nome, estou me referindo ao fato de qdo estiver consultando um cliente,digamos, para alteração como faço para que no form de clientes apareça a cidade na qual ele esta ligado?

Ele digita o número do pedido, tenho um form para pesquisas.. então ele pode pesquisar e me retornar o pedido, mas o problema esta em como mostrar informações de outras tabelas que mantém vinculos com ela através de FK´s.
Ex:

[b:53464688dd]
Nº Pedido : 5254
Cliente : 1056 JO CALCADOS [color=red:53464688dd]FK[/color:53464688dd]
Transportadora: 35 TRES MAIENSE [color=red:53464688dd]FK[/color:53464688dd]
Vendedor : 20 JOAL DOS REIS [color=red:53464688dd]FK[/color:53464688dd]
[/b:53464688dd]
Não sei se fui claro neste exemplo..

Fausto[color=red:53464688dd][/color:53464688dd]


GOSTEI 0
Vinicius2k

Vinicius2k

21/10/2005

Colega,

Se a questão é ´exibição´, utilize JOINs nas querys, ex:

select 
  P.IDPEDIDO, 
  P.IDCLIENTEFK,
  C.NOMECLIENTE,
  P.IDTRANSPORTADORAFK,
  T.NOMETRANSPORTADADORA,
  P.IDVENDEDORFK,
  V.NOMEVENDEDOR
from
  PEDIDOS P
left join
  CLIENTES C on (P.IDCLIENTEFK = C.IDCLIENTE)
left join
  TRANSPORTADORAS T on (P.IDTRANSPORTADORAFK = T.IDTRANSPORTADORA)
left join
  VENDEDORES V on (P.IDVENDEDORFK = V.IDVENDEDOR)
...


T+


GOSTEI 0
POSTAR