Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从其他表访问Vba序列ID_Vba_Ms Access_Sequence - Fatal编程技术网

从其他表访问Vba序列ID

从其他表访问Vba序列ID,vba,ms-access,sequence,Vba,Ms Access,Sequence,我有两张桌子,ID桌子和Mastertable。在ID表中,我有一个级别和活动,它有一个起始编号,比如说1000。在Mastertable中,我有许多与同一活动和级别相关的图纸。我必须从ID表的值1000开始为它们提供编号,并将其递增1。完成后,必须将主表中的最大值重新添加到ID表中 此外,如果存在级别和活动,则必须提取ID查找级别和活动,如果未提及级别,则只能查找活动 我试了很多,但没有成功 我使用了下面的代码,但它只查找活动,不查找级别。此外,它不会返回id表并从主表更新max id Opt

我有两张桌子,ID桌子和Mastertable。在ID表中,我有一个级别和活动,它有一个起始编号,比如说1000。在Mastertable中,我有许多与同一活动和级别相关的图纸。我必须从ID表的值1000开始为它们提供编号,并将其递增1。完成后,必须将主表中的最大值重新添加到ID表中

此外,如果存在级别和活动,则必须提取ID查找级别和活动,如果未提及级别,则只能查找活动

我试了很多,但没有成功

我使用了下面的代码,但它只查找活动,不查找级别。此外,它不会返回id表并从主表更新max id

Option Compare Database
Option Explicit

Public Function SequenceNew()
Dim strSQL As String
Dim db As Database
Dim rs As DAO.Recordset
Dim a, initNo As Integer
Dim b As Integer


strSQL = "SELECT * FROM MasterTable ORDER BY LevelID"
'Set db = CurrentDb
Set rs = CurrentDb.OpenRecordset(strSQL)
If rs.RecordCount > 0 Then
rs.MoveFirst
Do While Not rs.EOF

rs.Edit
If rs![DrawingTypeName] = "Concrete" And rs![ProjectName] = Forms!frm_Publish!CboProject And rs!IDGiven = "Not Given" Then
a = a + 1
rs!Sequence = DLookup("CONCRETE", "Qry_ID_Selected") + a

ElseIf rs![DrawingTypeName] = "Reinforcement" And rs![ProjectName] = Forms!frm_Publish!CboProject And rs!IDGiven = "Not Given" Then
b = b + 1
rs!Sequence = DLookup("REINFORCEMENT", "Qry_ID_Selected") + b

ElseIf rs![DrawingTypeName] = "Steel structural works" And rs![ProjectName] = Forms!frm_Publish!CboProject And rs!IDGiven = "Not Given" Then

End If
rs.Update
rs.MoveNext
Loop
rs.Close
Set db = Nothing
Else
MsgBox " No records Found"
rs.Close
Set db = Nothing
End If

End Function
应该还有其他更好的办法。

这个问题通过我可以编写的新代码得到了解决

Option Compare Database
Option Explicit

Public Function SequenceNewLevel()
Dim strSQL As String
Dim strSQL1 As String
Dim db As Database
Dim rs As DAO.Recordset
Dim rs1 As DAO.Recordset2
Dim a, initNo As Integer
a = 0
strSQL = "SELECT * FROM MasterTable"
strSQL1 = "SELECT * FROM ID"
Set db = CurrentDb
Set rs1 = CurrentDb.OpenRecordset(strSQL1)
If rs1.RecordCount > 0 Then
rs1.MoveFirst
Do While Not rs1.EOF
    rs1.Edit
    Set rs = CurrentDb.OpenRecordset(strSQL)
    If rs.RecordCount > 0 Then
    rs.MoveFirst
    Do While Not rs.EOF
    rs.Edit
        If rs![TypeOfDrawing] = rs1![Activity] And rs![Project] = rs1![Project] And rs![LevelName] = rs1![Level] And rs![IDGiven] = "Not Given" Then
        a = a + 1
        rs!Sequence = rs1!StartID + a
        rs1!StartID = rs!Sequence
        a = 0
        rs![IDGiven] = "GIVEN"
        End If
    rs.Update
    rs.MoveNext
    Loop
End If
 rs1.Update
rs1.MoveNext
Loop
rs1.Close
rs.Close
Set db = Nothing
Else
MsgBox " No records Found"
rs.Close
Set db = Nothing
End If
End Function


Public Function SequenceNewWithOutLevel()
Dim strSQL As String
Dim strSQL1 As String
Dim db As Database
Dim rs As DAO.Recordset
Dim rs1 As DAO.Recordset2
Dim a, initNo As Integer
a = 0
strSQL = "SELECT * FROM MasterTable"
strSQL1 = "SELECT * FROM IDWithoutlevel"
Set db = CurrentDb
Set rs1 = CurrentDb.OpenRecordset(strSQL1)
If rs1.RecordCount > 0 Then
rs1.MoveFirst
Do While Not rs1.EOF
    rs1.Edit
    Set rs = CurrentDb.OpenRecordset(strSQL)
    If rs.RecordCount > 0 Then
    rs.MoveFirst
    Do While Not rs.EOF
    rs.Edit
        If rs![TypeOfDrawing] = rs1![Activity] And rs![Project] = rs1![Project] And rs![IDGiven] = "Not Given" Then
        a = a + 1
        rs!Sequence = rs1!StartID + a
        rs1!StartID = rs!Sequence
        a = 0
        rs![IDGiven] = "GIVEN"
        End If
    rs.Update
    rs.MoveNext
    Loop
End If
 rs1.Update
rs1.MoveNext
Loop
rs1.Close
rs.Close
Set db = Nothing
Else
MsgBox " No records Found"
rs.Close
Set db = Nothing
End If
End Function