运行 用户选择的特定 Table 上的一个 MS Access SQL 脚本

Run one MS Access SQL script on a particular Table chosen by user

我有一个包含 20 多个 Table 的 MS Access 2016 数据库 (*.accdb)。每个字段中的字段从 Table 到 Table 略有不同。我没有 VBA 经验,所以我只坚持下面的 SQL 查询(已编辑)。

SQL 脚本

myvar下面是我希望在脚本为运行时提示的参数,以便我输入Table我想要更改应用于。

PARAMETERS 
[myvar] TableID;

UPDATE 
[myvar]

INNER JOIN  
Excel_Data ON [myvar].[Part Number] = Excel_Data.[Part Number] 

SET 
[myvar].[Value] = '?', 
[myvar].Description = Excel_Data.Description, 
[myvar].[Ref] = '?'
.
.
.

WHERE 
[myvar].Description Is Null;

输出

错误信息:

Too few parameters. Expected 0.

我需要什么

我更喜欢上面的 SQL 脚本形式的解决方案,最好不涉及 VBA。我想在出现提示时输入 Table 名称,以便脚本知道要更新哪个 table。仅供参考:参数在不是 Table 时有效,正如我在上面的脚本中所示。

Help/advise 非常感谢。

编辑 1

由于似乎无法将参数用作 Table 名称,您能否提出一个 VBA 解决方案?也许是示例代码?

正如评论中所说,没有 VBA 就无法真正解决这个问题。

您可以将 SQL 查询存储在一个字符串中,并使用占位符来指示 table 名称。然后使用输入框获取 tablename 并将占位符替换为 tablename.

Dim sqlString As String
sqlString = "UPDATE [%Placeholder%] "  & vbCrLf & _
"INNER JOIN Excel_Data ON [%Placeholder%].[Part Number] = Excel_Data.[Part Number]  "  & vbCrLf & _
"SET [%Placeholder%].[Value] = '?', " & vbCrLf & _
...
"WHERE [%Placeholder%].Description Is Null;"
sqlString = Replace(sqlString, "%PlaceHolder%", InputBox("Enter a tablename"))
CurrentDb.Execute sqlString

在一个更成熟的解决方案中,我将创建一个带有包含所有可用 table 名称的组合框的表单,并添加一个函数来清理 table 名称(将“]”替换为“] ]")