我有一个两页的Crystal Report,其中第一页的内容是视图中的字段,第二页的内容是从存储过程中提取的,其中将上述视图中的数据项作为参数。
我正在使用集成安全性进行身份验证,并且自己运行该程序效果很好。 但是,当另一台计算机上的用户运行它时,切换到第二页(包含存储过程生成的内容的第二页)时,系统会提示他们输入凭据。 该提示提供了使用集成安全性进行登录的选项,尽管已为使用的数据源启用了此功能。 选择此选项将导致登录失败,并拒绝访问。 尽管我以数据库管理员的身份明确授予用户对存储过程本身及其使用的两个表值函数的选择权限,并且所涉及的用户已属于该用户组,无论如何已经可以访问这些表。 下面是用于将数据项传递到报表的代码片段。
在这里我想强调的是,我不是在代码中显式传递存储过程中的数据。仅从视图。然后,该报告将使用代码中传递给它的数据作为参数,从数据库中调用存储过程本身。
With depositsReceiptsReportInstance
.depositsReceipts = (From r In
Entities.VW_Receipts
Where dateFrom.Date <=Entity.DbFunctions.TruncateTime(r.date_added) And Entity.DbFunctions.TruncateTime(r.date_added) <= dateTo.Date
Select r).ToList()
If .depositsReceipts.Count = 0 Then
MsgBox("No deposits in range.")
Exit Sub
End If
.rpt = Rpt
.rpt.SetDataSource(.depositsReceipts)
.Show()
End With