簡體   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