设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[窗体] 问如何批量增加序号后将序号控制表的字段值进行相应的更新!!

[复制链接]
跳转到指定楼层
1#
发表于 2016-3-3 13:18:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问如何批量增加序号后将序号控制表的字段值进行相应的更新!!
表tblMAX_MO用来记录最大的序号(MO)
表tbl生产计划明细表是生产明细
下面的代码是追加MO序号,通过表tblMAX_MO最大的序号(MO)+1
现在有一个问题如何将表tblMAX_MO的字段值也相应的更新,取表tbl生产计划明细表,字段MO的最大号?谢谢
Private Sub Command0_Click()
Dim rs As New adodb.Recordset
    Dim i As Long
    Dim sSQL As String
    i = DLookup("MO_NUMBER", "tblMAX_MO")
    sSQL = "select Mo from tbl生产计划明细表"
    With rs
        .Open sSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
        Do While Not .EOF
            rs.Fields(0) = i
            .MoveNext
            i = i + 1
        Loop
        .UpdateBatch
        
        .Close
    End With
    Set rs = Nothing
  
    MsgBox "MO生成完成"
   
End Sub

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2016-3-3 13:22:37 | 只看该作者
不错,可以参考
3#
发表于 2016-3-3 14:19:27 | 只看该作者
更新完之后,用MoveLast即可获取。
Dim rs As New adodb.Recordset
Dim lMax As Long
    Dim i As Long
    Dim sSQL As String
    i = DLookup("MO_NUMBER", "tblMAX_MO")
    sSQL = "select Mo from tbl生产计划明细表"
    With rs
        .Open sSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
        Do While Not .EOF
            rs.Fields(0) = i
            .MoveNext
            i = i + 1
        Loop
        .UpdateBatch
        .MoveLast
        lMax = rs(0)
        .Close
    End With
    Set rs = Nothing
    Docmd.SetWarnings False
    DoCmd.RunSQL "update tblMAX_MO set MO_NUMBER=" & lMax
    MsgBox "MO生成完成,其中最大值是:" & lMax
   
End Sub
4#
 楼主| 发表于 2016-3-3 14:55:20 | 只看该作者
roych 发表于 2016-3-3 14:19
更新完之后,用MoveLast即可获取。
Dim rs As New adodb.Recordset
Dim lMax As Long

谢谢老师帮助!!我使用一个笨办法,建立两个查询:query1 用于删除tblMAX_MO中的数值;query2将tbl生产计划明细表中的最大值追加进tblMAX_MO,。还是您的代码规矩。
5#
 楼主| 发表于 2016-3-3 15:13:29 | 只看该作者
roych 发表于 2016-3-3 14:19
更新完之后,用MoveLast即可获取。
Dim rs As New adodb.Recordset
Dim lMax As Long

老师如果要使用下面的代码呢!如何在更新最大值?谢谢
下面的代码是将字段MO的值改变成MO-数字,例如MO-1603210
谢谢

Private Sub Command0_Click()
Dim rs As DAO.Recordset
Dim rs1 As DAO.Recordset
Dim n As Long
Dim lMax As Long
Set rs = CurrentDb.OpenRecordset("select * from tbl生产计划明细表")
Set rs1 = CurrentDb.OpenRecordset("select * from tblMAX_MO")
rs1.MoveFirst
n = rs1("MO_NUMBER")
rs.MoveFirst
Do While rs.EOF = False
    rs.Edit
    rs("MO") = "MO-" & rs("MO") & n + 1
    rs.Update
    rs.MoveNext
    n = n + 1
   
Loop

Set rs = Nothing

'DoCmd.OpenQuery "query2"
'DoCmd.OpenQuery "query4"
'MsgBox "MO生成完成"
End Sub
6#
发表于 2016-3-3 15:36:17 | 只看该作者
yanwei82123300 发表于 2016-3-3 15:13
老师如果要使用下面的代码呢!如何在更新最大值?谢谢
下面的代码是将字段MO的值改变成MO-数字,例如MO- ...

没问题的吧?最大值反正都在最后一行。只是需要修改字段类型罢了。前面的是数值型,修改后的应该是文本型才能完成记录集部分。
7#
 楼主| 发表于 2016-3-3 15:49:15 | 只看该作者
您是说修改这个吗?
Dim lMax As Long
修改成
Dim IMax as string
8#
 楼主| 发表于 2016-3-3 15:52:11 | 只看该作者
本帖最后由 yanwei82123300 于 2016-3-3 15:55 编辑

roych 老师谢谢我已经修改完成!!谢谢您的帮助!!
9#
 楼主| 发表于 2016-3-3 15:55:14 | 只看该作者
roych 老师谢谢我已经修改完成!!谢谢您的帮助!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-13 10:02 , Processed in 0.086225 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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