Histórico da Página
Em função da nova estrutura adotada (classes Wrapper) existem algumas pequenas mudanças na criação de uma integração com a plataforma Office que devem ser observadas e ajustadas caso necessário:
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 (Office).
Bloco de código language ruby title Modelo antigo linenumbers true CREATE "Excel.Application" chExcel.
Bloco de código language ruby title Modelo novo linenumbers true {office/office.i Excel chExcel}
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 language ruby title Modelo antigo linenumbers true 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 language ruby title Modelo novo linenumbers true 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.
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 language ruby title Modelo antigo linenumbers true chWorkbook:SaveAs(tt-param.arquivo,"56",,,,,,,,,,).
Bloco de código language ruby title Modelo novo linenumbers true chWorkbook:SaveAs(tt-param.arquivo,"56",?,?,?,?,?,?,?,?,?,?). ou chWorkbook:SaveAs(tt-param.arquivo,"56").
Alterar atribuição à métodos por propriedades com extent.
Bloco de código language ruby title Modelo antigo linenumbers true chChart:HasAxis({&xlCategory}) = false.
Bloco de código language ruby title Modelo novo linenumbers true chChart:HasAxis({&xlCategory}, false).
Alterar métodos que recebem como parâmetro a propriedade de outro objeto.
Bloco de código language ruby title Modelo antigo linenumbers true chWorksheet = chWorkbook:Sheets(chWorkbook:Sheets:COUNT).
Bloco de código language ruby title Modelo novo linenumbers true iWorkSheets = chWorkbook:Sheets:COUNT. chWorksheet = chWorkbook:Sheets(iWorkSheets).
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 language ruby title Modelo antigo linenumbers true chWorksheet:Range('A1'):Value = da-conversao. /* Variável com o tipo data */
Bloco de código language ruby title Modelo novo linenumbers true 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).
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 language ruby title Modelo antigo linenumbers true IF VALID-HANDLE(chExcel) THEN RELEASE OBJECT chExcel NO-ERROR.
Bloco de código language ruby title Modelo novo linenumbers true IF chExcel <> ? THEN DELETE OBJECT chExcel NO-ERROR.