Fórum campo calculado #216765

26/02/2004

0

oi pessoal
eh o seguinte
tenho campos calculados no meu sistema, funcionam corretamente, sem nenhum problema, mas o sistema estah perdendo performance, pq por exemplo:
faco uma pesquisa (trazendo somente os campos q vou usar e registros de um determinado codigo), tipo:
´select produto, qtde, preco from orcamento where codcli = :codcli´

com isso traz somente os orcamentos do cliente ´x´ (parametro codcli) entaum para ter o total do orcamento tenho um campo calculado (total) onde no evento OnCalcFields do ClientDataSet eu faco ´qtde * preco´
mas qdo o cliente tem 1, 2, 3 orcamentos (poucos) a listagem no dbgrid fica rapida, porem, qdo o numero de orcamentos aumenta, comeca a perder performance para listar no dbgrid.....
alguem sabe como resolver essa perda de performance? se existe outra maneira de obter esse total sem demorar tanto qdo aumenta o numero de registros?

PS: nao tenho ess campo total fisicamente no banco de dados e nao gostaria de ter q inclui-lo lah
uso dbexpress (TSQLQuery e TSQLDataSet) e mysql

Obrigada
K-ROL


K-rol

K-rol

Responder

Posts

27/02/2004

Joilson_gouveia

Seu SQL:
´select produto, qtde, preco from orcamento where codcli = :codcli´

Experimente a performance com o seguinte:

´select produto, qtde, preco, [color=red:aa7c331cc4](qtde*preco) as total[/color:aa7c331cc4] from orcamento where codcli = :codcli´


Responder

Gostei + 0

28/02/2004

K-rol

certo joilson, obrigada, eu tinha pensado nisso, mas nao achei essa a solucao ideal para o meu campo calculado, vou tentar explicar com maiores detalhes para ver se exite alguma outra solucao

fui generica ao dizer que o campo seria calculado apenas por ´qtde * preco´, mas nao eh soh exatamente isso q acontece, nesse total por exemplo existem aplicacoes de acrescimo, desconto e calculo de parcelas
essas informacoes se encontram em outras tabelas, pensei entaum em fazer um join (q ficaria meio maluco, mas talvez funcionasse)
porem, no caso de acrescimo e desconto (por exemplo), nao seria igual para todos os produtos e essa informacao nao estah explicita em nenhuma tabela (para poder colocar no join)
preciso verificar alguns codigos (chaves) antes de calcular esse acrescimo e desconto, resumindo, para cada produto (em tese) dependendo de seu segmento seria um acrescimo e desconto diferentes.

nao sei c consegui explicar claramente a situacao, mas qlqr duvida eh soh postar......

obrigada
K-ROL


Responder

Gostei + 0

28/02/2004

Joilson_gouveia

K-ROL,

Onde eu trbalho também tenho que montar relatórios/consultas não muito convencionais. Para tais casos, uso MemoryTables associados aos DBGrids, ao invés das Querys/Tables.

Faço o seguinte: Retorno de uma consulta o máximo de informação possível (que vou precisar, somente), e monto as colunas que devo mostrar na DBGrid, inclusive as de campos calculados, varrendo a Query/Table utilizada.

Dê uma olhada no Help do Delphi sobre o uso de MemoryTable.

Um Abraço.


Responder

Gostei + 0

29/02/2004

K-rol

obrigada, vou verificar
mas aproveitando, como fica performance do MemoryTable? mesmo percorrendo ´toda tabela´ (resultados), nao fica lento?

obrigada
K-ROL


Responder

Gostei + 0

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

Aceitar