我正在MS Access表單上跳過邏輯的實驗,並希望就最佳控制措施提出建議。令人驚訝的是,我沒有找到與此有關的線索。在Access窗體上使用跳過邏輯的最佳方法是什麼?
所以,背景:使用MS Access 2013爲用戶調查問卷構建簡單表單。我們不允許我們的表單上有空格,並且有一個模塊可以檢查空格,並且不會讓用戶在填寫所有必填字段之前繼續下一部分。相反,如果用戶絕對不能回答「-99」,則要求用戶輸入「-99」題。
我寫的跳過邏輯表明,如果Q1和Q2的答案都是no = 0,那麼他們可以跳過下幾個問題。我在選項中寫了一個y/n MsgBox,在Q2回答後彈出。看到我的代碼如下。問題是,我已經可以預見到我選擇的事件出現問題。如果他們對Q1回答「是」,否則回答Q2(不彈出),然後返回並將其答案更改爲Q1。我的表單上有Tab鍵順序,但這並不妨礙用戶如果想要跳過。
所以我的問題簡而言之,什麼是實現跳過邏輯取決於兩個領域的答案的最佳方式是什麼?
Private Sub Q2_AfterUpdate()
On Error GoTo Error_Trap
If (IsNull(Me.CSSRSsi1) Or IsNull(Me.CSSRSsi1)) Then
Exit Sub
Else:
If (Me.Q1 = 0 And Me.Q2 = 0) Then
If MsgBox("Answers to Question 1 and 2 are both 'No'" & vbNewLine _
& "Proceed to Q5?", vbYesNo) = vbNo Then
DoCmd.GoToControl "Q3"
Else:
Me.Q3 = -99
Me.Q4 = -99
DoCmd.GoToControl "Q5"
End If
End If
End If
Q2_Exit:
Exit Sub
Error_Trap:
MsgBox Error$
Resume Q2_Exit
End Sub
更新:由於Remou領着我,我添加了一個檢查器Q1和Q2,以確保它們都被繼續我的跳躍邏輯代碼之前回答。這在第一季度和第二季度都被稱爲AfterUpdate。
您是否考慮過在更新q1或q2時調用的過程? – Fionnuala
告訴我更多你在想什麼。我不希望MsgBx讓他們跳過多次彈出選項,它只應在兩個Q被填充後觸發......這實際上使我想我可以添加代碼來檢查Q1和Q2在MsgBox打開之前填充。讓我嘗試一下...... – TSS
準確地說,使用一個包含幾個IF的例程,可以在任何一個或更新問題時調用它們。 – Fionnuala