UNIFICAÇÃO BASE CLIENTES

Discussão em 'Progress 4GL' iniciado por danielabra, Agosto 21, 2009.

  1. danielabra

    danielabra Sem Pontuação

    Bom dia !

    tenho uma base de emitentes com uma série de CNPJ´s duplicados, e preciso unificá-la. Ou seja, eliminar um dos CNPJ´s duplicados e migrar os dados deste emitente para o que ficará na base.

    Alguém possui algum programa que já faça isso ou sabe se existe algum da Datasul ?

    Obrigada,
    Daniela.
  2. sidnei

    sidnei Membro Participativo

    Olá Daniela;

    Eu sempre uso o program abaixo para tranferir de uma base para outra





    gere um export dos registro que deseja transferir, e depois um import na base para ser agregada.

    /*************** exportando registro desejado *************/
    /* gere um arquivo com os codigos que deseja exportar , um abaxo do outro *********/

    DISABLE TRIGGERS FOR LOAD OF emitente.

    DEF VAR i-emitente LIKE emitente.cod-emitente.
    DEF VAR C-cidade LIKE EMITENTE.CIDADE.
    DEF VAR C-cidade-origem LIKE EMITENTE.CIDADE.
    DEF VAR C-bairro AS CHAR FORMAT "x(2000)".
    DEF VAR c-rota-ambev AS CHAR FORMAT "x(2000)".
    DEF VAR C-ESTADO LIKE EMITENTE.ESTADO.
    DEF VAR C-PAIS LIKE EMITENTE.PAIS.
    DEF VAR de-km AS DEC.
    DEF VAR c-espaco AS CHAR.
    DEF VAR I-CODIGO AS INT FORMAT "99".
    DEF VAR I-sequencia AS INT FORMAT "9999999".
    DEF VAR num-cli AS INT.

    DEF TEMP-TABLE tt-emitente-cod FIELD icodigo AS INT INDEX chcod icodigo.

    OUTPUT TO i:\temp\emit\ad098.d.
    OUTPUT CLOSE.

    OUTPUT TO i:\temp\emit\ad043.d.
    OUTPUT CLOSE.

    OUTPUT TO i:\temp\emit\ad324.d.
    OUTPUT CLOSE.

    OUTPUT TO i:\temp\emit\ope-106.d.
    OUTPUT CLOSE.

    OUTPUT TO i:\temp\emit\log-001.d.
    OUTPUT CLOSE.

    INPUT FROM c:\clientes.txt.

    DEF VAR ii AS INT.

    REPEAT:
    IMPORT i-emitente.
    num-cli = num-cli + 1.
    FIND emitente NO-LOCK WHERE emitente.cod-emitente = i-emitente NO-ERROR.
    IF NOT AVAIL emitente THEN
    NEXT.


    OUTPUT TO i:\temp\emit\ad098.d APPEND.
    EXPORT emitente.
    OUTPUT CLOSE.

    FOR EACH cont-emit NO-LOCK WHERE cont-emit.cod-emitente = emitente.cod-emitente:
    OUTPUT TO i:\temp\emit\ad043.d APPEND.
    EXPORT cont-emit.
    OUTPUT CLOSE.
    END.

    FOR EACH cta-emitente NO-LOCK WHERE cta-emitente.cod-emitente = emitente.cod-emitente:
    OUTPUT TO i:\temp\emit\ad324.d APPEND.
    EXPORT cta-emitente.
    OUTPUT CLOSE.
    END.
    END.

    OUTPUT TO i:\temp\emit\ad098.d APPEND.
    PUT "." SKIP
    "PSC" SKIP
    "filename=emitente" SKIP
    "records=" num-cli format "9999999999999" skip
    "ldbname=mgadm" SKIP
    "timestamp=2007/06/13-09:13:33" SKIP
    "numformat=46,44" SKIP
    "dateformat=dmy-1950" SKIP
    "map=NO-MAP" skip
    "cpstream=ibm850" SKIP
    "." SKIP
    "0002105824" SKIP.
    OUTPUT CLOSE.

    OUTPUT TO i:\temp\emit\ad043.d APPEND.
    PUT "." SKIP
    "PSC" SKIP
    "filename=cont-emit" SKIP
    "records=" num-cli format "9999999999999" skip
    "ldbname=mgadm" SKIP
    "timestamp=2007/06/13-09:13:33" SKIP
    "numformat=46,44" SKIP
    "dateformat=dmy-1950" SKIP
    "map=NO-MAP" skip
    "cpstream=ibm850" SKIP
    "." SKIP
    "0002105824" SKIP.
    OUTPUT CLOSE.

    OUTPUT TO i:\temp\emit\ad324.d APPEND.
    PUT "." SKIP
    "PSC" SKIP
    "filename=cta-emitente" SKIP
    "records=" num-cli format "9999999999999" skip
    "ldbname=mgadm" SKIP
    "timestamp=2007/06/13-09:13:33" SKIP
    "numformat=46,44" SKIP
    "dateformat=dmy-1950" SKIP
    "map=NO-MAP" skip
    "cpstream=ibm850" SKIP
    "." SKIP
    "0002105824" SKIP.
    OUTPUT CLOSE.



    /************* importando na base o registro exportados *******************/
    /**********************************************************************************/
    DISABLE TRIGGERS FOR LOAD OF emitente.

    DEF TEMP-TABLE tt-emitente LIKE emitente.
    DEF TEMP-TABLE tt-cont-emit LIKE cont-emit.
    DEF TEMP-TABLE tt-cta-emitente LIKE cta-emitente.


    INPUT FROM i:\temp\emit\ad098.d.
    REPEAT:
    CREATE tt-emitente.
    IMPORT tt-emitente.

    FIND FIRST emitente NO-LOCK WHERE emitente.cgc = tt-emitente.cgc NO-ERROR.
    IF AVAIL emitente THEN
    DO:
    DELETE tt-emitente.
    NEXT.
    END.
    IF NOT AVAIL emitente THEN
    DO:
    CREATE emitente.
    RAW-TRANSFER tt-emitente TO emitente.
    END.
    END.
    INPUT CLOSE.

    INPUT FROM i:\temp\emit\ad043.d.
    REPEAT:
    CREATE tt-cont-emit.
    import tt-cont-emit.

    FIND FIRST tt-emitente NO-LOCK WHERE tt-emitente.cod-emitente = tt-cont-emit.cod-emitente NO-ERROR.
    IF AVAIL tt-emitente THEN
    DO:
    CREATE cont-emit.
    RAW-TRANSFER tt-cont-emit TO cont-emit.
    END.
    END.
    INPUT CLOSE.

    INPUT FROM i:\temp\emit\ad324.d.
    REPEAT:
    CREATE tt-cta-emitente.
    import tt-cta-emitente.

    FIND FIRST tt-emitente NO-LOCK WHERE tt-emitente.cod-emitente = tt-cta-emitente.cod-emitente NO-ERROR.
    IF AVAIL tt-emitente THEN
    DO:
    CREATE cta-emitente.
    RAW-TRANSFER tt-cta-emitente TO cta-emitente.
    END.
    END.
    INPUT CLOSE.
  3. danielabra

    danielabra Sem Pontuação

    Olá !

    Obrigada, mas o problema é trocar o histórico nas tabelas do EMS.

    Obrigada,
    Daniela.

Compartilhe esta Página