为什么Crystal报告要求提供数据库登录凭据?

问题描述:

我已阅读所有关于在*中相关的问题的答案。为什么Crystal报告要求提供数据库登录凭据?

但我无法从这些问题获得帮助。

我的代码

Imports System.Data.SqlClient 
Imports System.Data 
Imports System.Windows.Forms 
Imports CrystalDecisions.Shared 

Partial Class Reports_LReport 
Inherits System.Web.UI.Page 
Public Report As New CrystalDecisions.CrystalReports.Engine.ReportDocument() 
Public thisConnectionString As String = ConfigurationManager.ConnectionStrings("cnStringMain").ConnectionString 
Dim reportDocument As CrystalDecisions.CrystalReports.Engine.ReportDocument = Nothing 


Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) 
    Dim scriptManager__1 As ScriptManager = ScriptManager.GetCurrent(Me) 
    scriptManager__1.RegisterPostBackControl(Me.FactroyAttendance) 

    If Not IsPostBack = True Then 

    Else 
    LoadReport() 
    End If 
    End Sub 


Protected Sub cmdShow_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmdShow.Click 
    LoadReport() 
End Sub 


Private Sub LoadReport() 


    If Me.reportDocument IsNot Nothing Then 
     Me.reportDocument.Close() 
     Me.reportDocument.Dispose() 
    End If 
    Dim SConn As New SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings("cnStringMain").ConnectionString) 
    Dim thisConnection As New SqlConnection(thisConnectionString) 
    Dim mySelectCommand As SqlCommand = New System.Data.SqlClient.SqlCommand("prLeaveStatusReport", thisConnection) 
    mySelectCommand.CommandType = CommandType.StoredProcedure 
    reportDocument = New CrystalDecisions.CrystalReports.Engine.ReportDocument() 
    Dim reportPath As String = Server.MapPath("~/Reports/JoyLeaveReport.rpt") 
    reportDocument.Load(reportPath) 
    Dim connInfo As New CrystalDecisions.Shared.ConnectionInfo() 
    connInfo.ServerName = SConn.DataSource 
    connInfo.DatabaseName = SConn.InitialCatalog 
    connInfo.UserID = SConn.UserID 
    connInfo.Password = SConn.Password 
    Dim tableLogOnInfo As New CrystalDecisions.Shared.TableLogOnInfo() 
    tableLogOnInfo.ConnectionInfo = connInfo 
    For Each table As CrystalDecisions.CrystalReports.Engine.Table In reportDocument.Database.Tables 
     table.ApplyLogOnInfo(tableLogOnInfo) 
     table.LogOnInfo.ConnectionInfo.ServerName = connInfo.ServerName 
     table.LogOnInfo.ConnectionInfo.DatabaseName = connInfo.DatabaseName 
     table.LogOnInfo.ConnectionInfo.UserID = connInfo.UserID 
     table.LogOnInfo.ConnectionInfo.Password = connInfo.Password 
     table.Location = "dbo." + table.Location 
    Next 


    If String.IsNullOrEmpty(txtFrom.Text) Then 
     reportDocument.SetParameterValue("@dateFrom", "") 
    Else 
     reportDocument.SetParameterValue("@dateFrom", Convert.ToDateTime(txtFrom.Text).ToString("yyyy-MM-dd HH:mm:ss")) 

    End If 

    If String.IsNullOrEmpty(txtEmployeeID.Text) Then 
     reportDocument.SetParameterValue("@empId", "") 
    Else 
     reportDocument.SetParameterValue("@empId", txtEmployeeID.Text) 
    End If 


    If String.IsNullOrEmpty(txtTo.Text) Then 
     reportDocument.SetParameterValue("@dateTo", "") 
    Else 
     reportDocument.SetParameterValue("@dateTo", Convert.ToDateTime(txtTo.Text).ToString("yyyy-MM-dd HH:mm:ss")) 

    End If 

     FactroyAttendance.ReportSource = reportDocument 
     FactroyAttendance.DataBind() 
     FactroyAttendance.ReportSource = reportDocument 
     FactroyAttendance.DataBind() 



End Sub 

Protected Sub Page_Unload(ByVal sender As Object, ByVal e As EventArgs) 
    If Me.reportDocument IsNot Nothing Then 
     Me.reportDocument.Close() 
     Me.reportDocument.Dispose() 
    End If 
End Sub 
End Class 

我有一个从那里我有三个字段1.没有fromdate 2. TODATE 3.雇员

我报告工作正常,但是当我去出口用pdf或Word报告它向我询问参数和数据库登录的价值。

图像1

enter image description here

图像2 enter image description here

图像3 enter image description here

所以,我从SI解释尽可能多的。 我怎么解决它? 并提前致谢。

+0

[如何停止水晶报表查看器在打开子报表时要求登录凭据](http://*.com/questions/21709438/how-to-stop-crystal-report-viewer-from-asking- login-credentials-when-opening-sub) –

+0

torha matha sala,dekhos na upore ami likhsi je ai问题相关的问题,但我没有得到任何帮助。 –

我看到你把登录信息正确,所以问题可能是你不缓存你的crystalreport对象。

您需要缓存对象并将其重新绑定到网页的Page_Init Web方法中。当你在报告中有多个页面时,以及在我想出口时,这是必要的。

更详细的信息在这个文档:http://help.sap.com/businessobject/product_guides/sapCRVS2010/en/crnet13_sp14_dg_en.pdf

页56(节1.3.3.4),例如。

+0

我没有得到帮助。我应该再次创建报告吗? –

+1

您需要缓存您的crystalreport对象,然后在页面中的init中检索它并执行 'FactroyAttendance.ReportSource = reportDocument; FactroyAttendance.DataBind();' – Furtiro

+0

解决了:只是添加一个方法。这里FactoryAttendance是crystalViewer。 [Protected Sub .FactroyAttendance_Load(ByVal sender As Object,ByVal e As EventArgs)Handles FactroyAttendance.Load LoadReport() End Sub] –