2017-04-05 100 views
0

我有兩個表,ID表和Mastertable。在身份證表中,我有一個開始數字的級別和活動,讓我們說1000.在Mastertable中,我擁有許多與同一活動和級別相關的圖形。我必須從ID表值1000開始爲它們編號,並將它增加1.完成後,mastertable的最大值必須重新插入ID表。從其他表訪問Vba序列號

而且,如果有水平和活性,該ID已被拾起仰視的水平和活性都,如果沒有級別屆時提及它只能查找活動。

我嘗試了很多,但不能成功。

我使用了下面的代碼,但它只查找Activity而不查找級別。它也不會返回到id表並更新主表中的最大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 

應該有一些其他更好的方法來做到這一點。 MasterTable ID Table

回答

1

該問題是由我可以解決的新代碼。

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