通过 VBA/SQL 从 Excel App 更新 Microsoft Access Table 字段

Update Microsoft Access Table Field from Excel App Via VBA/SQL

我可以成功连接到数据库,但问题是它更新 table 字段时。它更新 table 中的整个字段,而不是搜索 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

如果 id 是 integer/long,您应该修改查询如下:

SQL="UPDATE [Table3] SET [Table3].Time_out=#" & Now() & "# WHERE [Table3].ID=" & id;

如果 id 是文本,您应该修改查询如下:

SQL="UPDATE [Table3] SET [Table3].Time_out=#" & Now() & "# WHERE [Table3].ID='" & id &"'";

希望这可能有所帮助。

下面是工作代码:

Sub UpdateAccessDatabase()
Dim accApp As Object
Dim SQL As String
Dim id
id = frm2.lb.List(txt)
***'modified lines below***
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

@alex

我能够将查询修改为您上面提到的 SQL 语句

我确实必须从语句中删除一些 (#,') 才能使其正常工作,但这样更简洁

下面是另一个工作示例

`Sub UpdateAccessDatabase()
 Dim accApp As Object
 Dim SQL As String
 Dim id
 id = frm2.lb.List(txt)
 ***'modified lines below***
 SQL = "UPDATE [Table3] SET [Table3].Time_out= " & "Now()" & " WHERE [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`