Estou com problema na utilização de uma extensão para integração com Banco de Dados ADABAS.

A class da Extension foi implementada da seguinte forma:


using System;
using System.Collections;
using System.Data;
using OutSystems.HubEdition.RuntimePlatform;
using OutSystems.RuntimePublic.Db;
using System.Data.OleDb;
using System.Collections.Generic;

namespace OutSystems.NssUtilsAdabas
{

    public class CssUtilsAdabas : IssUtilsAdabas
    {

        /// <summary>
        ///
        /// </summary>
        /// <param name="ssResultado"></param>
        public void MssGetOrgaos(out RLOrgaoStructRecordList ssResultado)
        {
            ssResultado = new RLOrgaoStructRecordList();

            OleDbConnection conn = new OleDbConnection();

            conn.ConnectionString = "Provider=CONNXOLEDB;Persist Security Info=True;prompt=noprompt;User ID=xxxxxx;Password=xxxxxx;Mode=ReadWrite;Data Source=\\\\{servidor}\\{diretorio}\\{arquivo}.cdd";

            string queryString = "SELECT CODIGO, DESCRICAO FROM TABELA WHERE (CODIGO IS NOT NULL AND DESCRICAO IS NOT NULL)";

            OleDbCommand command = new OleDbCommand(queryString, conn);
            try
            {
                conn.Open();

                OleDbDataReader reader = (OleDbDataReader)command.ExecuteReader();
                if (reader.HasRows)
                {

                    while (reader.Read())
                    {
                        RCOrgaoStructRecord orgao = new RCOrgaoStructRecord();

                        orgao.ssSTOrgaoStruct.ssCodigo = (string)reader["CODIGO"];
                        orgao.ssSTOrgaoStruct.ssDescricao = (string)reader["DESCRICAO"];
                        ssResultado.Add(orgao);

                    }
                    reader.Close();

                }

            }
            catch (Exception ex)
            {
                throw new Exception("Erro no acesso: " + ex.Message);
            }

        } // MssGetOrgaos

    } // CssUtilsAdabas

} // OutSystems.NssUtilsAdabas



Ao executar a Action na minha aplicação OutSystems, a extensão está retornando a seguinte mensagem:

Erro no acesso: 'CONNXOLEDB' falhou sem nenhuma mensagem de erro disponível. Código do resultado: DB_E_BADACCESSORHANDLE(0x80040E00).



Este erro ocorre exatamente ao tentar acessar o dado da coluna CODIGO do primeiro registro do laço.
Mas se eu passar valores fixos para ssCodigo e ssDescricao a lista é percorrida e o RecordList no OutSystems é preenchido com estes valores fixos a quantidades de vezes que possui a lista (quantidade de registros retornados da consulta).


Troquei a string de conexão apontando para uma base SQL Server e o retorno na ssResultado foi realizado normalmente e os dados foram apresentados na minha aplicação OutSystems, ou seja, a Extension funcionou corretamente.

Fiz uma cópia do projeto .NET da Extension e criei uma interface para fazer a chamada do método MssGetOrgaos e o acesso aos dados do retorno da consulta funcionou corretamente.

Também criei outro projeto .NET e fiz referencia as DLLs geradas da Extension e o acesso aos dados retornados da consulta funcionou corretamente.


Seguem abaixo as versões que estou utilizando.

OutSystems: 9.1.301
Provider CONNX 11.50.01.1307
Windows 2012 R2 Standard
Stack .NET
SQL Server 2012



Alguém tem alguma sugestão?

Ola MayCon,


Conseguiste resolver o teu problema?

Pelo que vejo o código parece todo bem. 

Um dos problemas mais comuns que acontece a testar directamente no visual studio é que os programas de AnyCpu correm em 32bits (em vez de 64 que é o normal eles serem executados). Podes experimentar mudando o projecto para ser apenas x64?



Cumprimentos,

João Rosado

Hi Maycon, Can you please post your problem\idea in english so that other community members can also try to help you. Regards -PJ-