Office中国论坛/Access中国论坛

标题: 为何外循环只执行一次报表只有第一页 [打印本页]

作者: 付谦    时间: 2016-10-29 11:41
标题: 为何外循环只执行一次报表只有第一页
本帖最后由 付谦 于 2016-10-29 11:43 编辑

问题如标题,不知如下代码错在何处:Private Sub ShowData()
   
   
    Dim rs As New ADODB.Recordset
    Dim ssql As String
    Dim i, M As Integer

    ssql = "select 姓名,贪官id from 贪官表 ORDER BY 贪官表.贪官id"
      rs.Open ssql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
      M = 1
      i = 1
   
For M = 1 To rs.RecordCount Step 13
       rs.MoveFirst
    For i = 1 To 13
      
       Me.Controls("Text" & i) = rs!姓名
       Me.Controls("M" & i) = rs!贪官id
       rs.MoveNext
    Next i
      
Next M
    rs.Close: Set rs = Nothing
End Sub
其余见附件
作者: 付谦    时间: 2016-10-30 09:07
等待大师们指点
作者: tmtony    时间: 2016-10-30 21:54
For M = 1 To rs.RecordCount Step 13
为什么每次步进 要为13 这么长?
这个是每隔13 执行一次
作者: 付谦    时间: 2016-10-31 13:19
tmtony 发表于 2016-10-30 21:54
For M = 1 To rs.RecordCount Step 13
为什么每次步进 要为13 这么长?
这个是每隔13 执行一次

因为报表一页13条记录,每条记录要固定相应的位置,设计报表时考虑以后还需添加其他东西,只有这样才能实现。请见附件
作者: koutx    时间: 2016-10-31 15:31
把rs.MoveFirst移到For M = 1前面,表中贪官数须是13的倍数。否则要在循环中加设记录Null的识别。
作者: koutx    时间: 2016-10-31 16:01
本帖最后由 koutx 于 2016-10-31 16:03 编辑

Private Sub Report_Activate()
Dim rs As New ADODB.Recordset
    Dim ssql As String
    Dim i, M As Integer

    ssql = "select 姓名,贪官id from 贪官表 ORDER BY 贪官表.贪官id"
      rs.Open ssql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
      M = 1
      i = 1
rs.MoveFirst
For M = 1 To rs.RecordCount Step 13
    For i = 1 To 13
      If rs.EOF Then Exit For
       Me.Controls("Text" & i) = rs!姓名
       Me.Controls("M" & i) = rs!贪官id
       rs.MoveNext
    Next i
Next M
    rs.Close: Set rs = Nothing
End Sub

作者: 付谦    时间: 2016-11-1 15:15
koutx 发表于 2016-10-31 16:01
Private Sub Report_Activate()
Dim rs As New ADODB.Recordset
    Dim ssql As String

虽然能循环了,能打印表中最后13条记录并为第一页,但如果打印表中全部记录怎么办?如第2,3......页,请大师继续赐教
作者: koutx    时间: 2016-11-1 16:07
那要在报表设计窗体上预设足够多的textn和Mn,设定为不可见,再予代码中有数据时改为可见。
作者: 付谦    时间: 2016-11-2 10:39
一般报表打开后,电脑底部页处显示共几页,前后箭头可用,输入页码即显示这页,打印时可连续或选页单打。我要的也是此效果。可采用双层循环,只能打印最后一页。有什么办法解决呢?期待!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3