Lentidão ao salvar/compilar

Discussão em 'Progress 4GL' iniciado por denismaster, Setembro 15, 2015.

  1. denismaster

    denismaster Membro Participativo

    E aew pessoal.

    Estou criando alguns programas que exportam para o excel.

    Parece coisa do "tinhoso" basta eu declarar que vai ter os handle do chexcelapplication.... toda vez que vou salvar ou compilar demora uns 5 minutos.

    DEFINE VARIABLE chExcelApplication AS COM-HANDLE NO-UNDO.
    DEFINE VARIABLE chWorkbook AS COM-HANDLE NO-UNDO.
    DEFINE VARIABLE chworksheet AS COM-HANDLE NO-UNDO.

    Alguém tem alguma sugestão ou idéia pra isso diminuir?
    Já aumentei a prioridade no sistema para o progress... e nada...

    Valew
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Qual a versão do seu excel?
    O progress e o excel são 32 ou 64 bits ou cada um é de uma arquitetura diferente?
  3. denismaster

    denismaster Membro Participativo

    Rafael eu utilizo o Excel 2010 32 bits e o progress 10.2b 32 bits...
  4. ds201

    ds201 Membro Participativo

    Dá uma olhada na API ipapi011.p.
    Há muito tempo que deixei de usar o modo tradicional de geração de dados em Excel.
    Este exemplo é fraquinho, mas tenho programas "de verdade" usando este método.

    Código:
    /***********************************************************
    Esta funcao serve apenas para relatorios simples, tendo como
    maior objetivo velocidade na exportacao de massa de dados
    ***********************************************************/
    DEF VAR c-linha       AS CHAR.
    DEF VAR i-linha       AS INTEGER.
    DEF VAR c-delimitador AS CHAR INIT "\Oed$%".
    
    def var wk-aux as int.
    etime(yes).
    
    OUTPUT TO c:\temp\teste.txt.
    
    ASSIGN c-linha = "Teste" + c-delimitador +
                     "Hora"  + c-delimitador +
                     "Numero".
    
    PUT c-linha FORMAT "X(" + STRING(LENGTH(c-linha)) + ")" SKIP.
    
    REPEAT:
        ASSIGN i-linha = i-linha + 1.
        ASSIGN c-linha = "Api Exporta‡Æo"        + c-delimitador +
                         STRING(TIME,"HH:MM:SS") + c-delimitador +
                         STRING(i-linha).
        PUT c-linha FORMAT "X(" + STRING(LENGTH(c-linha)) + ")" SKIP.
        IF i-linha > 70000 THEN LEAVE.
    END.
    
    OUTPUT CLOSE.
    
    assign wk-aux = ETIME / 1000.
    display "Tempo_1: " string(wk-aux,"HH:MM:SS").
    
    RUN ipp\ipapi011.p(INPUT "c:\temp\teste.txt",
                       INPUT "1,1,2", /*Formato da Coluna … 1 - Texto / 2 - Geral*/
                       INPUT c-delimitador).
    assign wk-aux = ETIME / 1000.
    display "Tempo_2: " string(wk-aux,"HH:MM:SS").
    
  5. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    eu uso direto o acesso a DLL do excel, funciona bem, só tive uns probleminhas que nos primeiros codigos que eu vi, fazia uma carga do "servidor" excel, aproveitando se já tinha uma instancia do excel carregada, dai não conseguia gerar 2 relatorios simultaneo, mas já resolvi isso.
  6. denismaster

    denismaster Membro Participativo

    Então ... ds201 o meu maior problema é que tenho que passar os dados para uma tabela onde já tem informações, está formatada e te já tem fórmulas...
    E bootstrapmaster essa da dll do excel eu nunca vi... vou pesquisar...

Compartilhe esta Página