如何将access 2016中的多个复选框连接到sql server中的列?

8fsztsew  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(341)

我在sql server 2017中的数据库中有一个列,它可以容纳5个不同的值(比如a、b、c、d和e)。在sql server中,如果选择了两个或多个,则它们之间用空格隔开。
我正在access 2016中创建一个窗体,需要连接到此列中的每个选项,这样,如果选中了与不同值关联的任何复选框,它将在窗体上显示选中的复选框,并将值放入服务器上的数据库中。
示例:a-未选中b-已选中c-未选中d-未选中e-已选中
该列显示:b e
任何帮助都将不胜感激。
编辑:
我创建了5个与a、b、c、d和e相关联的新列,并在适当的情况下将数据迁移到每个列中。因此,如果数据在其各自的列中有字母,那么我仍然需要选中一个access复选框,并在选中access时输入字母。

kyvafyod

kyvafyod1#

正如评论中提到的,这是个坏主意。但是,如果没有其他方法,可以使用一点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

当做,

相关问题