Avalados por :

Como integrar o Microsoft SQL Server 2012 Express LocalDB com o SAP Crystal Reports: Guia detalhado

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

Olá,

Disposto a transferir algumas bases de dados para o Microsoft SQL Server 2012 (2014) Express LocalDB , tenho tentado mapear alguns relatórios nessa base de dados.

Utilizando OLE DB SQL Native Client (v11) e SAP CR RunTime SP10 (>SP9), ainda estou enfrentando problemas ao utilizar essa fonte de dados:

Após criar alguns relatórios simples (padrão com 2-3 campos da base de dados):

- Designer do VS:

+ ao "verificar base de dados" ou "visualizar" o relatório, sempre reclama de tabelas ausentes.

+ ao tentar "remapear" tabelas de um SQL Server 2012 Express LocalDB para outro, falha, reclamando de não encontrar recursos.

- Executando a aplicação (.NET 4.0, 32 ou 64 bits):

+ sem alterações na configuração do relatório: CR Viewer reclama com múltiplos códigos de erro (17, ...) que não consegue encontrar as tabelas.

+ ao tentar alterar a base de dados configurada a partir do relatório: CR Viewer reclama com alguns códigos de erro adicionais.

=> O Microsoft SQL Server 2012 Express LocalDB é agora oficialmente compatível com o CR?

=> Alterar a configuração da fonte de dados/base de dados durante a execução é agora oficialmente compatível com o CR?

Sinta-se à vontade para fornecer qualquer link / como fazer / documento técnico sobre como gerenciar o Microsoft SQL Server 2012 Express LocalDB com o SAP CR!

Muito obrigado antecipadamente.

Saudações.

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

4 Respuestas

0
Cargando...

Olá JP,

O problema é que você não especifica o MDF como os arquivos do banco de dados:

ci.DatabaseName = builder.AttachDBFilename; // = D:\TEST\TEST.MDF

Você só especifica o Servidor e as informações de login:

