做了一个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吧?
[此贴子已经被作者于2019/9/14 23:15:43编辑过]