Integrando Progress com outros bancos de dados

Escrito por Eloi Rene Pscheidt em 9 de setembro de 2008, 09:00h

Existem duas maneiras de conectar bases de dados de terceiros através de uma aplicação desenvolvida em Progress.

A primeira delas é através da aquisição de uma licença Dataserver. Esta licença permite a reutilização dos programas já desenvolvidos para base Progress com pouca necessidade de ajuste no seu código. Existem licenças Dataserver para conectar bancos Oracle, SQL Server e também para conectar bases diversas através de conexão ODBC.

A outra maneira de efetuar esta integração é através de conexões ODBC utilizando uma tecnologia da Microsoft chamada ActiveX Data Objects, ou simplesmente ADO.

Esta tecnologia é gratuita e permite conexão com todas as bases de dados passíveis de conexão via ODBC, dentre elas Oracle, SQL Server, MySql, MS Access, Interbase, Firebird, DB2, etc.

Os comandos Progress que permitem tal acesso são os mesmos utilizados para acessar fontes de dados COM, que permitem também acesso aos produtos do Office, como o Word e o Excel. Através destes objetos COM conseguimos estabelecer uma conexão para estas bases de dados ODBC e assim executar instruções SQL diretamente na base de dados desejada.

A conexão via ADO permite tanto a leitura de registros como também a criação, alteração e exclusão dos mesmos. Quando a base de dados suporta Stored Procedures, estas também poderão ser executadas.

Esta forma de integração deverá ser bem avaliada, lembrando que a conexão com o banco passará pelo driver ODBC, o que em alguns casos pode não trazer o desempenho desejado. Entretanto, conexões ADO permitem ao desenvolvedor otimizar as consultas para o banco de dados, pois o Progress apenas encaminha os comandos SQL escritos no programa para o banco de dados, sem efetuar nenhum tipo de tradução.

Existe bastante documentação sobre ADO na internet, especialmente no endereço http://www.w3schools.com/ado/default.asp.

Sobre a utilização dos objetos COM no Progress, existe o manual 4GL/ABL Reference, disponível no endereço  http://www.progress.com/products/documentation. Neste mesmo endereço, no link support é possível consultar KBases que exemplificam esta integração.

Categorias: Conectividade | DataServer | Oracle | SQL Server

Tags: , , , , ,

Comentários (10) -

em 1 de outubro de 2008, 08:56h

AChei ótima a opoção de conectar via ADO, mas não consegui colocar para funcionar. A conexão deve ser feita via código ?

Cristiano

em 1 de outubro de 2008, 17:38h

Olá Cristiano!

Necessita de codificação sim. Você deverá criar variáveis do tipo handle dentro da aplicação Progress para estabelecer esta conexão.

Veja este KBase da Progress que possui um exemplo bem completo de um código que conecta uma base Oracle, utilizando este conceito:

progress.atgnow.com/.../AnswerControls.jsp

Um abraço!
Eloi

eloi

em 21 de abril de 2010, 09:26h

Estou precisando conectar o SQL Server mas não acho um exemplo, oqe você passou acima não está funcionando, pode me ajudar?


Atenciosamente,
Thiago Souza;

Thiago Antonio de Souza

em 22 de abril de 2010, 08:21h

Thiago,

envie o seu código com o erro para o meu e-mail, assim trocamos algumas mensagens sobre o que está ocorrendo.

Att,
Eloi

eloi

em 22 de abril de 2010, 08:27h

Thiago,

desculpe, meu e-mail não está divulgado no site. Para manter a interatividade do blog, por favor post seu código com o erro aqui mesmo nos comentários.

Att,
Eloi

eloi

em 24 de novembro de 2010, 08:16h

Bom dia,

    Aqui na empresa estamos trabalhando em um ambiente misto de programação, Oracle e Progress 10B, estou tendo grande dificuldade em criar programas progress olhando as tabelas do Schema Holder na hora da validação das informações do lado do Oracle, ao dar um create em uma tabela oracle ela dispara triggers Oracle que geram erros do Oracle, esses erros aparecem na tela porem nçao consigo validar estes erros, teria como vocês criarem um tópico abordando estes tratamentos dos erros em ambiente Oracle ?

Sidival

em 29 de novembro de 2010, 08:30h

Olá Sidival!

Primeiro gostaria de agradecer o contato. Esperamos que as informações disponíveis neste blog sejam úteis de alguma forma.

Sobre o problema que você está enfrentando, poderia detalhar um pouco mais a sua dificuldade em tratar os erros reportados? A sua dúvida é como obter o código ORA-XXXX via Progress?

Att,
Eloi

eloi

em 2 de fevereiro de 2011, 10:57h

Correção do link postado na resposta do primeiro comentário:

progress.atgnow.com/.../Group.jsp

Att,
Eloi

eloi

em 19 de abril de 2012, 08:15h

Bom Dia Eloi !

Eu tentei executar um Stored Procedure do SQL Server no Progress usando ADO, mas não sei como faço para passar parâmetros para a SP.

Assign ObjCommand:ActiveConnection = ObjConnection
ObjCommand:CommandText = "sp_mng_Integracao_CondicaoPagamento"
ObjCommand:CommandType = 1 /* adCmdText */
ObjConnection:CursorLocation = 3 /* adUseClient */
ObjRecordSet = ObjCommand:Execute(OUTPUT ODBC-NULL, "", 1)
ODBC-RECCOUNT = ObjRecordSet:RecordCount.

Cheguei a usar algo do tipo:
ObjCommand:Parameters:Append(ObjCommand:CreateParameter("@int_IdEmpresa", 3, 1, 0)).
ObjCommand:Parameters:Append(ObjCommand:CreateParameter("@int_IdFatIntegracao", 3, 1, 0)).
ObjCommand:Parameters:Append(ObjCommand:CreateParameter("@str_DescricaoTipo", 129, 1, 0)).
ObjCommand:Parameters:Append(ObjCommand:CreateParameter("@int_Ativo", 3, 1, 0)).
/*ObjCommand:Parameters:Append(ObjCommand:CreateParameter("@Erro_Decricao", 3, 2, 0)).*/


ObjCommand:Parameters("@int_IdEmpresa") = 102.
ObjCommand:Parameters("@int_IdFatIntegracao") = 1.
ObjCommand:Parameters("@str_DescricaoTipo") = 'TESTE'.
ObjCommand:Parameters("@int_Ativo") = 1.
/*ObjCommand:Parameters("@Erro_Decricao").*/

Mas ocorre o erro:
Parameter object is improperly defined.Inconsistent or incomplete information was provided.
Não consegui descobrir como resolver o problema ainda.

Marcos Giufrida

em 20 de abril de 2012, 19:26h

Consegui avançar mais um pouco Eloi...
Já consegui passar os parâmetros e confirmar a execução da SP no SQL Server.
Agora, só preciso descobrir como faço para obter o retorno da variável de Output dessa SP que retorna tem a função de retornar os erros da SP.
Para passar os parâmetros de Input, usei a linha de comando abaixo:

       ObjCommand:CommandText = "sp_mng_Integracao_CondicaoPagamento @int_IdEmpresa=102,
                                                                     @int_IdFatIntegracao=0,
                                                                     @str_DescricaoTipo='TESTE555',
                                                                     @int_Ativo=1"

Marcos Giufrida

Comentar

biuquote
  • Comentário
  • Pré-visualização
Loading

Acesso LogMeIn

Informe o código PIN: