繁体   English   中英

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

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

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

SQL脚本

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

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。 我想在出现提示时输入表名称,以便脚本知道要更新的表。 仅供参考:如果参数不是如我上面的脚本中所示的表格,则它起作用。

帮助/建议受到高度赞赏。

编辑1

由于似乎无法使用参数作为表名,因此您可以建议使用VBA解决方案吗? 可能是示例代码?

如评论中所述,没有VBA,您将无法真正解决此问题。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM