¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como projetar um RPT universal compatível com Informix e PostgreSQL

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 1 Vistas
0
Cargando...

RPT projetado para Informix não funciona com PostgreSQL.

Detalhe:

Estou usando o Crystal 2020 para projetar arquivos RPT. Inicialmente, os RPT foram projetados para o banco de dados Informix e um procedimento armazenado do Informix foi vinculado ao relatório.

Em seguida, desenvolvemos uma aplicação em C# para carregar arquivos RPT e carregar dinamicamente a Origem de Dados ODBC do Informix para imprimir o relatório. O relatório foi impresso corretamente e não houve problemas com o Informix. Da mesma forma, projetamos 500 relatórios e todos funcionaram perfeitamente com a origem de dados do driver ODBC do Informix.

Agora, o requisito mudou e o cliente deseja usar o banco de dados PostgreSQL. Utilizamos os mesmos RPT projetados para o Informix e fornecemos a origem de dados ODBC do PostgreSQL na aplicação C# e tentamos imprimir os relatórios, mas todos os relatórios estão vazios. Minha compreensão é que o relatório do Crystal é independente do banco de dados e o mesmo arquivo RPT funcionará com todos os bancos de dados se fornecermos/carregarmos dinamicamente a origem de dados ODBC (DSN).

Tentei identificar a causa raiz e abri o RPT no Crystal 2020 e vinculei uma função semelhante do PostgreSQL. Agora percebi que os nomes dos campos retornados pelo procedimento armazenado não têm nenhum sufixo ":n", enquanto o sufixo ":n" é adicionado aos nomes dos campos retornados pelos procedimentos armazenados do Informix. E acredito que o relatório do Crystal espera o nome exato do campo com sufixo (:1,:2,:3..) no relatório para exibir, porque os mesmos campos são usados no relatório para mostrar. Para fazer com que o RPT do Informix funcione com o PostgreSQL, tenho que substituir manualmente todos os nomes de campo no RPT por um novo (como ddr_key1:1 para ddr_key1 e batch_key1:1 para batch_key1)

Anexando Captura de tela:

Por favor, ajude-me a projetar um RPT universal que possa funcionar com todos os bancos de dados ou que possa imprimir o relatório do Crystal após carregar dinamicamente qualquer Origem de Dados ODBC de um banco de dados diferente. Não tenho certeza se isso é possível com o Crystal Report.

Portanto, o ponto é que não quero redesenhar os mais de 500 relatórios novamente ou substituir o nome do campo em todos os lugares em cada arquivo RPT que foram projetados para o Informix e funcionavam perfeitamente com o Informix.

Quero projetar um único arquivo RPT que possa funcionar com todos os bancos de dados sem fazer alterações significativas ou redesenhar os RPT.

image.png
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

A provisão da fonte de dados não é um problema. Estou fornecendo isso dinamicamente através de código C# usando a classe "CrystalDecisions.Shared.ConnectionInfo" e consigo me conectar tanto ao Informix quanto ao PostgreSQL.

Mas o ponto é que o campo retornado pelo procedimento armazenado é usado em fórmulas e relatórios. Os nomes desses campos são diferentes no Informix (com sufixo ":n") e no PostgreSQL, e acredito que é por isso que o Crystal não consegue popular esses valores de campo para o PostgreSQL quando o mesmo RPT projetado para o Informix é usado.

Para fazer com que o RPT do Informix funcione com o PostgreSQL, preciso substituir todos os campos retornados como ddr_key1:1 => ddr_key1 e batch_key1:2 => batch_key1.

image.png
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Existem utilitários de terceiros que podem atualizar em massa a fonte de dados, portanto, não é necessário repetir este procedimento manualmente em centenas de relatórios.

Ken Hamady mantém uma lista de Utilitários de Gerenciamento de Relatórios Crystal Reports de terceiros aqui .

Aqui está um vídeo demonstrativo de como meu software Visual CUT atualiza em massa a fonte de dados de vários relatórios.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Se não funcionar para você, você deve ser capaz de usar a API ReplaceConnection().

Procure no Google, há artigos na base de conhecimento sobre como utilizá-la.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

O que acontece se substituir a conexão no CR Designer?

Se funcionar sem a janela pop-up do Field Mapping UI aparecer, então o ReplaceConnection deve funcionar para você.

Se a janela pop-up do Field Mapping UI aparecer, então a única opção é corrigir cada relatório manualmente.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?