Foxtable(狐表)用户栏目专家坐堂 → EXCEL报表输出的一个奇怪现象,百思不得其解。


  共有3632人关注过本帖树形打印复制链接

主题:EXCEL报表输出的一个奇怪现象,百思不得其解。

帅哥哟,离线,有人找我吗?
一丁
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:308 积分:2926 威望:0 精华:0 注册:2017/9/14 8:21:00
EXCEL报表输出的一个奇怪现象,百思不得其解。  发帖心情 Post By:2019/9/14 23:12:00 [只看该作者]

    做了一个EXCEL报表模板,是一个卡片式的报表,从父表和一个关联的子表中取数,父表中的1条记录与关联子表中相关记录生成1张报表卡片。在使用中,选中父表中的某1条记录,然后生成报表,一切正常,会生成一张正确的卡片。
    问题是这样的,父表中的记录不少,如果每生成一张报表卡片都要去点击1条记录,操作起来很麻烦,效率很低,于是设计了一个批量输出的按钮,按钮的目的是在父表中选定多行,然后生成选定行的报表卡片。按钮代码如下:
With Tables("户主") '父表
    For  i As Integer = .TopPosition To .BottomPosition
        .Position = i
        Dim Book As New XLS.Book(ProjectPath & "Attachments\惠民政策卡.xls") '打开模板
        Dim fl As String = ProjectPath & "Reports\惠民政策卡_" &  .Current("姓名") & ".xls"
        Book.Build() '生成报表
        Book.Save(fl) '保存报表
    Next
End With
MessageBox.Show("选定记录批量输出完毕!")

问题来了:当选择输出父表中所有记录的时候,是用鼠标从第一行开始拖动选择到最后一行,然后执行上面的"批量输出"代码,那么生成的第1张报表卡片中,本来只应是第1条记录的数据,结果却是父表中所有录的数据!但从第2张报表开始则是正确的,也就是每1张报表卡片中只有对应的1条记录的数据.经反复多次测试,发现一个更奇怪的现象:如果选择多行操作时,是从最后一行开始用鼠标拖动到第1行,然后再执行上面的"批量输出"代码,则前述的问题不出现,所有记录输出的卡片都是正确的.
    请狐爸帮忙看看是咋了?该不会是软件BUG吧?
    顺便把报表模板附上.
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:惠民政策卡.xls




[此贴子已经被作者于2019/9/14 23:15:43编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110582 积分:562806 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/15 16:28:00 [只看该作者]

正常,改改
With Tables("户主") '父表
    Dim i1 As Integer = .TopPosition
    Dim i2 As Integer = .BottomPosition
    .Position = i2
    .Position = i1
    For i As Integer = i1 To i2
        .Position = i
        Dim Book As New XLS.Book(ProjectPath & "Attachments\惠民政策卡.xls") '打开模板
        Dim fl As String = ProjectPath & "Reports\惠民政策卡_" &  .Current("姓名") & ".xls"
        Book.Build() '生成报表
        Book.Save(fl) '保存报表
    Next
End With
MessageBox.Show("选定记录批量输出完毕!")

 回到顶部
帅哥哟,离线,有人找我吗?
一丁
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:308 积分:2926 威望:0 精华:0 注册:2017/9/14 8:21:00
  发帖心情 Post By:2019/9/16 11:21:00 [只看该作者]

这是为什么呢图片点击可在新窗口打开查看

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110582 积分:562806 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/16 11:38:00 [只看该作者]

因为.Position默认就是选中的第一行,第一次还是设置.Position为选中的第一行,相当于Position没有变化,所以第一次还是选中所有行

 回到顶部
帅哥哟,离线,有人找我吗?
一丁
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:308 积分:2926 威望:0 精华:0 注册:2017/9/14 8:21:00
  发帖心情 Post By:2019/9/16 11:41:00 [只看该作者]

谢谢!

 回到顶部