设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2410|回复: 8
打印 上一主题 下一主题

[报表] 为何外循环只执行一次报表只有第一页

[复制链接]
跳转到指定楼层
1#
发表于 2016-10-29 11:41:31 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 付谦 于 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
其余见附件

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
9#
 楼主| 发表于 2016-11-2 10:39:45 | 只看该作者
一般报表打开后,电脑底部页处显示共几页,前后箭头可用,输入页码即显示这页,打印时可连续或选页单打。我要的也是此效果。可采用双层循环,只能打印最后一页。有什么办法解决呢?期待!
8#
发表于 2016-11-1 16:07:50 | 只看该作者
那要在报表设计窗体上预设足够多的textn和Mn,设定为不可见,再予代码中有数据时改为可见。
7#
 楼主| 发表于 2016-11-1 15:15:52 | 只看该作者
koutx 发表于 2016-10-31 16:01
Private Sub Report_Activate()
Dim rs As New ADODB.Recordset
    Dim ssql As String

虽然能循环了,能打印表中最后13条记录并为第一页,但如果打印表中全部记录怎么办?如第2,3......页,请大师继续赐教
6#
发表于 2016-10-31 16:01:20 | 只看该作者
本帖最后由 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
5#
发表于 2016-10-31 15:31:49 | 只看该作者
把rs.MoveFirst移到For M = 1前面,表中贪官数须是13的倍数。否则要在循环中加设记录Null的识别。
4#
 楼主| 发表于 2016-10-31 13:19:47 | 只看该作者
tmtony 发表于 2016-10-30 21:54
For M = 1 To rs.RecordCount Step 13
为什么每次步进 要为13 这么长?
这个是每隔13 执行一次

因为报表一页13条记录,每条记录要固定相应的位置,设计报表时考虑以后还需添加其他东西,只有这样才能实现。请见附件

点击这里给我发消息

3#
发表于 2016-10-30 21:54:51 | 只看该作者
For M = 1 To rs.RecordCount Step 13
为什么每次步进 要为13 这么长?
这个是每隔13 执行一次
2#
 楼主| 发表于 2016-10-30 09:07:37 | 只看该作者
等待大师们指点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-1 21:28 , Processed in 0.093612 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表