【问题标题】:MS Access: Using a SQL UPDATE statement to update a table record using a String variableMS Access:使用 SQL UPDATE 语句使用字符串变量更新表记录
【发布时间】:2018-10-02 03:35:15
【问题描述】:

我正在尝试让 MS Access 数据库在导入文件时添加文件名(

一个名为“名称”的字符串变量

)。该表称为“tbl_feed_import”,我需要更新的列是“F26”。我需要更新表中的每条记录,所以我省略了更新语句的 WHERE 部分。

但是,当我运行导入函数时,我得到的只是表中的“& name &”,而不是实际的文件名(是的,我意识到这将包括文件路径)。

下面是我的代码:

Public Sub Import_File()

DoCmd.RunSQL "Delete * from tbl_feed_import"

Dim feedfile, rec_count
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Dim name As String

feedfile = FindfileXLS(CurrentProject.Path & "\Feed\")

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel5, "tbl_feed_import", feedfile, False, "Timecards data!A2:AC"

name = feedfile

'Test to see if the "name" variable can be passed to a text box
MsgBox name, vbOKOnly, "Imports Completed"

strSQL = "UPDATE tbl_feed_import" & "SET F26= '" & name & "' "

DoCmd.RunSQL strSQL

DoCmd.OpenQuery "qry_append_import_to_consolidated", acViewNormal

Exit_Route:
    Set db = Nothing
    Set rs = Nothing
    Exit Sub

End Sub

任何帮助将不胜感激!

【问题讨论】:

  • 您确定UPDATE 查询甚至可以运行吗?我看到一个明显的语法错误,SET 之前没有空格。请确保发布了实际的 SQL 查询。

标签: sql vba ms-access sql-update ms-access-2016


【解决方案1】:

您在声明“name”变量时使用的是reserved word

我的建议:

  1. Dim name As String 替换为Dim strName As String
  2. 然后将代码中的所有引用从'name 替换为strName
  3. 最后修复您的 SQL 字符串,以便在 SET 之前有一个空格 命令

strSQL = "UPDATE tbl_feed_import SET F26= '" & name & "' "

【讨论】:

  • 这里使用的name是VBA变量,与Access数据库保留字无关。
  • @Parfait 来自我链接的 MS-Access 页面 - You might also encounter errors if you use a reserved word to name a control, an object, or a variable.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
  • 1970-01-01
  • 2011-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多