GARANTIR DESCONTO

Fórum Pedido Mestre Detalhe - Precio de Opiniões #344335

09/08/2007

0

Tudo bem pessoal!

É o seguinte: desenvolvi um sistema para pedidos (metre/detalhe). O módulo tem vários outros campos claro, mas o que preciso saber é especialmente sobre a exibição do nome do cliente e a descrição dos itens na tela de registro dos pedidos.

Uso D 7 e FB 2.0. Para exibir o nome do cliente, tenho um DBEdit e, para exibir a descrição do item, tenho um DBGrid. A ligação do DBEdit e DBGrid ao BD é feita através dos componentes SQLDataSet, ClientDataSet, DataSetProvider e DataSource.

Quando o cliente do pedido é selecionado, gravo o código dele no campo próprio do pedidoMestre.
Quando o item é selecionado, faço o mesmo, ou seja, gravo o código dele no pedidoDetalhe.

Para exibir o nome do cliente (no DBEdit) e a descrição de cada item (no DBGrid), utilizo um campo Lookup.

Muito bem! O sistema funciona direitinho, mas, como você já deve ter imaginado, toda vez que esse módulo (pedido) é chamado, preciso abrir toda a tabela de clientes e toda a tabela de itens, quando o correto seria fazer uma opção de consulta para que o usuário busque apenas cliente e produtos desejados. Mas, se eu não abrir as tabelas, os campos Lookups não mostrarão o nome do cliente e descrição do item.
O problema é que, num bd com muitos clientes/itens, esse tipo de rotina afeta consideralmente a performance do sistema.

Nos seus sistemas, como é que você faz nesses casos?

Obrigado.


Armindo

Armindo

Responder

Posts

09/08/2007

Gandalf.nho

Eu não uso lookups e sim views como origem dos meus formulários, assim evita aberturas desnecessárias de tabelas.


Responder

Gostei + 0

09/08/2007

Armindo

Eu não uso lookups e sim views como origem dos meus formulários, assim evita aberturas desnecessárias de tabelas.


Não uso muito essa opção, mas poderia me dar um exemplo de uma view para exibir a descrição do item?

Obrigado.


Responder

Gostei + 0

10/08/2007

Gandalf.nho

No meu caso monto um join envolvendo todos os campos da tabela principal mais os campos de todas as tabelas secundárias necessárias. Ex:

SELECT Pedido.*, Cliente.NomeCliente FROM Pedido INNER JOIN Cliente ON Pedido.CodigoCliente = Cliente.CodigoCliente



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar