[英]MS Access SQL How to put a table name as Variable (how to run one query for multiple tables)
[英]Run one MS Access SQL script on a particular Table chosen by user
我有一個包含20多個表的MS Access 2016數據庫(* .accdb)。 每個表中的字段在表之間略有不同。 我沒有VBA經驗,所以我只堅持下面的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。 我想在出現提示時輸入表名稱,以便腳本知道要更新的表。 僅供參考:如果參數不是如我上面的腳本中所示的表格,則它起作用。
幫助/建議受到高度贊賞。
由於似乎無法使用參數作為表名,因此您可以建議使用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.