设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[模块/函数] 怎样按条件将一条记录拆分为几条记录?求助!

[复制链接]
1#
发表于 2011-9-23 19:21:07 | 显示全部楼层
代码都写出来了还求什么指教?{:soso_e128:}
简单注释下吧。
Private Sub Command0_Click()
    Dim rs As ADODB.Recordset
    Dim str As String
    Dim i As Integer
    Dim j As Integer
    Dim rs1 As ADODB.Recordset
    Dim str1 As String
    Set rs = New ADODB.Recordset
    Set rs1 = New ADODB.Recordset
    str = "select * from 表2"
    rs.Open str, CurrentProject.Connection, adOpenKeyset, adLockReadOnly
    str1 = "select * from 表3"
    rs1.Open str1, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    '如果不存在记录则跳出。
    If rs.EOF Then Exit Sub
'移动记录集位置,目的在于快速读取数据、
    rs.MoveLast
    rs.MoveFirst
'这一段主要是把记录新增到表3中。
'从这一段来看,表3的字段2跟表2的字段2必须是一样的字段类型。表2为输入,表3为输出。
    Do Until rs.EOF
'获取循环次数,即字段2(字段顺序是从0开始滴)的值除以1200取整
        j = rs(1) \ 1200
        If j > 0 Then
'如果大于1200,则按1200的倍数来执行循环
            For i = 1 To j
'设置rst1的字段2的值为1200
                rs1.AddNew
                rs1(1) = 1200
                rs1.Update
            Next i
'把整除后的余数作为新增记录添加上去。
'其实Else部分可以不写的,因为在前面已经把整除部分追加进去了。
            If rs(1) - 1200 * j <> 0 Then
                rs1.AddNew
                rs1(1) = rs(1) - 1200 * j
                rs1.Update
            End If

        Else
            rs1.AddNew
            rs1(1) = rs(1)
            rs1.Update
        End If
        rs.MoveNext
    Loop
'打开表3,关闭记录集,并释放内存。
    DoCmd.OpenTable "表3"
    rs.Close
    rs1.Close
    Set rs = Nothing
    Set rs1 = Nothing
End Sub
2#
发表于 2011-9-28 21:36:30 | 显示全部楼层

RE: 怎样按条件将一条记录拆分为几条记录?求助!

ljp518 发表于 2011-9-28 09:07
太感谢roych 版主了,由于这几天忙没有上论坛,本应在第一时间感谢!净拖了5天,真不好意思, ...

不客气。毛主席教导我们,要为人民服务嘛。能解决大家的问题,是我们莫大的荣幸。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-22 08:24 , Processed in 0.134539 second(s), 25 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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