Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

  1. Na criação do objeto OLE deve ser alterado para atribuir uma instância da classe wrapper (Excel ou Word). A include inicializa a variável passada como parâmetro com base na configuração do arquivo datasul_framework.properties (Officedos Parâmetros Globais (CD0101).

    Bloco de código
    languageruby
    titleModelo antigo
    linenumberstrue
    CREATE "Excel.Application" chExcel.
    Bloco de código
    languageruby
    titleModelo novo
    linenumberstrue
    {office/office.i Excel chExcel}
    Informações
    titleOBS

    Caso a include esteja em uma procedure interna, deve ser desfeita a definição da variável global OFFICE_WRAPPERS para correta definição das variáveis de verificação (microsoft/libre)

    Bloco de código
    languageruby
    titleExemplo
    linenumberstrue
    {office/office.i Excel chExcel}
    
    PROCEURE sample:
        &IF DEFINED(OFFICE_WRAPPERS) &THEN
            &UNDEFINE OFFICE_WRAPPERS
        &ENDIF
        {office/office.i Excel chExcel}
    END PROCEDURE.
  2. Na definição das variáveis que serão utilizadas na integração devem ser alteradas do tipo COMPONENT-HANDLE para o tipo CLASS apontando para a interface responsável pela implantação da funcionalidade nas classes Wrapper.

    Bloco de código
    languageruby
    titleModelo antigo
    linenumberstrue
    DEFINE VAR chExcel    AS COM-HANDLE NO-UNDO.
    DEFINE VAR chWorkbook AS COM-HANDLE NO-UNDO.
    DEFINE VAR chRange    AS COM-HANDLE NO-UNDO.
    Bloco de código
    languageruby
    titleModelo novo
    linenumberstrue
    DEFINE VAR chExcel    AS office.iface.excel.ExcelWrapper NO-UNDO.
    DEFINE VAR chWorkbook AS office.iface.excel.Workbook     NO-UNDO.
    DEFINE VAR chRange    AS office.iface.excel.Range        NO-UNDO.
  3. Alterar métodos que não passam parâmetros adicionando “?” ou utilizando um método correspondente sem os mesmos, quando existir.

    Bloco de código
    languageruby
    titleModelo antigo
    linenumberstrue
    chWorkbook:SaveAs(tt-param.arquivo,"56",,,,,,,,,,).
    Bloco de código
    languageruby
    titleModelo novo
    linenumberstrue
    chWorkbook:SaveAs(tt-param.arquivo,"56",?,?,?,?,?,?,?,?,?,?). ou chWorkbook:SaveAs(tt-param.arquivo,"56").
  4. Alterar atribuição à métodos por propriedades com extent.

    Bloco de código
    languageruby
    titleModelo antigo
    linenumberstrue
    chChart:HasAxis({&xlCategory}) = false.
    Bloco de código
    languageruby
    titleModelo novo
    linenumberstrue
    chChart:HasAxis({&xlCategory}, false).
  5. Alterar métodos que recebem como parâmetro a propriedade de outro objeto.

    Bloco de código
    languageruby
    titleModelo antigo
    linenumberstrue
    chWorksheet = chWorkbook:Sheets(chWorkbook:Sheets:COUNT).
    Bloco de código
    languageruby
    titleModelo novo
    linenumberstrue
    iWorkSheets = chWorkbook:Sheets:COUNT.
    chWorksheet = chWorkbook:Sheets(iWorkSheets).
  6. Alterar a atribuição da propriedade VALUE, que é CHARACTER, pela correspondente de acordo com o tipo (DATE, INTEGER, DECIMAL ou LOGICAL) em questão.

    Bloco de código
    languageruby
    titleModelo antigo
    linenumberstrue
    chWorksheet:Range('A1'):Value = da-conversao. /* Variável com o tipo data */
    Bloco de código
    languageruby
    titleModelo novo
    linenumberstrue
    chWorksheet:Range('A1'):DateValue = da-conversao. ou chWorksheet:Range('A1'):SetValue(da-conversao).
    Informações

    O método SetValue() recebe qualquer tipo de valor, independente da tipagem, porem não por ser utilizado dentro de um bloco de ASSIGN. Exemplo:

    chWorksheet:Range('A1'):SetValue('Valor da célula'). ou chWorksheet:Range('A1'):SetValue(10000).

             

  7. Alterar os RELEASEs de objetos OLE por DELETEs de objetos ABL, e caso seja a variável principal da API, o Excel, adicionar a chamada ao método "Release", para que o OLE automation na DLL seja liberado. Caso seja feita a verificação com VALID-HANDLE alterar para uma comparação com o valor desconhecido (?).

    Bloco de código
    languageruby
    titleModelo antigo
    linenumberstrue
    IF VALID-HANDLE(chExcel) THEN
       RELEASE OBJECT chExcel NO-ERROR.
    Bloco de código
    languageruby
    titleModelo novo
    linenumberstrue
    IF chExcel <> ? THEN
       DELETE OBJECT chExcel NO-ERROR.