【问题标题】:Execute stored procedure in report在报表中执行存储过程
【发布时间】:2018-01-24 19:59:09
【问题描述】:

我的存储过程和表捕获有关运行哪些报告、由谁以及在什么时间运行的详细信息。这在 Crystal Reports 开发人员环境中运行良好; sproc 开始运行并捕获详细信息。

当部署到业务对象时,我的存储过程中的插入语句永远不会触发。它们肯定在报告中,但不要在日志表中创建任何条目。我该如何解决这个问题?

这几乎就像 Crystal Reports 从存储过程中“抓取” SQL,忽略插入语句,并运行查询而不是实际运行存储过程。

我不想使用业务对象附带的审计,那么我怎样才能让它工作呢?

【问题讨论】:

  • 你的过程是什么?以及在您的应用中的什么位置?
  • 编辑:通过让捕获使用情况的存储过程返回一个值来使其工作。然后将该值放在报告的底部。将文本着色为与背景相同的颜色,以便用户看不到它。这似乎使 Business Objects 运行存储过程并捕获详细信息。
  • 这就是我所做的: 1. 创建一个表格来捕获上面提到的详细信息(什么报告由谁以及何时运行) 2. 创建 sproc 来填充表格.. 并且还有 sproc 返回值的“1” 3. 在 CReports 的 db 专家中添加 sproc 4. 将返回值拖到报告中,并使文本颜色与背景或微小或其他任何颜色相同,因此它被隐藏 5. 现在当报告在 Business Objects 中运行时,它会触发 sproc成功并在表 6 中捕获了所有这些好的细节。在这些运行一段时间后,我们可以很好地了解报告的使用情况
  • 注意:在业务对象中进行审计可能是做到这一点的“正确”方式。我只是不想搞乱设置宇宙和类似的奇怪东西

标签: crystal-reports business-objects


【解决方案1】:

您可以获得您在应用程序中提到的详细信息,您不需要仅使用数据库专家来获取此信息,例如:在您的应用程序中

Dim p As New Report
p.ReportName = getReportName()
p.User = getUser()
p.Date = getDate() or "DateTime.Now"
p.show()

在您的报告中:

Public ReportName As String
Public User As String
Public Date As String

"object".SetParameterValue("Parameter Field Name 1", ReportName)
"object".SetParameterValue("Parameter Field Name 2", User)
"object".SetParameterValue("Parameter Field Name 3", Date)

顺便说一句,您可以在您的应用程序中添加这些数据,而不是在报告中。

【讨论】:

  • 我不关注 :( 但这听起来很有趣我没有应用程序,它只是 biz 对象服务器显示报告试图理解您的帖子但没有得到它
  • 抱歉,我没有注意到“Business Objects”中的内容
  • 没关系...您向我展示了其他非常酷的东西...您所说的让我环顾 Crystal Reports 并发现我可以在其中找到当前用户。分配给一个公式字段并将其传递到我的跟踪存储过程中。这非常好,因为在此之前,我能得到的最好的就是来自 sql server 的 HOST_NAME() 。但事实证明,业务对象报告的 HOST_NAME 始终是服务器,而不是用户工作站名称。获取用户并从 CR 中传递是 grrrrrrrrrreat!
猜你喜欢
  • 2010-09-15
  • 1970-01-01
  • 1970-01-01
  • 2019-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多