Как подключить несколько флажков в Access 2016 к столбцу на сервере SQL? - PullRequest
0 голосов
/ 26 мая 2020

У меня есть столбец в базе данных на SQL Server 2017, который может содержать 5 различных значений (скажем, A, B, C, D и E). На сервере SQL, если выбраны два или более, они разделяются пробелом.

Я создаю форму в Access 2016, которую мне нужно подключить к каждому параметру в этом столбце, чтобы, если какой-либо флажок, связанный с при выборе различных значений будет отображаться флажок, установленный в форме, а также будет помещено значение в базу данных на сервере.

Пример: A - не отмечено B - отмечено C - отмечено D - не отмечено E - проверено

В столбце показано: BE

Любая помощь будет принята с благодарностью.

Изменить:

Я создал 5 новых столбцов, связанных с A, B, C, D и E и перенесенные данные в каждый столбец, где это необходимо. Таким образом, мне все еще нужно установить флажок Доступ, если в данных есть буква в соответствующем столбце, и если установлен флажок в Access, чтобы ввести букву.

1 Ответ

1 голос
/ 26 мая 2020

Как уже упоминалось в комментариях, это плохая идея. Однако, если нет другого пути, это можно сделать с помощью 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

С уважением,

...