// percorrer todas as tabelas e passar as informações de conexão
foreach (CrystalDecisions.CrystalReports.Engine.Table crTable in crTables)
{
mainSecureDB = rpt.Database.Tables[tableIndex].LogOnInfo.ConnectionInfo.IntegratedSecurity;
string mainTableName = crTable.Name.ToString();
tableIndex++;

// btrDataFile - Servidor
// btrSearchPath - Banco de dados
// btrFileLocation - Nome de usuário
// btrPassword - senha

// passar os parâmetros necessários para o objeto connectionInfo
// crConnectioninfo.ServerName = btrDataFile.Text.ToString();
crConnectioninfo.ServerName = "10.161.12.206a";
if (!mainSecureDB)
{
crConnectioninfo.UserID = "sa";
crConnectioninfo.Password = "Password";
crConnectioninfo.DatabaseName = "TEST";
}
else
{†† // mostrar as informações de conexão
crConnectioninfo.IntegratedSecurity = true;
crConnectioninfo.UserID = btrFileLocation.Text.ToString();
crConnectioninfo.Password = btrPassword.Text.ToString();
crConnectioninfo.DatabaseName = btrSearchPath.Text.ToString();
}

crTableLogOnInfo = crTable.LogOnInfo;
crTableLogOnInfo.ConnectionInfo = crConnectioninfo;
crTable.ApplyLogOnInfo(crTableLogOnInfo);

// SQL Server
crTable.Location = crDatabase + ".dbo." + "orders"; // crTable.Location;
...

Atenciosamente,

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

Acredito - esqueça isso - sei que enquanto isso não funcionar no designer, você está perdendo seu tempo tentando fazê-lo funcionar no código. Portanto, minha sugestão é sobre o designer independente. Por exemplo, precisamos resolver isso primeiro:


- VS designer:
 + quando "verificar o banco de dados" ou "visualizar" o relatório, sempre reclama de tabelas ausentes.
 + quando você tenta re-mapear tabelas de um SQL Server 2012 Express LocalDB para outro, falha, reclamando que não consegue encontrar recursos.

e é bastante possível que o designer independente seja de grande ajuda.

- Ludek

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

Ol· e obrigado pelo seu tempo.

Como solicitado, abaixo encontrar· informaÁıes adicionais solicitadas (cÛdigos para cada etapa que gera erro).

- Sim, usando (OLE DB) SQL Native Client v11

- Designer do VS:

+ ao "verificar banco de dados" ou "visualizar" o relatÛrio: "Excluir tabela" "Tabela de banco de dados "xxx" n„o encontrada. Continuar a excluir esta tabela do relatÛrio" (em seguida, mostra os resultados do relatÛrio ...)

+ ao tentar "remapear" tabelas de um SQL Server 2012 Express LocalDB para outro: "N„o È possÌvel abrir ou acessar o objeto de dados" (traduzido de "Impossible d'ouvrir l'objet de donnÈes ou d'y accÈder") e ent„o "Erro de conector de banco de dados desconhecido" (traduzido de "Erreur Database Connector inconnue"). Essas duas mensagens de erro se repetem para cada tabela contida no relatÛrio

- AplicaÁ„o em execuÁ„o (.NET 4.0, 32 ou 64 bits)

Feito com as bibliotecas do SAP CR do VS2013 no modo Debug do projeto do VS.

Estou enfrentando o mesmo problema ao executar em outro computador que possui apenas o tempo de execuÁ„o SP10.

Ambos podem executar consultas do c# no banco de dados.

+ sem nenhuma alteraÁ„o na configuraÁ„o do relatÛrio: "Tabela "xxx" n„o encontrada. Erro no arquivo xxxx{53312761-372A-42CB-882B-D9C4A1695350}.rpt. N„o È possÌvel encontrar a tabela."

+ ao tentar alterar o banco de dados configurado a partir do relatÛrio: "N„o È possÌvel iniciar a conex„o. Detalhes: [CÛdigo do provedor de banco de dados: 18456], N„o È possÌvel iniciar a conex„o. Detalhes: [CÛdigo do provedor de banco de dados: 4060], N„o È possÌvel iniciar a conex„o xxxx{4D826462-CD30-44FD-8E2B-629F69F60596}.rpt. Detalhes: [CÛdigo do provedor de banco de dados: 18456]"

=> 18456 se refere a um login incorreto. Atualmente estou usando a conex„o de seguranÁa integrada, relatando os par‚metros de sqldatabase do .net a partir da aplicaÁ„o existente/conectada ConnectionString.

>>> Para referÍncia, aqui est· o que È feito no cÛdigo para alterar o banco de dados configurado:

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(GpmiDb.ConnectionString);

CrystalDecisions.Shared.ConnectionInfo ci = new CrystalDecisions.Shared.ConnectionInfo();
ci.ServerName = builder.DataSource; // = (LocalDB)\v11.0
ci.DatabaseName = builder.AttachDBFilename; // = D:\TEST\TEST.MDF
ci.IntegratedSecurity = builder.IntegratedSecurity; // = true
ci.UserID = builder.UserID; // = ""
ci.Password = builder.Password; // = ""
ci.Type = ConnectionInfoType.SQL; // TambÈm tentei com "CRQE" (o que È usado dentro do relatÛrio antes da modificaÁ„o) mas tenho o mesmo problema.

foreach (CrystalDecisions.CrystalReports.Engine.Table tbl in rd.Database.Tables)
{
TableLogOnInfo logon = tbl.LogOnInfo;
logon.ConnectionInfo = ci;
tbl.ApplyLogOnInfo(logon);
// tbl.Location = tbl.Location;
}

Sections sections = rd.ReportDefinition.Sections;
foreach (Section section in sections)
{
ReportObjects reportObjects = section.ReportObjects;
foreach (ReportObject reportObject in reportObjects)
{
if (reportObject.Kind == ReportObjectKind.SubreportObject)
{
SubreportObject subreportObject = (SubreportObject)reportObject;
ReportDocument subReportDocument = subreportObject.OpenSubreport(subreportObject.SubreportName);
SetConnection(subReportDocument, ci);
}
}
}

<<<

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

Olá JP,

Qual é o primeiro código de erro que você está recebendo?

Esses erros são relatados diretamente pelo cliente/DB do SQL Server. Portanto, detalhes do erro são necessários para determinar o problema.

Para se conectar, você deve usar a dll do cliente nativo do MS SQL 11.

Don

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?