9480 - Usar campo abrangencia da tela de entrada em cursor
Problema: Descrição do Problema: Existe como criar uma string sql a partir dos dados informados na tela de entrada de um relatório?
Exemplo:
Precisamos criar uma fórmula para contar todas as notas fiscais emitidas no período informado porém seguir os demais critérios da tela de entrada.
Hoje a relatório tem N filtros de entrada.
Rotina / Tela: Relatórios
Solução: Solução 9480: É necessário utilizar o __inserir dentro do cursor. Segue abaixo um exemplo:
Definir Alfa ECodEmp;
Definir Alfa PCodEmp;
Definir cursor Cur_E210mvp;
PCodEmp = ;
MontaAbrangencia(E210MVP.CodEmp,ECodEmp,PCodEmp);
EstaNulo(PCodEmp,VRet1);
se (VRet1 = 0)
PCodEmp = AND + PCodEmp;
Cur_E210MVP.Sql Select E210MVP.CodLot, E210MVP.VlrMov, E210MVP.QtdMov, E210MVP.CodPro, E210MVP.CodDer,
E210MVP.EstEos, E075DER.PreCus
From E210MVP, E075PRO, E075DER
Where E210MVP.CODEMP = E075DER.CODEMP
And E210MVP.CODPRO = E075DER.CODPRO
And E210MVP.CODDER = E075DER.CODDER
And E210MVP.CODEMP = E075PRO.CODEMP
And E210MVP.CODPRO = E075PRO.CODPRO /
__Inserir(:PCodEmp)
order by E210MVP.CodPro, E210MVP.CodDer, E210MVP.CodLot;
Cur_E210MVP.AbrirCursor();
Se (Cur_E210MVP.Achou)
VVctPro=(VVctPro + 1);
Senao
Cur_E210MVP.FecharCursor();
Obs: Caso esteja sendo utilizado a outra forma de fazer cursor:
Nesse caso sugerimos ver o exemplo como foi feito o campo xabrfil do relatório da contabilidade CCCC011.GER.
Neste relatório foi utilizado esse tipo de cursor e possui abrangências. Lembrando que terá que utilizar a função MontaAbrangencia também.
Também temos como exemplo o relatório CCCC14.GER, CCCC16.GER, CCCC18.GER e CCCC22.GER
Exemplo:
Precisamos criar uma fórmula para contar todas as notas fiscais emitidas no período informado porém seguir os demais critérios da tela de entrada.
Hoje a relatório tem N filtros de entrada.
Rotina / Tela: Relatórios
Solução: Solução 9480: É necessário utilizar o __inserir dentro do cursor. Segue abaixo um exemplo:
Definir Alfa ECodEmp;
Definir Alfa PCodEmp;
Definir cursor Cur_E210mvp;
PCodEmp = ;
MontaAbrangencia(E210MVP.CodEmp,ECodEmp,PCodEmp);
EstaNulo(PCodEmp,VRet1);
se (VRet1 = 0)
PCodEmp = AND + PCodEmp;
Cur_E210MVP.Sql Select E210MVP.CodLot, E210MVP.VlrMov, E210MVP.QtdMov, E210MVP.CodPro, E210MVP.CodDer,
E210MVP.EstEos, E075DER.PreCus
From E210MVP, E075PRO, E075DER
Where E210MVP.CODEMP = E075DER.CODEMP
And E210MVP.CODPRO = E075DER.CODPRO
And E210MVP.CODDER = E075DER.CODDER
And E210MVP.CODEMP = E075PRO.CODEMP
And E210MVP.CODPRO = E075PRO.CODPRO /
__Inserir(:PCodEmp)
order by E210MVP.CodPro, E210MVP.CodDer, E210MVP.CodLot;
Cur_E210MVP.AbrirCursor();
Se (Cur_E210MVP.Achou)
VVctPro=(VVctPro + 1);
Senao
Cur_E210MVP.FecharCursor();
Obs: Caso esteja sendo utilizado a outra forma de fazer cursor:
Nesse caso sugerimos ver o exemplo como foi feito o campo xabrfil do relatório da contabilidade CCCC011.GER.
Neste relatório foi utilizado esse tipo de cursor e possui abrangências. Lembrando que terá que utilizar a função MontaAbrangencia também.
Também temos como exemplo o relatório CCCC14.GER, CCCC16.GER, CCCC18.GER e CCCC22.GER