我怎样才能使这段代码遍历查询中的每条记录并执行 if 语句?
How can I make this code go through every record in a query and execute the if statements?
我试图让这段代码遍历查询中的每条记录,并检查每条记录的 JobGrade 字段的值。根据值,2 个字段将加载数字。我正在尝试在表单的事件之一中实现此代码。该代码有效,但仅适用于第一条记录。不确定我是否在错误的事件中执行此代码。
Private Sub Form_Load()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Unassigned_Jobs") 'name of query
rs.Edit
If rs.Fields("Repeat") = 0 Then 'Repeat = false
If rs.Fields("JobGrade") = 1 Then
rs.Fields("1PercWorkLoad") = 1
rs.Fields("2PercWorkLoad") = 0
ElseIf rs.Fields("JobGrade") = 2 Then
rs.Fields("1PercWorkLoad") = 3
rs.Fields("2PercWorkLoad") = 0
ElseIf rs.Fields("JobGrade") = 3 Then
rs.Fields("1PercWorkLoad") = 8
rs.Fields("2PercWorkLoad") = 2.4
ElseIf rs.Fields("JobGrade") = 4 Then
rs.Fields("1PercWorkLoad") = 24
rs.Fields("2PercWorkLoad") = 4.8
Else: rs.Fields("JobGrade") = 5
rs.Fields("1PercWorkLoad") = 40
rs.Fields("2PercWorkLoad") = 4
End If
ElseIf rs.Fields("Repeat") = -1 Then 'Repeat = true
If rs.Fields("JobGrade") = 1 Then
rs.Fields("1PercWorkLoad") = 1
rs.Fields("2PercWorkLoad") = 0.25
ElseIf rs.Fields("JobGrade") = 2 Then
rs.Fields("1PercWorkLoad") = 3
rs.Fields("2PercWorkLoad") = 0.75
ElseIf rs.Fields("JobGrade") = 3 Then
rs.Fields("1PercWorkLoad") = 8
rs.Fields("2PercWorkLoad") = 0.6
ElseIf rs.Fields("JobGrade") = 4 Then
rs.Fields("1PercWorkLoad") = 24
rs.Fields("2PercWorkLoad") = 1.2
Else: rs.Fields("JobGrade") = 5
rs.Fields("1PercWorkLoad") = 40
rs.Fields("2PercWorkLoad") = 1
End If
End If
rs.Update
rs.MoveNext
rs.Close
Set rs = Nothing
db.Close
End Sub
您需要将代码放入循环中以循环访问记录。
Private Sub Form_Load()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Unassigned_Jobs") 'name of query
rs.movefirst 'Good habit to make sure you're starting at record 1
rs.Edit
Do Until rs.EOF 'Loop to the end
If rs.Fields("Repeat") = 0 Then 'Repeat = false
If rs.Fields("JobGrade") = 1 Then
rs.Fields("1PercWorkLoad") = 1
rs.Fields("2PercWorkLoad") = 0
ElseIf rs.Fields("JobGrade") = 2 Then
rs.Fields("1PercWorkLoad") = 3
rs.Fields("2PercWorkLoad") = 0
ElseIf rs.Fields("JobGrade") = 3 Then
rs.Fields("1PercWorkLoad") = 8
rs.Fields("2PercWorkLoad") = 2.4
ElseIf rs.Fields("JobGrade") = 4 Then
rs.Fields("1PercWorkLoad") = 24
rs.Fields("2PercWorkLoad") = 4.8
Else: rs.Fields("JobGrade") = 5
rs.Fields("1PercWorkLoad") = 40
rs.Fields("2PercWorkLoad") = 4
End If
ElseIf rs.Fields("Repeat") = -1 Then 'Repeat = true
If rs.Fields("JobGrade") = 1 Then
rs.Fields("1PercWorkLoad") = 1
rs.Fields("2PercWorkLoad") = 0.25
ElseIf rs.Fields("JobGrade") = 2 Then
rs.Fields("1PercWorkLoad") = 3
rs.Fields("2PercWorkLoad") = 0.75
ElseIf rs.Fields("JobGrade") = 3 Then
rs.Fields("1PercWorkLoad") = 8
rs.Fields("2PercWorkLoad") = 0.6
ElseIf rs.Fields("JobGrade") = 4 Then
rs.Fields("1PercWorkLoad") = 24
rs.Fields("2PercWorkLoad") = 1.2
Else: rs.Fields("JobGrade") = 5
rs.Fields("1PercWorkLoad") = 40
rs.Fields("2PercWorkLoad") = 1
End If
End If
rs.MoveNext 'Need this or you'll loop infinitely
Loop
rs.Update
rs.Close
Set rs = Nothing
db.Close
End Sub
我试图让这段代码遍历查询中的每条记录,并检查每条记录的 JobGrade 字段的值。根据值,2 个字段将加载数字。我正在尝试在表单的事件之一中实现此代码。该代码有效,但仅适用于第一条记录。不确定我是否在错误的事件中执行此代码。
Private Sub Form_Load()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Unassigned_Jobs") 'name of query
rs.Edit
If rs.Fields("Repeat") = 0 Then 'Repeat = false
If rs.Fields("JobGrade") = 1 Then
rs.Fields("1PercWorkLoad") = 1
rs.Fields("2PercWorkLoad") = 0
ElseIf rs.Fields("JobGrade") = 2 Then
rs.Fields("1PercWorkLoad") = 3
rs.Fields("2PercWorkLoad") = 0
ElseIf rs.Fields("JobGrade") = 3 Then
rs.Fields("1PercWorkLoad") = 8
rs.Fields("2PercWorkLoad") = 2.4
ElseIf rs.Fields("JobGrade") = 4 Then
rs.Fields("1PercWorkLoad") = 24
rs.Fields("2PercWorkLoad") = 4.8
Else: rs.Fields("JobGrade") = 5
rs.Fields("1PercWorkLoad") = 40
rs.Fields("2PercWorkLoad") = 4
End If
ElseIf rs.Fields("Repeat") = -1 Then 'Repeat = true
If rs.Fields("JobGrade") = 1 Then
rs.Fields("1PercWorkLoad") = 1
rs.Fields("2PercWorkLoad") = 0.25
ElseIf rs.Fields("JobGrade") = 2 Then
rs.Fields("1PercWorkLoad") = 3
rs.Fields("2PercWorkLoad") = 0.75
ElseIf rs.Fields("JobGrade") = 3 Then
rs.Fields("1PercWorkLoad") = 8
rs.Fields("2PercWorkLoad") = 0.6
ElseIf rs.Fields("JobGrade") = 4 Then
rs.Fields("1PercWorkLoad") = 24
rs.Fields("2PercWorkLoad") = 1.2
Else: rs.Fields("JobGrade") = 5
rs.Fields("1PercWorkLoad") = 40
rs.Fields("2PercWorkLoad") = 1
End If
End If
rs.Update
rs.MoveNext
rs.Close
Set rs = Nothing
db.Close
End Sub
您需要将代码放入循环中以循环访问记录。
Private Sub Form_Load()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Unassigned_Jobs") 'name of query
rs.movefirst 'Good habit to make sure you're starting at record 1
rs.Edit
Do Until rs.EOF 'Loop to the end
If rs.Fields("Repeat") = 0 Then 'Repeat = false
If rs.Fields("JobGrade") = 1 Then
rs.Fields("1PercWorkLoad") = 1
rs.Fields("2PercWorkLoad") = 0
ElseIf rs.Fields("JobGrade") = 2 Then
rs.Fields("1PercWorkLoad") = 3
rs.Fields("2PercWorkLoad") = 0
ElseIf rs.Fields("JobGrade") = 3 Then
rs.Fields("1PercWorkLoad") = 8
rs.Fields("2PercWorkLoad") = 2.4
ElseIf rs.Fields("JobGrade") = 4 Then
rs.Fields("1PercWorkLoad") = 24
rs.Fields("2PercWorkLoad") = 4.8
Else: rs.Fields("JobGrade") = 5
rs.Fields("1PercWorkLoad") = 40
rs.Fields("2PercWorkLoad") = 4
End If
ElseIf rs.Fields("Repeat") = -1 Then 'Repeat = true
If rs.Fields("JobGrade") = 1 Then
rs.Fields("1PercWorkLoad") = 1
rs.Fields("2PercWorkLoad") = 0.25
ElseIf rs.Fields("JobGrade") = 2 Then
rs.Fields("1PercWorkLoad") = 3
rs.Fields("2PercWorkLoad") = 0.75
ElseIf rs.Fields("JobGrade") = 3 Then
rs.Fields("1PercWorkLoad") = 8
rs.Fields("2PercWorkLoad") = 0.6
ElseIf rs.Fields("JobGrade") = 4 Then
rs.Fields("1PercWorkLoad") = 24
rs.Fields("2PercWorkLoad") = 1.2
Else: rs.Fields("JobGrade") = 5
rs.Fields("1PercWorkLoad") = 40
rs.Fields("2PercWorkLoad") = 1
End If
End If
rs.MoveNext 'Need this or you'll loop infinitely
Loop
rs.Update
rs.Close
Set rs = Nothing
db.Close
End Sub