1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

Atualização de DF - Como fazem?

Discussão em 'Banco de Dados / Database' iniciado por af.dums, Outubro 15, 2013.

  1. af.dums

    af.dums Membro Ativo

    Senhores, temos um ambiente onde temos constantes alterações de DF em tabelas especificas (utilizamos EMS). Meu problema e com erros nestas atualizações (problemas na recompilação, fontes, etc)...

    O que eu queria saber é qual procedimento vocês utilizam em suas empresas para fazer estas atualizações.

    Obrigado.

    Att,
    Anderson
  2. LFBuozi

    LFBuozi Membro Participativo

    Os problemas que você diz são os erros de CRC nos programas?
    Se for isto, também gostaria de conhecer outro procedimento, mas a única forma que vejo é, antes do load, procuro em meu diretório de específicos todos os programas que usam a tabela, se você usar o Notepad++ ele tem o ctrl shift f que ajuda muito, e compilo.
  3. matheusantos83

    matheusantos83 Sem Pontuação

    Antes de aplicar uma DF é preciso primeiro:

    - COnhecer seu ambiente e saber onde essa tabela Específica vai influenciar;
    - Atualizar DF em Base Teste;
    - Testar os programas que acessam essa(s) tabela(s);
    - Recompilar aqueles que apresentarem problema de CRC;
  4. klebaum

    klebaum Membro Participativo

    Agora com o Console de Atualização (Datasul 11/12) simplificou o processo de aplicar deltas, já que não é preciso fazer nada manualmente, menos risco de falha.

    Quanto aos específicos, existe um plugin no próprio Console que exibe quais devem ser recompilados.
  5. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Existe uma opção pra vc não gravar o CRC nos programas, dai ele não dá o erro, mas vc corre o risco de rodar um programa e ele fazer coisa errada na tabela por causa de campos novos, eu prefiro entrar no aplication compiler e mandar compilar tudo, demora um pouco mas é garantido que não dá problemas.
    Outra coisa que eu estou fazendo e está ajudando nesse sentido, é criando classes que fazem a manutenção das tabelas, assim, erro de CRC só acontece em um programa, o que usa a tabela.
  6. af.dums

    af.dums Membro Ativo

    Olá.

    Obrigado pelas respostas...

    O que fazemos aqui é criar dentro de nosso versionador uma rotina que recompila todos os programas por busca de uma palavra chave no diretório, mais ou menos a mesma regra do programa abaixo, apenas rodando automático, o abaixo utilizei para fazer o procedimento manualmente por um tempo.

    Abraços...

    Código:
    DEF VAR h-acomp AS HANDLE NO-UNDO.
    
    DEF VAR c-buscar    AS CHAR FORMAT "x(30)" NO-UNDO.
    DEF VAR c-diretorio AS CHAR FORMAT "x(30)" INIT "c:\produc\tce" NO-UNDO.
    
    DEF TEMP-TABLE tt-texto NO-UNDO
        FIELD w-texto AS CHAR FORMAT "X(80)".
    
    UPDATE c-buscar    LABEL "Buscar"
           c-diretorio LABEL "Diretorio".
    
    DEF BUFFER b-texto FOR tt-texto.
    
    RUN utp/ut-acomp.p PERSISTENT SET h-acomp.
    
    RUN pi-inicializar IN h-acomp(INPUT "Lendo Diret½rios").
    
    RUN pi-acompanhar IN h-acomp(INPUT "Varrendo diret½rio").
    
    DOS SILENT DIR /s /b VALUE(c-diretorio) > "c:\temp\arq.txt". /*copia arquivos e subdiretorio (nome dos arquivos) para o arquivo c:\temp\arq.txt*/
    
    INPUT FROM c:\temp\arq.txt NO-ECHO.
    REPEAT:
        RUN pi-acompanhar IN h-acomp(INPUT "Importando Linhas").
        CREATE tt-texto. /*copia os programas (nome dos arquivos) do arquivo para a temp-table*/
        IMPORT UNFORMATTED tt-texto.
    END.
    INPUT CLOSE.
    
    OUTPUT TO c:\temp\programas.txt.
    PUT "OUTPUT TO c:\temp\log-compilar.txt." SKIP(1).
    FOR EACH tt-texto NO-LOCK:
        RUN pi-acompanhar IN h-acomp(INPUT tt-texto.w-texto).
        IF INDEX(tt-texto.w-texto,".w") = 0 AND
           INDEX(tt-texto.w-texto,".i") = 0 AND
           INDEX(tt-texto.w-texto,".p") = 0 THEN
            NEXT.
    
        RUN pi-buscar-arquivo(INPUT tt-texto.w-texto,
                              INPUT c-buscar).
    
        IF RETURN-VALUE = "NOK":U THEN
            NEXT.
    
        PUT UNFORMATTED
            "PUT '" tt-texto.w-texto "' SKIP." SKIP
            "COMPILE " tt-texto.w-texto " SAVE INTO c:\temp."  SKIP.
    END.
    
    PUT SKIP
        "OUTPUT CLOSE.".
    
    RUN pi-finalizar IN h-acomp.
    
    PROCEDURE pi-buscar-arquivo:
        DEF INPUT PARAM p-arquivo AS CHAR    NO-UNDO.
        DEF INPUT PARAM p-buscar  AS CHAR    NO-UNDO.
    
        DEF VAR clinha AS CHAR NO-UNDO.
    
        ASSIGN FILE-INFO:FILE-NAME = p-arquivo.
    
        IF FILE-INFO:FULL-PATHNAME = ? THEN
            RETURN "".
    
        INPUT FROM VALUE( p-arquivo ).
        REPEAT:
            IMPORT UNFORMATTED clinha.
    
            IF INDEX(clinha,p-buscar) <> 0 THEN DO:
                INPUT CLOSE.
                RETURN "OK":U.
            END.
    
        END.
        INPUT CLOSE.
        RETURN "NOK":U.
    END PROCEDURE.
    
    
    
    

Compartilhe esta Página