2016-07-26 41 views
0

我有一個數據庫,參與者回答3個調查(1,2和3),我試圖創建一個表格來確定哪些調查已完成(如果有的話)爲特定參與者(ID),然後禁用現有記錄的按鈕(添加調查1,添加調查2和添加調查3)。如果存在記錄啓用控制

表格鏈接到的表格(Surveys)具有字段ID和Survey_Number(1到3)。在這裏,根據已輸入的調查數量,一名參與者(ID)可以有0到3個條目。

我目前的工作非常不正常:我使用了一個級聯Combobox方法,其中第二個Combobox用作臨時數組(我對此表示歉意 - 我不編碼)來保存ID值的Survey_Number (在第一個Combobox中)。

Private Sub Combo29_AfterUpdate() 
Dim i As Integer 

If Not IsNull(Me.Combo29) Then 
    If DCount("ID", "Surveys", "[ID] =" & Me.Combo29) > 0 Then 
    Combo2.RowSource = "SELECT Surveys.Survey_Number " & _ 
         "FROM Surveys " & _ 
         "WHERE Surveys.ID = " & Combo29.Value 
Me.Combo2.Requery 

i = 0 
For i = 0 To (Me.Combo2.ListCount - 1) 

Select Case Me.Combo2.ItemData(i) 
Case "1" 
Me!Command34.Enabled = False 
Case "2" 
Me!Command35.Enabled = False 
Case "3" 
Me!Command36.Enabled = False 
End Select 
i = i + 1 
Next 
    Else 
    MsgBox "This is the first time this participant has responded" 
    Me!Command34.Enabled = True 
    Me!Command35.Enabled = True 
    Me!Command36.Enabled = True 
    Me.Combo2 = Me.Combo2.ItemData(0) 
    End If 
End If 

End Sub 

這種運作良好,當沒有條目(允許所有的按鈕),但它不讀的ItemData(1)正確的時候有一些/一項調查存在即。如果輸入了1,2和3,則只有按鈕2和3被禁用。

回答

1

我不知道Combo2是多麼有用,但是,使用你已經擁有了控制,這應該工作:對的

Private Sub Combo29_AfterUpdate() 

Dim i As Integer 

Me!Command34.Enabled = True 
Me!Command35.Enabled = True 
Me!Command36.Enabled = True 

If Not IsNull(Me.Combo29) Then 
    If DCount("Survey_Number", "Surveys", "[ID] =" & Me.Combo29) > 0 Then 
     Combo2.RowSource = "SELECT Surveys.Survey_Number " & _ 
          "FROM Surveys " & _ 
          "WHERE Surveys.ID = " & Combo29.Value 
     Me.Combo2.Requery 

     With Combo2 
      For i = 0 To .ListCount - 1 
       Select Case .ItemData(i) 
        Case 1 
         Me!Command34.Enabled = False 
        Case 2 
         Me!Command35.Enabled = False 
        Case 3 
         Me!Command36.Enabled = False 
        Case Else 
         'Nothing 
       End Select 
      Next i 
     End With 
    Else 
     Me!Command34.Enabled = True 
     Me!Command35.Enabled = True 
     Me!Command36.Enabled = True 
    End If 

End If 

End Sub 
+0

太棒了 - 完美的作品!感謝您清理代碼,閱讀起來更容易。 – Giles

0

使用代碼表格的當前事件啓用/禁用。會發生什麼情況是,當您將注意力轉移到其他任何記錄時,啓用/禁用控件可能需要更改。而你的代碼啓用/禁用僅適用於組合後更新。我們不能啓用/禁用選定的行控制,它啓用/禁用列的所有控件。

相關問題