Office中国论坛/Access中国论坛

标题: 问如何批量增加序号后将序号控制表的字段值进行相应的更新!! [打印本页]

作者: yanwei82123300    时间: 2016-3-3 13:18
标题: 问如何批量增加序号后将序号控制表的字段值进行相应的更新!!
请问如何批量增加序号后将序号控制表的字段值进行相应的更新!!
表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

作者: 江南春    时间: 2016-3-3 13:22
不错,可以参考
作者: roych    时间: 2016-3-3 14:19
更新完之后,用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

作者: yanwei82123300    时间: 2016-3-3 14:55
roych 发表于 2016-3-3 14:19
更新完之后,用MoveLast即可获取。
Dim rs As New adodb.Recordset
Dim lMax As Long

谢谢老师帮助!!我使用一个笨办法,建立两个查询:query1 用于删除tblMAX_MO中的数值;query2将tbl生产计划明细表中的最大值追加进tblMAX_MO,。还是您的代码规矩。
作者: yanwei82123300    时间: 2016-3-3 15:13
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
作者: roych    时间: 2016-3-3 15:36
yanwei82123300 发表于 2016-3-3 15:13
老师如果要使用下面的代码呢!如何在更新最大值?谢谢
下面的代码是将字段MO的值改变成MO-数字,例如MO- ...

没问题的吧?最大值反正都在最后一行。只是需要修改字段类型罢了。前面的是数值型,修改后的应该是文本型才能完成记录集部分。
作者: yanwei82123300    时间: 2016-3-3 15:49
您是说修改这个吗?
Dim lMax As Long
修改成
Dim IMax as string

作者: yanwei82123300    时间: 2016-3-3 15:52
本帖最后由 yanwei82123300 于 2016-3-3 15:55 编辑

roych 老师谢谢我已经修改完成!!谢谢您的帮助!!
作者: yanwei82123300    时间: 2016-3-3 15:55
roych 老师谢谢我已经修改完成!!谢谢您的帮助!!




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