使用报表事件处理程序运行函数

Posted

技术标签:

【中文标题】使用报表事件处理程序运行函数【英文标题】:Using a report event handler to run a function 【发布时间】:2018-04-23 15:15:32 【问题描述】:

这可能很简单,我只是想多了。我有一份报告,一次显示来自查询的两条记录。所有字段都绑定到查询,除了一个,它调用一个函数从文本文件中提取数据。该函数查找存储在记录中的零件编号,并返回库存中零件编号的数量。我正在使用事件处理程序 Form_Current 的表单中使用此函数,并且一切正常。当一次只显示一条记录时,我似乎可以让它工作,但由于此报告显示两条记录,我很茫然。

我尝试对 Report_Current 做同样的事情,但该字段仅在单击记录时更新,并且该字段在每条记录上具有相同的值(因此记录 2、3 和 4 显示记录 1 的数量,直到我单击记录2,然后所有其他记录显示 2 的数量)。

我认为我的错误是选择了错误的事件,但我已经尝试过

当前 加载 激活 打开

它们不显示任何内容,除了 Current 一次只显示一条记录。有什么我想念的吗?我宁愿不更改报告的结构,以便一次只显示一条记录。

谢谢

【问题讨论】:

您要打印此报告,即使用打印(预览)视图吗?还是您在报告视图中使用报告? 我认为大多数使用将是报告视图。但是,如果可能,我想保留打印选项。很多用户会使用它,其中一些用户可能更喜欢纸质。 您可以直接从查询中使用您的函数 - 而不是使用 VBA 事件。这个表达式应该可以工作 Quantity: LookupPartQuantity([Part Number]) 其中Quantity 可以绑定到您的报告字段控件,LookupPartQuantity 是您的函数返回一个数字,[Part Number] 是用于在您的文本文件中查找的字段 这行得通。你应该把它写成答案。我确实有后续问题,但我会等到答案写完。 好的,可以 - 在答案部分发表评论以进行后续跟进 - 或者如果它很详细,请开始一个新问题 【参考方案1】:

您可以直接从查询中使用您的函数 - 而不是使用 VBA 事件。

类似这样的表达式应该可以工作

Quantity: LookupPartQuantity([Part Number]) 其中Quantity 可以绑定到您的报告字段控件,LookupPartQuantity 是您的函数返回一个数字,[Part Number] 是用于在文本文件中查找的字段

【讨论】:

所以我这样做了,它在大多数情况下都有效。但是,有些记录有多个部件号,由回车符分隔。目前,该表达式将所有零件编号组合成一个外观时髦的编号,这当然会返回“未找到”。关于如何解决这个问题的任何想法?我仍然习惯于表达或查询。在 VBA 中,它是一个简单的 for 循环和拆分,但我怀疑我是否可以在表达式中做到这一点,除非我编写一个执行拆分的函数。嗯…… 是的。我就是这么做的。用于拆分零件编号的单独功能,然后将其输入原始功能。结合 IIF 声明,我的报告看起来应该如此。感谢您的帮助! 你的函数代码、表达式和查询SQL在哪里?你应该把它放到一个新问题中。拆分输入并搜索多个零件编号以及在同一查询中正确显示零件编号应该是一个简单的修复 函数在一个模块中。我一直在使用查询设计器来运行查询(以及随后的报告)。制作一个拆分输入的新函数非常简单。再次感谢您的帮助。

以上是关于使用报表事件处理程序运行函数的主要内容,如果未能解决你的问题,请参考以下文章

事件处理程序WinProc

第十三章——事件(事件处理程序)

在运行时创建事件处理程序而不使用 WndProc win32 c++

如何使事件处理程序异步运行?

在执行报表打开事件之前访问报表运行查询

VS2010 winform开发使用水晶报表,程序本机运行正常 放到其它机子运行报错。跪求解决办法!!!