× Linguagem de Programação ADVPL

Perguntas Ajuda com relatório

Mais
11 anos 5 meses atrás #14860 por will3698
Ola boa tarde !

estou com um problema ao customizar um relatório ( ESPELHO DE PONTO ) , precisava colocar a informação de banco de horas do funcionário nesse relatório , para que o mesmo tivesse a informação ao assina-lo.

desenvolvi um script que funcionou perfeitamente quando é somente 1 funcionário no range.
mas quando é mais de 1 ele acumula o valor do banco de horas .
sou bem fraco em advpl, me viro um pouco no PL/SQL, não faço idéia de como vou fazer pro comando entender quando se tratar de um range , que o mesmo terá uma infomação diferente pra cada matricula .
segue a customização:

_cQuery :=" SELECT (MAX( "
_cQuery +=" (SELECT SUM(PI_QUANT) FROM SPI010 WHERE (PI_MAT BETWEEN '" + ALLTRIM(mv_par07) + "' AND '" + ALLTRIM(mv_par08) + "') AND D_E_L_E_T_ <> '*' AND PI_PD = '045') - "
_cQuery +=" (SELECT SUM(PI_QUANT) FROM SPI010 WHERE (PI_MAT BETWEEN '" + ALLTRIM(mv_par07) + "' AND '" + ALLTRIM(mv_par08) + "') AND D_E_L_E_T_ <> '*' AND PI_PD = '012') - "
_cQuery +=" (SELECT SUM(PI_QUANT) FROM SPI010 WHERE (PI_MAT BETWEEN '" + ALLTRIM(mv_par07) + "' AND '" + ALLTRIM(mv_par08) + "') AND D_E_L_E_T_ <> '*' AND PI_PD = '014') - "
_cQuery +=" (SELECT SUM(PI_QUANT) FROM SPI010 WHERE (PI_MAT BETWEEN '" + ALLTRIM(mv_par07) + "' AND '" + ALLTRIM(mv_par08) + "') AND D_E_L_E_T_ <> '*' AND PI_PD = '007') - "
_cQuery +=" (SELECT SUM(PI_QUANT) FROM SPI010 WHERE (PI_MAT BETWEEN '" + ALLTRIM(mv_par07) + "' AND '" + ALLTRIM(mv_par08) + "') AND D_E_L_E_T_ <> '*' AND PI_PD = '010'))) AS PI_QUANT from SPI010 "

TCQUERY _cQuery New Alias 'TRB'

DbSelectArea("TRB")
DbGoTop()
_cBanco := TRB->PI_QUANT


att

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 5 meses atrás - 11 anos 5 meses atrás #14865 por will3698
Respondido por will3698 no tópico Ajuda com relatório
Ola bom dia !

consegui resolver essa questão ... :)

ao invés de usar o mv_par que continha a sequência da matricula , eu utilizei o SRA->RA_MAT
que o próprio fonte usava em SRA->RA_MAT(INICIAL) + 1 ATÉ SRA->RA_MAT(FINAL), sendo assim , usei o proprio Looping do fonte pra me ajudar nessa . !

att

obs: Agora o funcionário ao assinar o espelho do seu ponto do periodo, vai ter a informação de quantas horas ele possuiu no Banco de Horas ! :) :)
Ultima edição: 11 anos 5 meses atrás por will3698.

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 5 meses atrás #14866 por Sombra
Respondido por Sombra no tópico Ajuda com relatório
Bom dia Willian,

Voce poderia DISPONIBILIZAR esse FONTE aqui no espaço para DOWNLOAD

att

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 5 meses atrás #14867 por will3698
Respondido por will3698 no tópico Ajuda com relatório
Com certeza, estarei subindo o fonte logo mais a tarde :)

att

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 5 meses atrás #14868 por will3698
Respondido por will3698 no tópico Ajuda com relatório
acabei de Subir. tive que mexer na query, pois em casos específicos algum item da soma dos eventos estava vindo (null), o que fazia com que todo o calculo tivesse retorno (null), utilizei então a função NVL(), que resolveu o problema :)

Lembrando que cabe a cada um que for utilizar verificar os eventos listados na query, e adaptar aos eventos da sua base.


att

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.105 segundos
Joomla templates by a4joomla