Fórum StoredProcedure / ClientDataSet #379837
19/06/2010
0
Estou com um problema de performance no meu sistema.
Fiz uma precedure de gera dados de um funcionário. Ela retorna as horas trabalhas dia a dia. (passo o idFuncionario, dataInicio e dataFim) e ela retorna todos os dias do periodo.
Mas preciso gerar um relatório com varios funcionarios(todos ativos).
Como a procedure so retorna 1 funcionario por vez, tive que clonar o ClientDataSet, fazer selects e transportar cada select para o ClientDataSet clonado.
Funcionou blz. mas ficou mto lento. Alguem tem alguma sugestao para melhorar a performance desta rotina.
Obrigado.
Daniel Oliveira
Curtir tópico
+ 0Posts
19/06/2010
Marco Salles
Gostei + 0
20/06/2010
Daniel Oliveira
Tem uma situação em que eu preciso selecionar quais serão os funcionários inclusos no relatório. Assim se não tiver o id na cláusula where, não funcionará. Ate pensei em passar uma lista de ids como parametro, mas tem casos de precisar selecionar 200 funcionarios ou mais... Assim nao consegui resolver.
Gostei + 0
20/06/2010
Marco Salles
Tem uma situação em que eu preciso selecionar quais serão os funcionários inclusos no relatório. Assim se não tiver o id na cláusula where, não funcionará. Ate pensei em passar uma lista de ids como parametro, mas tem casos de precisar selecionar 200 funcionarios ou mais... Assim nao consegui resolver.
Gostei + 0
21/06/2010
Daniel Mourao
Só trocando uma idéia...quando você diz que uma procedure só retorna um funcionário isso é porque você deseja que seja assim?
Porque você poderia alterar essa procedure ou fazer uma outra que retornasse todos os funcionários daquele período solicitado. Não precisaria passar o idFuncionario, somente o período e a procedure retornaria todos os funcionários do período.
Outra sugestão é que você faça uma marcação para os registros que quer imprimir. Tipo, colocar um campo na tabela que marque o registro ou então encontrar um outro campo que diferencie os registros que você quer imprimir dos demais.
Espero ter ajudado.
Gostei + 0
21/06/2010
Emerson Nascimento
select * from sp_ponto(dataini, datafim) -> retorna a marcação de todos os funcionários no período indicado
select * from sp_ponto(dataini, datafim) where id_funcionario = funcionario -> retorna a marcação de daquele funcionário no período indicado
Gostei + 0
21/06/2010
Daniel Oliveira
Se alguem souber alguma forma de popular o ClientDataSet mais rapido, poste aki por favor.
Obrigado pela ajuda Marco, Daniel e Emerson.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)