【发布时间】:2015-08-14 05:13:56
【问题描述】:
我能够成功连接到数据库,但问题是当它更新表字段时。它更新表中的整个字段,而不是搜索 ID 号,只更新那个特定的 Time_out 字段。这是下面的代码,我一定遗漏了一些东西,希望我忽略了一些简单的东西。
Sub UpdateAccessDatabase()
Dim accApp As Object
Dim SQL As String
Dim id
id = frm2.lb.List(txt)
SQL = "UPDATE [Table3] SET [Table3].Time_out = " & "Now()" & " WHERE "
SQL = SQL & "((([Table3].ID)=id));"
Set accApp = CreateObject("Access.Application")
With accApp
.OpenCurrentDatabase "C:\Signin-Database\DATABASE\Visitor_Info.accdb"
.DoCmd.RunSQL SQL
.Quit
End With
Set accApp = Nothing
End Sub
【问题讨论】:
-
在构建 SQL 语句时,认为
id局部变量需要在双引号之外 - 否则您正在寻找一个只是字母 id 的 ID -
@barrowc 是的,你是对的,解决了问题,提前感谢 italicbold ' SQL = "UPDATE [Table3] SET [Table3 ].Time_out = " & "Now()" & " WHERE " SQL = SQL & "((([Table3].ID)=" & id & "));"'
-
@barrowc 实际上,右侧的
id正在解析为 id 字段。由于该字段中的值始终等于其自身,因此表中的每一行都会更新。要查找值为字母“id”的 id,您需要嵌入引号:"...=""id""));"
标签: sql excel vba ms-access sql-update