Как использовать Crystal Reports с ASP.NET?

Как использовать Crystal Reports с ASP.Net 2.0. Любые образцы/учебники/примеры, показывающие, как развернуть Crystal Reports на производственном сервере.


person Community    schedule 16.12.2008    source источник


Ответы (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 не позволяет вам зайти слишком далеко. Если вы хотите усложнить то, как вы представляете свои параметры пользователю (например, если параметры зависят от выбора другого параметра), вам нужно будет свернуть свои собственные экраны параметров. Это довольно просто, так как объектная модель дает вам доступ ко всей необходимой информации о параметрах. Мы пошли по пути создания общего экрана параметров, который строится в соответствии с параметрами, найденными в отчете, на который он указывает.

person Paul Nearney    schedule 16.12.2008

Это то, что я обычно использую, 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"
     />
person Developer    schedule 05.08.2009

Это код, который я обычно использую:

'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
person SchwartzE    schedule 03.06.2009