如何将 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

此致,