我在服務器上使用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. 如何將水晶報表數據源設置爲未連接的數據庫?
- 5. 沒有連接到數據庫的水晶報告圖表
- 6. 如何刪除數據庫專家水晶報表數據庫連接
- 7. 如何將數據庫綁定到水晶報表?
- 8. 從遠程數據庫打印水晶報表 - WPF
- 9. 無法連接到水晶報表2008
- 10. 用asp.net連接水晶報表時數據庫登錄失敗
- 11. 從Web.config VS2008水晶報表數據庫連接
- 12. 水晶報表:未知數據庫連接器錯誤
- 13. 使用vb.net代碼將水晶報表連接到oracle數據庫
- 14. 水晶報表和SQL數據庫
- 15. 如何通過水晶報表製作知識庫連接
- 16. 將phpadmin連接到遠程數據庫
- 17. 如何將我的水晶報告連接到網絡
- 18. VB.Net水晶報表連接字符串
- 19. 無法連接:不正確的登錄參數 - 水晶報表,而數據庫
- 20. 如何讓水晶報表
- 21. 數據庫升級後水晶報表子報表非常慢
- 22. 如何添加ASPNETDB.MDF數據庫,生成水晶報表
- 23. 如何從數據表中添加多行到水晶報表
- 24. 水晶報表
- 25. C#windows水晶報表,如何在水晶報表中編程顯示數據表
- 26. 將遠程mysql數據庫連接到本地mysql數據庫?
- 27. 創建水晶報表數據集/表
- 28. 如何連接遠程mysql數據庫
- 29. 如何將iphone/ipad連接到遠程MSSQLSERVER數據庫?
- 30. 如何將android連接到遠程數據庫
你能解釋一下你的環境? 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