【问题标题】:Increment a database value after printing a report打印报告后增加数据库值
【发布时间】:2016-08-09 11:09:46
【问题描述】:

我有一个只有一列的数据库表,invoiceNumber。这显示在 Crystal 报表上,以显示报表的唯一编号(因为它是发票)。

目前,对于所有报告,在 vb.net 中查看它们时,显示的数字是 1,因为这就是数据库列中的值。

我想知道的是,如何在打印报告之后且仅在打印之后才增加数字(例如,如果他们取消打印作业,它不会增加)。

我知道这通常很简单,它会在按下按钮后打印代码后使用 SQL,但是,在项目中,我使用的是 CrystalReportViewer,所以打印不是在单击按钮时完成的,我不这样做'认为CrystalReportViewer 中的打印不能单独编程?

那么,在报告打印后,如何以及在何处将数据库表中的值编码为递增 1?这甚至可能吗?

【问题讨论】:

  • 您必须考虑打印机卡纸和咖啡溢出。编写一个覆盖可能会更好。然后,您可以在报告发布时增加...除非您预计会出现许多报告会被查看而不是打印的情况。在这种情况下,您可能希望在显示/关闭报告后按下确认按钮。
  • @JoeC 我正在考虑诚实地在报告发布时增加它。然后我可以有一个消息框询问他们是否要退出而不打印。但我将如何使这项工作?我需要以某种方式告诉它是否已打印...这将如何完成?
  • 您使用的是 Windows 窗体报表查看器吗? msdn.microsoft.com/en-us/library/ms227057(v=vs.80).aspx
  • @JoeC 是的,这就是我在报告表单上使用的东西,这就是处理所有打印等的东西,而不是我单独编码

标签: sql sql-server database vb.net crystal-reports


【解决方案1】:

我还建议用户使用确认按钮来确认他们已经打印好了。没有其他方法可以确保它从打印机中出来时没有卡纸、污迹、折痕等情况

伪代码

  EventHandlerWhichTriggersReportCreation

   Call code to initiate and load CrystalReportViewer
   Display dialog/prompt asking user if all printed  OK
   If all OK, increment counter

【讨论】:

  • 这个问题是代码必须进入处理打印的子程序,但是没有代码,因为这一切都是使用CrystalReportViewer
  • 是否真的没有事件被触发或代码运行报告或 Form_Load 函数或任何东西?我在上面添加了一些伪代码。
【解决方案2】:

您可以使用在打印成功后在确认时设置的标志。

在另一个函数中,您可以检查是否设置了标志并相应地增加标志。

【讨论】:

  • 你是什么意思?我对标志不熟悉
  • 任何布尔变量保存一个值,1 表示打印,0 表示不打印
  • 这会在哪里声明和设置?
  • 您可以在代码开始时声明它,并在打印后收到的确认中设置它。
  • 这是不可能的,想一想,因为有些发票可能是通过电子邮件发送的,而不是打印出来的,而且同一个报表显示非发票报表,所以如果它们被打印出来,它会不正确增加数据库中的值
猜你喜欢
  • 1970-01-01
  • 2020-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多