Как использовать Crystal Reports с ASP.Net 2.0. Любые образцы/учебники/примеры, показывающие, как развернуть Crystal Reports на производственном сервере.
Как использовать Crystal Reports с ASP.NET?
Ответы (3)
Я сам только что прошел через эту боль, вот пара советов, которые, надеюсь, сэкономят вам время...
Crystal Reports в MSDN — здесь много полезного
Какой подход к сохранению данных следует использовать с Crystal Reports — подробная информация и примеры кода о том, как лучше контролировать жизненный цикл объекта отчета
Это сообщение также дает несколько полезных советов по жизненному циклу объекта отчета.
Развертывание... Последние среды выполнения Crystal Reports не работают в 64-разрядной среде, поэтому при развертывании на 64-разрядном сервере вам придется либо настроить IIS для работы в 32-разрядном режиме, либо использовать предыдущую версию среды выполнения. Мне больше всего повезло со средой выполнения, которая распространяется с VS2008, ее можно найти в
C:\Program Files\Microsoft SDK\Windows\v6.0A\Bootstrapper\Packages\CrystalReports10_5
Я отмечаю, что вы используете ASP.NET 2.0 - я уверен, что существует среда выполнения, эквивалентная VS2005. Попробуйте заставить среду развертывания работать на ранней стадии проекта, так как это, несомненно, вызовет больше головной боли, чем вы ожидаете.
Наконец, последний момент, который стоил нам некоторого времени и о котором стоит упомянуть, — стандартный экран параметров в Crystal Reports не позволяет вам зайти слишком далеко. Если вы хотите усложнить то, как вы представляете свои параметры пользователю (например, если параметры зависят от выбора другого параметра), вам нужно будет свернуть свои собственные экраны параметров. Это довольно просто, так как объектная модель дает вам доступ ко всей необходимой информации о параметрах. Мы пошли по пути создания общего экрана параметров, который строится в соответствии с параметрами, найденными в отчете, на который он указывает.
Это то, что я обычно использую, Asp.net/C#
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
///create instance of class first
ReportDocument rpDoc = new ReportDocument();
///load the report
rpDoc.Load(@"TicketingBasic.rpt");
///pass the report to method for dataInfo
getDBInfo(rpDoc);
/// et the source for report to be displayed
CrystalReportViewer1.ReportSource = rpDoc;
}
protected static void getDBInfo(ReportDocument rpDoc)
{
///Connection Onject
ConnectionInfo cn = new ConnectionInfo();
///DataBase,Table, and Table Logon Info
Database db;
Tables tbl;
TableLogOnInfo tblLOI;
///Connection Declaration
cn.ServerName = "??????";
cn.DatabaseName = "???????";
cn.UserID = "???????";
cn.Password = "????????";
//table info getting from report
db = rpDoc.Database;
tbl = db.Tables;
///for each loop for all tables to be applied the connection info to
foreach (Table table in tbl)
{
tblLOI = table.LogOnInfo;
tblLOI.ConnectionInfo = cn;
table.ApplyLogOnInfo(tblLOI);
table.Location = "DBO." + table.Location.Substring(table.Location.LastIndexOf(".") + 1);
}
db.Dispose();
tbl.Dispose();
}
и на стороне Aspx:
<CR:CrystalReportViewer
ID="CrystalReportViewer1"
runat="server"
AutoDataBind="true"
EnableDatabaseLogonPrompt="false"
/>
Это код, который я обычно использую:
'Generate the Report
Dim oRpt As New ReportDocument
Dim reportPath As String = Server.MapPath("crtTAL.rpt")
oRpt.Load(reportPath)
oRpt.SetDataSource(dsTAL)
If Not IO.Directory.Exists(tempLocation) Then
IO.Directory.CreateDirectory(tempLocation)
End If
If IO.File.Exists(tempLocation & filename) Then
IO.File.Delete(tempLocation & filename)
End If
' ********************************
' First we must create a new instance of the diskfiledestinationoptions class and
' set variable called crExportOptions to the exportoptions class of the reportdocument.
Dim crDiskFileDestinationOptions As New DiskFileDestinationOptions
Dim crExportOptions As ExportOptions = oRpt.ExportOptions
'Export to Word
'append a filename to the export path and set this file as the filename property for
'the DestinationOptions class
crDiskFileDestinationOptions.DiskFileName = tempLocation + filename
'set the required report ExportOptions properties
With crExportOptions
.DestinationOptions = crDiskFileDestinationOptions
.ExportDestinationType = ExportDestinationType.DiskFile
.ExportFormatType = ExportFormatType.WordForWindows
End With
'Once the export options have been set for the report, the report can be exported. The Export command
'does not take any arguments
Try
' Export the report
oRpt.Export()
oRpt.Close()
oRpt.Dispose()
projectCount = projectCount + 1
Catch err As Exception
Response.Write("<BR>")
Response.Write(err.Message.ToString)
errorList = errorList & dtrProjects.Item("Title") & "; "
End Try