[RESOLVIDO] Duvida Atualizacao de Dados

Discussão em 'EMS , HCM e Totvs 11' iniciado por Rogerio, Fevereiro 20, 2012.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. Rogerio

    Rogerio Moderator Moderador Equipe de Suporte

    Galera vejam minha situação:

    Tenho a Tabela TRANSPORTE no mgcad... preciso que quando for feito alguma alteração nessa tabela, eu atualize as informações de outras tabelas TRANSPORTE de outros bancos..... não tenho a quantidade de bancos, por isso teria que fazer isso dinamicamente... alguem teria algum exemplo!!!

    Tentei colocar uma TRIGGER na tabela TRANSPORTE da seguitne forma:

    Código:
    DEF TEMP-TABLE tt-bancos LIKE bco-ext
        FIELD marca AS CHAR.
    DEF VAR c-dif AS CHAR.
    
    BUFFER-COMPARE p-table TO p-old-table SAVE c-dif.
    
    DEF VAR c-tabela AS CHAR INIT 'transporte'.
    
    IF c-dif <> '' THEN
    DO:
        RUN esp\Integra-Bancos.w (INPUT c-tabela,
                                  OUTPUT TABLE tt-bancos).
        FIND FIRST transporte WHERE transporte.cod-transp = p-table.cod-transp NO-LOCK NO-ERROR.
        IF AVAIL transporte THEN
        DO: 
            FOR EACH tt-bancos WHERE tt-bancos.marca = '*':
                    RUN esp\conecta.p (INPUT 'C',
                                       INPUT tt-bancos.nom-logic-bco).                
                    {esp\exporta.i tt-bancos.nom-logic-bco c-tabela}
                    RUN esp\conecta.p (INPUT 'D',
                                       INPUT tt-bancos.nom-logic-bco).
            END.
        END.
    END.
    
    depois no expota.i o seguinte codigo... porem está me retornando ERRO....

    Código:
    DEF VAR c-banco AS CHAR.
    DEF VAR ci-tabela AS CHAR.
    
    ASSIGN c-banco   = STRING({1})
           ci-tabela = STRING({2}).
    
    FIND FIRST (c-banco).(ci-tabela) OF mgcad.(ci-tabela) NO-ERROR.
    IF NOT AVAIL (c-banco).(ci-tabela) THEN
        CREATE (c-banco).(ci-tabela).
    BUFFER-COPY mgcad.(ci-tabela) TO (c-banco).(ci-tabela).
    Alguem tem alguma ideia do que eu possa fazer para ressolver isso?
  2. rhemati

    rhemati Membro Participativo

    Meu amigo, boa noite.

    Você pode utilizar o método de pre-processadores e funciona.

    Código:
    /* Arquvo Preprocessador-hcm.p */
    def var c-nom_pessoa_fisic    as char format 'x(40)'    init 'nom_pessoa_fisic'.
    def var c-cdn_funcionario     as char format 'x(12)'    init 'cdn_funcionario'.
    
    
    def var c-banco     as char init 'hr209'.
    def var c-tabela    as char init 'funcionario'.
    
    assign  c-banco     =   'hr209'
            c-tabela    =   'funcionario'.
    
    run pre-hcm.p  c-banco c-tabela c-nom_pessoa_fisic c-cdn_funcionario.
    
    
    Outro arquivo complemento:
    Código:
    /* Arquvo pre-hcm.p */
    
    for each {1}.{2} no-lock
        :
        display {1}.{2}.{3}
                {1}.{2}.{4}
                .
    end.
    
    
    
    Segue ai o exemplo.

    Abs.,
  3. Rogerio

    Rogerio Moderator Moderador Equipe de Suporte

    Cristiano, ao compilar o programa pre-hcm.p dá o seguinte erro e não compila..

    ** Nao entendi apos: "for each". (247)
    ** Faltou a especificacao do arquivo apos FOR. (235)
    ** Linha 1 -- FOR, DO, REPEAT, ou EDITING invalido. (194)


    Poderia me ajudar...
  4. Rogerio

    Rogerio Moderator Moderador Equipe de Suporte

    Alguem pode me ajudar com isso?
  5. kirchner

    kirchner Membro Participativo Moderador

    Você não pode compilar este programa.

    Quem vai substituir os {1} e {2} e {3} é o pré-processador, que roda antes do compilador.
    Mas para ele substituir isso precisa dos valores que serão usados. E estes valores só serão conhecidos em tempo de execução.
  6. Rogerio

    Rogerio Moderator Moderador Equipe de Suporte

    Então mas como faço para liberar isso para os usuarios que nao executam .p apenas .r?
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página