sql - 在用户选择的特定表上运行一个 MS Access SQL 脚本
问题描述
我有一个包含 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
在更成熟的解决方案中,我会创建一个包含所有可用表名的组合框的表单,并添加一个函数来清理表名(将“]”替换为“]]”)
推荐阅读
- ruby-on-rails - 应用引擎 rails request.remote_ip 值似乎不正确
- docker - Docker:监控磁盘写入容器,即通过覆盖存储驱动程序
- api - 无法将 json 响应转换为列表。铸造错误
- python - 在linux os中使用python脚本将oracle查询结果集导出到excel表
- r - R中的背包动态
- python - 来自两个来源的 Python 构建对象
- java - 如何在短时间内突出显示更新的组件
- google-api - 使用 Keycloak 身份提供者获取 Google 用户数据
- python-3.x - TimeSeries - 季节性图表分析
- c# - URI google.navigation 的重复运行失败