找回密码
 立即注册

QQ登录

只需一步,快速开始

d990213m

初级会员

21

主题

103

帖子

220

积分

初级会员

积分
220

活字格认证微信认证勋章元老葡萄

d990213m
初级会员   /  发表于:2014-5-15 17:49  /   查看:7417  /  回复:9
你好。
  为什么FetchData只触发一次呢?
  没有被多次触发呢?

      Private Sub rptBarcodeZichan_FetchData(ByVal sender As Object, ByVal eArgs As DataDynamics.ActiveReports.ActiveReport.FetchEventArgs) Handles MyBase.FetchData
        Try
            If p_TotalCount <> lngTotalCount Then

                If objDR.Read() Then

                    Fields("SKU").Value = objDR("SKU").ToString()
                    Fields("storeName").Value = objDR("storeName").ToString()
                    Fields("syohinName").Value = objDR("syohinName").ToString()
                    Fields("syohinXing").Value = objDR("syohinXing").ToString()
                    Fields("syohinBaoguan").Value = objDR("syohinBaoguan").ToString()

                    lngTotalCount = lngTotalCount + 1

                    eArgs.EOF = False
                Else
                    eArgs.EOF = True
                End If
            Else
                eArgs.EOF = True
            End If

        Catch ex As Exception
            clsErrLog.OutputErrLog(REPORT_NAME, ex.TargetSite.Name, _
                    ex.StackTrace.Substring(ex.StackTrace.LastIndexOf(":"c) + 1), ex.Message)
        End Try
    End Sub

9 个回复

倒序浏览
d990213m
初级会员   /  发表于:2014-5-15 17:51:00
沙发
Private Sub rptBarcodeZichan_DataInitialize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.DataInitialize
        Fields.Add(&quot;SKU&quot;)
        Fields.Add(&quot;storeName&quot;)
        Fields.Add(&quot;syohinName&quot;)
        Fields.Add(&quot;syohinXing&quot;)
        Fields.Add(&quot;syohinBaoguan&quot;)
    End Sub
回复 使用道具 举报
d990213m
初级会员   /  发表于:2014-5-15 17:53:00
板凳
DEBUG后,正常来讲FetchData应该多次被调用的。
可是只运行了一次,
然后报表就一直在转,好像进入了死循环。
如果强制设置eArgs.EOF = True
报表倒是出来,可是是空报表。
奇怪啊。。。
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-5-16 10:09:00
地板
回复 3楼d990213m的帖子

看到您使用的代码,是AR8、AR7新版本区域报表吗?
为了快速帮您分析、定位问题,另外,请补充一下:
1 报表版本和当前这个报表文件。
2 Winform还是在ASP.net下运行的报表。
我需要在您的已有基础上,做一个demo找找问题在哪。

补充内容:
多次触发的事件
以下ActiveReports事件在报表的处理过程中多次触发。

FetchData
该事件在每次一个新的纪录处理完成时触发。FetchData具有一个EOF参数,该参数指示是否触发FetchData事件。该参数和RecordSet的EOF属性不同,默认值为True。当使用一个绑定态报表(使用数据控件的报表)时,EOF被报表自动设置,但是,当使用非绑定态报表时,该参数需要手动设置。

使用FetchData事件在非绑定报表中设置通过DataInitialize事件添加的自定义字段的值。或者在绑定报表中执行特殊功能,比如将两个字段结合或者执行计算。FetchData事件处理方法中不应当使用报表中的任何控件。

如果您希望在明细区域的一个控件上使用一个来自于数据集的值,请在FetchData事件中设置一个变量,然后在区域的Format事件中将值传递给控件。请注意,只有Detail_Format 事件支持这种用法。

此外,在使用数组或者集合时还可以使用FetchData事件递增计数器。

http://blog.gcpowertools.com.cn/ ... veReport-Event.aspx
回复 使用道具 举报
d990213m
初级会员   /  发表于:2014-5-16 17:07:00
5#
这个博客我看过,但还是没有解决问题。
我做了个DEMO,您看看。
回复 使用道具 举报
d990213m
初级会员   /  发表于:2014-5-16 17:10:00
6#

DEMO

附件是DEMO。
我用的是VS2003,Activereports。
今天最好能有个答复,因为明天就是周六了。。
今天需要解决这个问题。
麻烦你了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-5-16 18:13:00
7#
回复 6楼d990213m的帖子

谢谢,您的demo看了,是VB.net开发的。

目前FetchData事件未能本执行多次,是因为您在第一次FetchData设置了

  1. eArgs.EOF = True
复制代码

这样会导致FetchData事件仅执行一次。
回复 使用道具 举报
d990213m
初级会员   /  发表于:2014-5-16 18:20:00
8#
你好。
eArgs.EOF = True
只是在 Else 中设置的。
读取SqlDataReader的时候,设置的是False啊。。。
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-5-19 09:12:00
9#
回复 8楼d990213m的帖子

您在6#提供的demo,因为无数据源,我模拟一下:
1 当在FetchData事件中,设置eArgs.EOF = False,则可触发多个FetchData。
2 如设置为eArgs.EOF = True,则仅调用一次。

请您打断点调试一下FetchData事件。
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-6-9 09:10:00
10#
欢迎有问题开新帖沟通。


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部