2008-12-16 15 views

Odpowiedz

7

Po prostu był przez ból ten sam, oto kilka wskazówek, które miejmy nadzieję zaoszczędzić czas ...

Crystal Reports on MSDN - wiele dobrych rzeczy tu

Which Persistence Approach Should I Use with Crystal Reports - podaje szczegółów i kod próbki, w jaki sposób najlepiej kontrolować lifesycle obiektu raportu

This post daje również kilka dobrych rad wokół obiektu raport cyklu

Deployment Th ... Najnowsze środowiska wykonawcze Crystal Reports nie działają w środowisku 64-bitowym, więc jeśli wdrażamy serwer 64-bitowy, musisz skonfigurować usługi IIS tak, aby działały w trybie 32-bitowym lub korzystać z poprzedniej wersji środowiska wykonawczego. I mieli najwięcej szczęścia z runtime, która jest rozprowadzana z VS2008, to można znaleźć w

C: Program Files \ \ Microsoft SDK \ Windows \ v6.0A \ inicjującego \ Packages \ CrystalReports10_5

Zauważam, że używasz ASP.NET 2.0 - jestem pewien, że istnieje równoważne środowisko wykonawcze VS2005. Spróbuj wcześnie wdrożyć środowisko wdrażania, ponieważ bez wątpienia spowoduje to więcej bólów głowy, niż się spodziewasz.

Wreszcie, ostatni punkt, który kosztował nas trochę czasu i jest wart wspomnienia - standardowy ekran parametrów w Crystal Reports zabierze Cię tylko do tej pory. Jeśli chcesz uzyskać kompleksowe informacje o sposobie prezentacji parametrów dla użytkownika (np. Mając parametry zależne od wyboru innego parametru), będziesz musiał przewinąć własne ekrany parametrów. Jest to dość łatwe, ponieważ model obiektowy daje dostęp do wszystkich informacji, których potrzebujesz o parametrach. Przeszliśmy przez drogę tworzenia ogólnego ekranu parametrów, który buduje się zgodnie z parametrami znalezionymi w raporcie, na który jest wskazywany.

0

Jest to kod I zazwyczaj użyć:

'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 
0

Ów co używam zwykle 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(); 
    } 

i na stronie aspx:

<CR:CrystalReportViewer 
    ID="CrystalReportViewer1" 
    runat="server" 
    AutoDataBind="true" 
    EnableDatabaseLogonPrompt="false" 
    /> 
Powiązane problemy