从Access 2010表单更新多个SQL Server列

时间:2014-01-22 10:41:22

标签: sql sql-server vba ms-access ms-access-2010

我有一个链接到SQL Server表的Access数据库。在Access中,我有一个带有两个多选列表框的表单(让我们调用它们的值x和y)和一个文本框(z)。

选择值并按下按钮时,我希望表单更新值与表单中的值匹配的行:

UPDATE tableName SET ColumnToUpdate = [z] 
WHERE Column1 IN ([x1,x2...xn])
AND Column2 IN ([Y1,y2...yn])

有没有这样做的方法?

1 个答案:

答案 0 :(得分:1)

您可以枚举每个ListBox中的选定项并构建SQL。像这样的东西

sql = "UPDATE tableName SET ColumnToUpdate = '" & txtZ & "' "
sql = sql & "WHERE Column1 IN (" & GetValuesFromList(listBoxX) & ") "
sql = sql & "AND Column2 IN (" & GetValuesFromList(listBoxy) & ")"

函数GetValuesFromList:

Private Function GetValuesFromList(ListBox lst) as String
Dim Items As String
Dim Item As Variant

    Items = ""
    For Each Item In lst.ItemsSelected
        Items = Items & lst.ItemData(Item) & ","
    Next
    GetValuesFromList = Left(Items, Len(Items) - 1)
End Function

如果列表框中的选定值是字符串值,则应修改函数以连接引号。