campo calculado
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
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
Curtidas 0
Respostas
Joilson_gouveia
26/02/2004
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´
´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´
GOSTEI 0
K-rol
26/02/2004
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
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
GOSTEI 0
Joilson_gouveia
26/02/2004
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.
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.
GOSTEI 0
K-rol
26/02/2004
obrigada, vou verificar
mas aproveitando, como fica performance do MemoryTable? mesmo percorrendo ´toda tabela´ (resultados), nao fica lento?
obrigada
K-ROL
mas aproveitando, como fica performance do MemoryTable? mesmo percorrendo ´toda tabela´ (resultados), nao fica lento?
obrigada
K-ROL
GOSTEI 0