根据当前选择的VBA列表框更改SQL语句

时间:2018-08-02 19:52:41

标签: sql vba ms-word

我有一个名为Attendance的用户窗体,上面有两个列表框。一个叫坐着,一个叫不坐。

在SQL列中,每个人都从1开始。如果今天有人在这里,则将其标记为“ 2”,如果不是,则将其标记为“ 3”或“ 4”。

我有一个重置按钮,希望将其按下时将其重置为“ 1”。我需要做的是根据用户当前突出显示的列表框更改UPDATE查询。这是我到目前为止的内容,但是没有用。

Sub resetagent()
database_connect
Dim AttendRecord As New ADODB.Recordset
Dim Cm As ADODB.Command
If appconn.State = 0 Then
Call database_connect
End If
Set Cm = New ADODB.Command
With Cm
    .ActiveConnection = appconn
    If attendance.Seated.value <> "" Then
    .CommandText = "UPDATE [Attendance] SET [Seated] = '1' WHERE [Agentname]= '" & attendance.Seated.value & "'"
    ElseIf attendance.NotSeated.value <> "" Then
    .CommandText = "UPDATE [Attendance] SET [Seated] = '1' WHERE [Agentname]= '" & attendance.NotSeated.value & "'"
    .CommandType = adCmdText
    .Execute
End If
End With
Set AttendRecord = Nothing
database_Disconnect
End Sub

1 个答案:

答案 0 :(得分:1)

您的.Execute位于if语句内部,并且仅当您位于语句的Else部分时才能运行。将End if语句上移两行。

如果两个列表框都不为空(即,一个为'1',另一个为'3'),则它与If语句条件中的任何一个都不匹配,并且在此处不执行任何操作。

您只要移动End If行,它将执行按钮默认的CommandText是什么。