relatório esta mostrando registro duplo

Discussão em 'Comandos Básicos' iniciado por luizclairrodrigues, Setembro 23, 2011.

  1. luizclairrodrigues

    luizclairrodrigues Membro Participativo

    desenvolví um relatório simples para mostrar código,nome, e numero do pis, mas os registros estão saindo duplo quando seleciono os (demitido) alguem pode me ajudar por favor.
    obrigado
  2. eduardo.leite

    eduardo.leite Equipe de Suporte Moderador Equipe de Suporte

    Anexe o código da rotina para que possamos entender o que pode estar acontecendo...
  3. luizclairrodrigues

    luizclairrodrigues Membro Participativo

    Bom dia!
    Este é o código que esta mostrando registro duplo quando seleciono (Demitidos).


    /*-----------------------------------------------------------------------------
    ** Programa: FRPL074
    ** Data....: 01 / JUNHO /2011
    ** Empresa.: FRAME MADEIRAS ESPECIAIS LTDA
    ** Objetivo: Relatório de Funcionário Pis
    ** Versao..: 2.04.00.000
    ------------------------------------------------------------------------------*/
    {include/i-prgvrs.i FRPL074 2.04.00.000}
    {include/tt-edit.i}
    {include/pi-edit.i}

    /*******************definição TEMP-TABLE*************************/

    define temp-table tt-param NO-UNDO
    field destino as integer
    field arquivo as char format "x(35)"
    field usuario as char format "x(12)"
    field data-exec as date
    field hora-exec as integer
    field classifica as integer
    field desc-classifica as char format "x(40)"
    field modelo-rtf as char format "x(12)"
    field l-habilitaRtf as LOG
    FIELD cdn_funcionario-ini LIKE funcionario.cdn_funcionario
    FIELD cdn_funcionario-fim LIKE funcionario.cdn_funcionario
    FIELD demit_cdn_funcionario-ini LIKE func_demit.cdn_funcionario
    FIELD demit_cdn_funcionario-fim LIKE func_demit.cdn_funcionario
    FIELD pis-ini LIKE funcionario.cod_pis
    FIELD pis-fim LIKE funcionario.cod_pis
    FIELD TOGGLE-3 AS LOGICAL.

    DEFINE TEMP-TABLE tt-funcionario
    FIELD codigo LIKE funcionario.cdn_funcionario
    FIELD nome AS CHAR FORMAT "x(35)"
    FIELD pis AS CHAR FORMAT "x(12)".

    def temp-table tt-raw-digita
    field raw-digita as raw.

    def input parameter raw-param as raw no-undo.
    def input parameter table for tt-raw-digita.

    create tt-param.
    raw-transfer raw-param to tt-param.

    {include\i-rpvar.i}
    {utp\ut-glob.i}

    /*********************Definição Var*************************/

    DEF VAR h-acomp AS HANDLE.

    ASSIGN c-programa = "FRPL074"
    c-versao = "2.04.000"
    c-revisao = "1.00"
    c-titulo-relat = "LISTAGEM DE FUNCIONARIO PIS"
    c-sistema = "HCM"
    c-empresa = "FRAMEPORT".

    {include\i-rpcab.i}

    DEFINE VARIABLE i-cont-imp AS INTEGER FORMAT ">" NO-UNDO.

    run utp/ut-acomp.p persistent set h-acomp.
    run pi-inicializar in h-acomp(input "Gerando Relatório...").

    {include/i-rpout.i}.

    /********************Definições de Frames:******************/

    VIEW FRAME f-cabec.
    VIEW FRAME f-rodape.

    /*****************Lógica Programa*************************/

    IF tt-param.classifica = 1 THEN DO: /***********por código*****/

    IF tt-param.TOGGLE-3 = YES THEN DO:

    FOR EACH funcionario NO-LOCK WHERE
    funcionario.cod_pis >= tt-param.pis-ini AND
    funcionario.cod_pis <= tt-param.pis-fim AND
    funcionario.cdn_funcionario >= tt-param.cdn_funcionario-ini AND
    funcionario.cdn_funcionario <= tt-param.cdn_funcionario-fim:

    RUN pi-acompanhar IN h-acomp(INPUT "Cod: " + STRING(funcionario.cdn_funcionario)).

    CREATE tt-funcionario.
    ASSIGN tt-funcionario.codigo = funcionario.cdn_funcionario
    tt-funcionario.nome = funcionario.nom_pessoa_fisic
    tt-funcionario.pis = funcionario.cod_pis.
    END.
    END.

    FOR EACH tt-funcionario NO-LOCK
    BY tt-funcionario.codigo:

    DISP tt-funcionario.codigo COLUMN-LABEL "Código"
    tt-funcionario.nome COLUMN-LABEL "Nome"
    tt-funcionario.pis COLUMN-LABEL "Numero Pis"
    with STREAM-IO width 200. /**frame f-ord down no-box.**/

    END.
    END.

    IF tt-param.TOGGLE-3 = NO THEN DO:

    FOR EACH funcionario NO-LOCK WHERE
    funcionario.dat_desligto_func = ? AND
    funcionario.cod_pis >= tt-param.pis-ini AND
    funcionario.cod_pis <= tt-param.pis-fim AND
    funcionario.cdn_funcionario >= tt-param.cdn_funcionario-ini AND
    funcionario.cdn_funcionario <= tt-param.cdn_funcionario-fim:

    RUN pi-acompanhar IN h-acomp(INPUT "Cod: " + STRING(funcionario.cod_pis)).

    CREATE tt-funcionario.
    ASSIGN tt-funcionario.codigo = funcionario.cdn_funcionario
    tt-funcionario.nome = funcionario.nom_pessoa_fisic
    tt-funcionario.pis = funcionario.cod_pis.
    END.
    END.

    FOR EACH tt-funcionario NO-LOCK
    BY tt-funcionario.codigo:

    DISP tt-funcionario.codigo COLUMN-LABEL "Código"
    tt-funcionario.nome COLUMN-LABEL "Nome"
    tt-funcionario.pis COLUMN-LABEL "Numero Pis"
    with STREAM-IO width 200. /**frame f-ord down no-box.**/
    END.


    IF tt-param.classifica = 2 THEN DO: /****************por pis*******************/

    IF tt-param.TOGGLE-3 = YES THEN DO:

    FOR EACH funcionario NO-LOCK WHERE
    funcionario.cod_pis >= tt-param.pis-ini AND
    funcionario.cod_pis <= tt-param.pis-fim AND
    funcionario.cdn_funcionario >= tt-param.cdn_funcionario-ini AND
    funcionario.cdn_funcionario <= tt-param.cdn_funcionario-fim:

    RUN pi-acompanhar IN h-acomp(INPUT "Cod: " + STRING(funcionario.cdn_funcionario)).

    CREATE tt-funcionario.
    ASSIGN tt-funcionario.codigo = funcionario.cdn_funcionario
    tt-funcionario.nome = funcionario.nom_pessoa_fisic
    tt-funcionario.pis = funcionario.cod_pis.

    END.
    END.

    FOR EACH tt-funcionario NO-LOCK
    BY tt-funcionario.pis.

    DISP tt-funcionario.codigo COLUMN-LABEL "Código"
    tt-funcionario.nome COLUMN-LABEL "Nome"
    tt-funcionario.pis COLUMN-LABEL "Numero Pis"
    with STREAM-IO width 200. /**frame f-ord down no-box.**/

    END.


    IF tt-param.TOGGLE-3 = NO THEN DO:

    FOR EACH funcionario NO-LOCK WHERE
    funcionario.dat_desligto_func = ? AND
    funcionario.cod_pis >= tt-param.pis-ini AND
    funcionario.cod_pis <= tt-param.pis-fim AND
    funcionario.cdn_funcionario >= tt-param.cdn_funcionario-ini AND
    funcionario.cdn_funcionario <= tt-param.cdn_funcionario-fim.

    RUN pi-acompanhar IN h-acomp(INPUT "Cod: " + STRING(funcionario.cod_pis)).

    CREATE tt-funcionario.
    ASSIGN tt-funcionario.codigo = funcionario.cdn_funcionario
    tt-funcionario.nome = funcionario.nom_pessoa_fisic
    tt-funcionario.pis = funcionario.cod_pis.

    END.

    FOR EACH tt-funcionario NO-LOCK
    BY tt-funcionario.pis:

    DISP tt-funcionario.codigo COLUMN-LABEL "Código"
    tt-funcionario.nome COLUMN-LABEL "Nome"
    tt-funcionario.pis COLUMN-LABEL "Numero Pis"
    with STREAM-IO width 200. /**frame f-ord down no-box.**/
    END.
    END.
    END.
    {include/i-rpclo.i &STREAM="stream str-rp"}
    RUN pi-finalizar IN h-acomp.
    RETURN "OK":U.
  4. eduardo.leite

    eduardo.leite Equipe de Suporte Moderador Equipe de Suporte

    Caro colega,


    Se problema é simples, você está usando TOGGLE-BOX para selecionar se sai registros de funcionários ATIVOS e/ou DEMITIDOS.

    Se você seleciona somente DEMITIDOS está saindo TODOS os funcionários ATIVOS/DEMITIDOS, certo? Se seleciona os ATIVOS está saindo os funcionários ATIVOS e se seleciona ATIVOS E DEMITIDOS estão saindo juntos os ATIVOS e, sendo que os ATIVOS estão saindo duplicados.

    Na sua rotina quanto você usa o "tt-param.TOGGLE-3 = yes" (DEMITIDOS) era para listar somente os DETIMIDOS, porém no WHERE você não definiu para eliminar os ATIVOS (funcionario.dat_desligto_func <> ?), veja abaixo como deve ficar.

    Código:
    
        if tt-param.TOGGLE-3 = yes then do:
    
            for each funcionario no-lock 
               where funcionario.dat_desligto_func <> ? 
                 and funcionario.cod_pis          >= tt-param.pis-ini 
                 and funcionario.cod_pis          <= tt-param.pis-fim 
                 and funcionario.cdn_funcionario  >= tt-param.cdn_funcionario-ini 
                 AND funcionario.cdn_funcionario  <= tt-param.cdn_funcionario-fim:
    
                run pi-acompanhar in h-acomp(input "Cod: " + string(funcionario.cdn_funcionario)).
    
    
  5. luizclairrodrigues

    luizclairrodrigues Membro Participativo

    beleza eu entendi
    valeu aí pela ajuda.
  6. luizclairrodrigues

    luizclairrodrigues Membro Participativo

    eu preciso que mostre o relatório com registro de, (Ativo/Demitidos) juntos, (Só Ativo), (Só Demitido)
    quando eu seleciono demitidos ele mostra assim ainda.



    Código Nome Numero Pis
    -------- ----------------------------------- --------------------------
    4881 LUIZ CLAIR RODRIGUES 12315046663
    4882 FRANCISCO AMILTON BARBOSA 12147796656

    Código Nome Numero Pis
    -------- ----------------------------------- --------------------------
    4881 LUIZ CLAIR RODRIGUES 12315046663
    4882 FRANCISCO AMILTON BARBOSA 12147796656

Compartilhe esta Página