设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: ljp518
打印 上一主题 下一主题

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

[复制链接]
5#
发表于 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
4#
 楼主| 发表于 2011-9-23 16:13:48 | 只看该作者
tzh16000 发表于 2011-9-23 15:42
看了下,应该把1200改成49999,表2为源表,表3为目标表
这里不是很懂,rs(1),是改成第N个字段的rs(N)呢?还是改 ...

首先是谢谢关注,再等待高手的出手。。。
3#
发表于 2011-9-23 15:42:37 | 只看该作者
看了下,应该把1200改成49999,表2为源表,表3为目标表
这里不是很懂,rs(1),是改成第N个字段的rs(N)呢?还是改成rs(字段名)?
请高手指教.
2#
 楼主| 发表于 2011-9-23 14:33:16 | 只看该作者
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

    Do Until rs.EOF
        j = rs(1) \ 1200
        If j > 0 Then
            For i = 1 To j
                rs1.AddNew
                rs1(1) = 1200
                rs1.Update
            Next i
            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

    DoCmd.OpenTable "表3"

    rs.Close
    rs1.Close
    Set rs = Nothing
    Set rs1 = Nothing

End Sub

用这个拆分记录的函数如何修改为按姓名拆分,请各位老师帮助!谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-3 20:25 , Processed in 0.090661 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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