如何将 Access 2016 中的多个复选框连接到 SQL 服务器中的列?
How to connect multiple check boxes in Access 2016 to column in SQL Server?
我在 SQL Server 2017 的数据库中有一列可以容纳 5 个不同的值(假设 A、B、C、D 和 E)。在 SQL 服务器中,如果选择了两个或更多服务器,则它们由 space.
分隔
我正在 Access 2016 中创建一个表单,我需要连接到此列中的每个选项,这样,如果选择了与不同值关联的任何复选框,它将在表单上显示选中的框,并将值放入在服务器上的数据库中。
示例:
A - 未检查
B-检查
C - 未选中
D - 未选中
E - 选中
栏目显示:B E
如有任何帮助,我们将不胜感激。
编辑:
我创建了 5 个与 A、B、C、D 和 E 关联的新列,并在适当的地方将数据迁移到每个列中。因此,有了这个,如果数据在其各自的列中有字母,并且在 Access 中选中以输入字母时,我仍然需要选中一个 Access 复选框。
如评论中所述,这是个坏主意。但是,如果没有其他办法,可以用一点 VBA.
来完成
首先,您需要两个过程 - 一个从该字段中获取数据并设置复选框,另一个获取复选框的状态并写回该字段:
Sub sSetCheckBox()
Me!chkA = Nz(InStr(Me!CheckData, "A"))
Me!chkB = Nz(InStr(Me!CheckData, "B"))
Me!chkC = Nz(InStr(Me!CheckData, "C"))
Me!chkD = Nz(InStr(Me!CheckData, "D"))
Me!chkE = Nz(InStr(Me!CheckData, "E"))
End Sub
Sub sGetCheckBox()
Me!CheckData = ""
If Nz(Me!chkA) Then Me!CheckData = Me!CheckData & "A"
If Nz(Me!chkB) Then Me!CheckData = Me!CheckData & "B"
If Nz(Me!chkC) Then Me!CheckData = Me!CheckData & "C"
If Nz(Me!chkD) Then Me!CheckData = Me!CheckData & "D"
If Nz(Me!chkE) Then Me!CheckData = Me!CheckData & "E"
End Sub
然后您需要调用表单的当前事件中的第一个过程,以便在表单打开时以及用户在记录之间导航时正确显示复选框:
Private Sub Form_Current()
Call sSetCheckBox
End Sub
然后当用户单击复选框时,您将需要使用第二个过程:
Private Sub chkA_Click()
Call sGetCheckBox
End Sub
此致,
我在 SQL Server 2017 的数据库中有一列可以容纳 5 个不同的值(假设 A、B、C、D 和 E)。在 SQL 服务器中,如果选择了两个或更多服务器,则它们由 space.
分隔我正在 Access 2016 中创建一个表单,我需要连接到此列中的每个选项,这样,如果选择了与不同值关联的任何复选框,它将在表单上显示选中的框,并将值放入在服务器上的数据库中。
示例: A - 未检查 B-检查 C - 未选中 D - 未选中 E - 选中
栏目显示:B E
如有任何帮助,我们将不胜感激。
编辑:
我创建了 5 个与 A、B、C、D 和 E 关联的新列,并在适当的地方将数据迁移到每个列中。因此,有了这个,如果数据在其各自的列中有字母,并且在 Access 中选中以输入字母时,我仍然需要选中一个 Access 复选框。
如评论中所述,这是个坏主意。但是,如果没有其他办法,可以用一点 VBA.
来完成首先,您需要两个过程 - 一个从该字段中获取数据并设置复选框,另一个获取复选框的状态并写回该字段:
Sub sSetCheckBox()
Me!chkA = Nz(InStr(Me!CheckData, "A"))
Me!chkB = Nz(InStr(Me!CheckData, "B"))
Me!chkC = Nz(InStr(Me!CheckData, "C"))
Me!chkD = Nz(InStr(Me!CheckData, "D"))
Me!chkE = Nz(InStr(Me!CheckData, "E"))
End Sub
Sub sGetCheckBox()
Me!CheckData = ""
If Nz(Me!chkA) Then Me!CheckData = Me!CheckData & "A"
If Nz(Me!chkB) Then Me!CheckData = Me!CheckData & "B"
If Nz(Me!chkC) Then Me!CheckData = Me!CheckData & "C"
If Nz(Me!chkD) Then Me!CheckData = Me!CheckData & "D"
If Nz(Me!chkE) Then Me!CheckData = Me!CheckData & "E"
End Sub
然后您需要调用表单的当前事件中的第一个过程,以便在表单打开时以及用户在记录之间导航时正确显示复选框:
Private Sub Form_Current()
Call sSetCheckBox
End Sub
然后当用户单击复选框时,您将需要使用第二个过程:
Private Sub chkA_Click()
Call sGetCheckBox
End Sub
此致,