Problema
Na geração dos relatórios do Crystal Reports usando banco de dados ORACLE, ocorre o erro:
System.Runtime.InteropServices.COMException (0x800002F4): Falha ao abrir a conexão.
Detalhes: [Código do Fornecedor de Banco de Dados: 12154 ]
Falha ao abrir a conexão.
eixhgvk4.n0o 8020_2740_{760D3DEA-9F38-4D47-820A-35717E4937BE}.rpt
Detalhes: [Código do Fornecedor de Banco de Dados: 12154 ]
at CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass.Export(ExportOptions pExportOptions, RequestContext pRequestContext)
at CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext)
Causa
A ConnectionString passada para a Engine do Crystal Reports está no seguinte formato:
ConnectionString: Driver={NOME_DO_DRIVER};DBQ=SERVIDOR;Port=PORTA;Uid=USUARIO;Pwd=SENHA;
O parâmetro DBQ não deve ser o endereço do servidor, mas sim o TNS Service Name das configurações do ORACLE no servidor.
Por exemplo, se a configuração do arquivo TNSNAMES.ora fosse essa:
tns_service_name =
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=tiger)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME = service_name)))
)
)
Deveria ser passado tns_service_name
no parâmetro DBQ.
Correção
Latromi Client
Criar um novo campo no cadastro de conexões do Latromi para informar o TNS Service Name. Este campo deve ser exibidos apenas para conexões do ORACLE.
Serviço WSApp
O TNS Service Name informado no cadastro da conexão será passado no parâmetro DBQ da ConnectionString do ODBC.