由于我为后端转换为SQL Server,我从多值字段继续前进。不幸的是,我无法弄清楚如何更换它。
我所做的是在我的"机会"之间建立了多对多的关系。和"目的"使用连接表的表(每个表一对多)。这部分很容易。
我不明白的是如何创建一个下拉列表框(带复选框以选择选项)。
我发现在线资源指出我需要使用VBA的想法,但还没有找到任何实际的例子。是否有人熟悉如何做到这一点?
提前致谢。
答案 0 :(得分:1)
出于同样的原因,我必须这样做;转移到SQL Server后端。我的解决方案保留了复选框功能,但在下拉列表中没有这些功能。如果您不想在主表单上放置一堆框,可以将复选框放在子表单中(看起来像下拉列表?)。
对于每个复选框,您要测试相关表中的记录是否存在,如果在选中该复选框时没有,则添加它,如果未选中该复选则反之。必须取消绑定复选框才能使其生效。
这是添加/删除代码。它进入"更新后"事件:
Private Sub cb_1_AfterUpdate()
If Me.cb_1 = True Then
If DCount("Parent_ID", "Checkbox_records", "Parent_ID = " & Me.P_ID & "and Checked_box_num = 1") = 0 Then
strSQL = "INSERT INTO Checkbox_records (Parent_ID, Checked_box_num) VALUES (" & Me.P_ID & "," & "1)"
CurrentDb.Execute strSQL, dbFailOnError
End If
End If
If Me.cb_1 = False Then
If DCount("Parent_ID", "Checkbox_records", "Parent_ID = " & Me.P_ID & "and Checked_box_num = 1") > 0 Then
strSQL = "DELETE FROM Checkbox_records WHERE Parent_ID = " & Me.P_ID & " and Checked_box_num = 1"
CurrentDb.Execute strSQL, dbFailOnError
End If
End If
End Sub
未绑定框的问题在于切换记录时它们不会发生变化。因此,您必须设置框以反映更改记录时的数据状态,您可以在表格" On Current"事件:
Private Sub Form_Current()
If DCount("Parent_ID", "Checkbox_records", "Parent_ID = " & Me.P_ID & "and Checked_box_num = 1") > 0 Then
Me.cb_1 = True
Else
Me.cb_1 = False
End If
End Sub
我不喜欢这个解决方案的是你必须复制每个盒子的代码,但它运行顺畅,所以它适合居住。