我在服务器上使用Oracle数据库并使用20.34.34.4 ip 我想用csharp创建客户端服务器应用程序,但是我可以在连接到包含服务器的客户端上创建水晶报表数据库以及如何,谢谢。如何将水晶报表连接到远程数据库
-2
A
回答
0
好,
考虑到你的环境是: - Windows Server 2008的64位
C#4
甲骨文11
Suposing水晶13
最初,你应该做的几件事情:
,如果你的操作系统是64位的,您必须安装Oracle驱动程序64,然后在同一home_oracle安装Oracle驱动程序32,这不应该是和home1。 SAP只与home1一起工作。
您必须安装Oracle客户端管理员模式。
- 之后您必须配置您的ODBC驱动程序到Oracle主页1.现在测试您的ODBC连接是否成功。
- 你的应用程序不应该在32位模式下运行。
- 如果安装了两个版本的Oracles都不会忘记您必须在主页1上安装两个驱动程序,并且在两个实例中都具有相同的TNSNAMES.ORA。另外不要忘记que必须以管理员模式安装。
好做一个.NET Web应用程序使用Crystal Reports连接到Oracle,那么你应该确保几件事情:
安装在服务器上的CR版本相匹配您使用的一个您的应用程序/网站
阙的CR的服务器上安装的组件在你的web.config
设置应用程序池正确引用您的应用程序下允许LOCAL SERVICE操作
完全信任模式是在你的工作文件夹启用
的CrystalReportViewer aspnet_client和文件夹复制到服务器的操作系统文件夹。
这里是下载页面:
这里是源代码:
的web.config
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="ConnectionString" connectionString="Data Source=DATA_BASE_NAME;Persist Security Info=True;User ID=USERNAME;Password=PASSWORD;pooling=false;" providerName="System.Data.OracleClient"/>
</connectionStrings>
<appSettings>
<add key="db" value="DATA_BASE_NAME"/>
<add key="connectionString" value="Data Source=DATA_BASE_NAME;Persist Security Info=True;User ID=USERNAME;Password=PASSWORD;pooling=false;"/>
</appSettings>
<system.web>
<compilation debug="true" defaultLanguage="c#" targetFramework="4.0">
<assemblies>
<add assembly="System.Data.OracleClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="CrystalDecisions.CrystalReports.Engine, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.ReportAppServer.ClientDoc, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.ReportSource, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.Shared, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
</assemblies>
</compilation>
</system.web>
</configuration>
个
ReportByCrystal.aspx.cs
<%@ Page Language="C#" AutoEventWireup="true" Theme="theme" CodeFile="ReportByCrystal.aspx.cs"
Inherits="ReportByCrystal" Title="Report By Crystal" %>
<%@ Register Assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"
Namespace="CrystalDecisions.Web" TagPrefix="CR" %>
<head>
</head>
<body>
<form id="ReportCrystal" runat="server">
<div>
<CR:CrystalReportViewer ID="crvCrystalReport" runat="server" AutoDataBind="true" />
</div>
</form>
</body>
ReportByCrystal.cs
using CrystalDecisions.Shared;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Web;
public partial class ReportByCrystal : Page
{
//#region [ Page Events ]
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
try
{
this.ReportParameter();
}
catch (Exception exc)
{
}
if (!IsPostBack)
{
}
}
//#endregion
//#region [ Methods ]
/// <summary>
///
/// </summary>
private void ReportParameter()
{
string reportName = "ReportName.rpt"
string reportPath = Server.MapPath(String.Concat("~/reports/source/", reportName));
string serverName = System.Configuration.ConfigurationManager.AppSettings["db"].ToString();
string databaseName = String.Empty;
string userId = Session["USERNAME"].ToString();
string password = Session["PASSWORD"].ToString();
if (File.Exists(reportPath))
{
ReportDocument reportDoc = new ReportDocument();
reportDoc.Load(reportPath);
foreach (ParameterField paramField in reportDoc.ParameterFields)
{
paramField.CurrentValues.Clear();
}
reportDoc.SetDatabaseLogon(userId, password, serverName, databaseName);
ConnectionInfo crConnectionInfo = new ConnectionInfo();
crConnectionInfo.Type = ConnectionInfoType.SQL;
crConnectionInfo.AllowCustomConnection = true;
crConnectionInfo.IntegratedSecurity = false;
crConnectionInfo.ServerName = serverName;
crConnectionInfo.DatabaseName = databaseName;
crConnectionInfo.UserID = userId;
crConnectionInfo.Password = password;
this.ApplyConnection(reportDoc, crConnectionInfo);
this.crvCrystalReport.EnableParameterPrompt = true;
this.crvCrystalReport.ReportSource = reportDoc;
this.crvCrystalReport.RefreshReport();
}
else
{
this.ltrTitulo.Text = String.Concat("Report not found.");
}
}
/// <summary>
///
/// </summary>
/// <param name="report"></param>
/// <param name="connectionInfo"></param>
private void ApplyConnection(ReportDocument report, ConnectionInfo connectionInfo)
{
this.ApplyLogOnInfo(report, connectionInfo);
this.ApplyLogOnInfoForSubreports(report, connectionInfo);
}
/// <summary>
///
/// </summary>
/// <param name="reportDocument"></param>
/// <param name="connectionInfo"></param>
private void ApplyLogOnInfo(ReportDocument reportDocument, ConnectionInfo connectionInfo)
{
foreach (CrystalDecisions.CrystalReports.Engine.Table tableTemp in reportDocument.Database.Tables)
{
if (tableTemp.Name.ToUpper().StartsWith("COMMAND"))
{
}
TableLogOnInfo tableLogonInfo = tableTemp.LogOnInfo;
tableLogonInfo.ConnectionInfo = connectionInfo;
tableTemp.ApplyLogOnInfo(tableLogonInfo);
bool b = tableTemp.TestConnectivity();
}
}
/// <summary>
///
/// </summary>
/// <param name="reportDocument"></param>
/// <param name="connectionInfo"></param>
private void ApplyLogOnInfoForSubreports(ReportDocument reportDocument, ConnectionInfo connectionInfo)
{
foreach (Section sectionTemp in reportDocument.ReportDefinition.Sections)
{
foreach (ReportObject reportObjectTemp in sectionTemp.ReportObjects)
{
if (reportObjectTemp.Kind == ReportObjectKind.SubreportObject)
{
SubreportObject subreportObject = (SubreportObject)reportObjectTemp;
ReportDocument subReportDocument = subreportObject.OpenSubreport(subreportObject.SubreportName);
this.ApplyLogOnInfo(subReportDocument, connectionInfo);
}
}
}
}
}
问候,
安德鲁·佩斯
相关问题
- 1. 如何将水晶报表数据源设置为未连接的数据库?
- 2. 如何删除数据库专家水晶报表数据库连接
- 3. 如何将数据库绑定到水晶报表?
- 4. 无法连接到水晶报表2008
- 5. 水晶报表:未知数据库连接器错误
- 6. 用asp.net连接水晶报表时数据库登录失败
- 7. 使用vb.net代码将水晶报表连接到oracle数据库
- 8. 如何通过水晶报表制作知识库连接
- 9. 无法连接:不正确的登录参数 - 水晶报表,而数据库
- 10. 如何让水晶报表
- 11. 数据库升级后水晶报表子报表非常慢
- 12. 如何添加ASPNETDB.MDF数据库,生成水晶报表
- 13. 水晶报表
- 14. C#windows水晶报表,如何在水晶报表中编程显示数据表
- 15. 如何连接远程mysql数据库
- 16. 如何将Spring Boot JAR连接到远程Oracle数据库?
- 17. 如何将iphone/ipad连接到远程MSSQLSERVER数据库?
- 18. 如何将android连接到远程数据库
- 19. 如何连接asp.net水晶报表与mysql
- 20. 将CSS应用到水晶报表
- 21. 水晶报表子报表
- 22. 如何在水晶报表中水平分组数据
- 23. 计数的水晶报表
- 24. 水晶报表组数
- 25. 水晶报告和连接问题
- 26. 水晶报表中的冗余数据
- 27. 从数据库插入图像到水晶报表c的报表#
- 28. 远程连接到Access数据库
- 29. OCCI - 连接到远程数据库
- 30. 未连接到Firebird数据库远程
你能解释一下你的环境? Oracle 11? C#4? Windows Server 64位? Net 4.5?有很多方法没有连接它。在SAP论坛网站,你可以找到很多方法来做到这一点。但最困难的部分是要配置您的应用程序和环境来设置一些连接。请修改您的帖子并告诉我们更多。尝试之前再去 - https://infynet.wordpress.com/2010/10/06/crystal-report-in-c/ – 2015-02-23 19:13:03
Oracle 11和visual csharp 2008我的服务器是Windows服务器2008 – tareqp 2015-02-23 19:19:07
Visual CSharp 2008是IDE 。 Server 2008 32或64位? C#2.0或更新版本?水晶版本? – 2015-02-23 19:27:21