2017-09-21 100 views
0

我試圖創建一個Access 2016表單,它允許用戶更正位於SQL Server表上但有問題的信息。首先是一些限制;我無法在SQL Server中創建任何新東西,用戶無權訪問ODBC連接的密碼。使用來自Access 2016表單的數據更新SQL表格

我知道使用Access Pass-Through Query可以保存ODBC連接,但是必須使用VBA來使用Access窗體中的數據更新查詢。

目前我在VBA中的代碼是;

mysql = "Update dbo.MRollData Set dbo.MRollData.PolyPart = '" + Me.ActiveControl.Value + "' WHERE dbo.MRollData.LotNum = '" + Me.MRollLotNum.Value + "' AND dbo.MRollData.Side = '" + Me.MRollSide.Value + "' AND dbo.MRollData.MRIndex = '" + Me.MRollIndex.Value + "' AND dbo.MRollData.PolyPart = '" + Me.CurrentValue.Value + "'" 

    CurrentDb().QueryDefs("PolyPartChange").SQL = mysql 

    DoCmd.OpenQuery "PolyPartChange", , acEdit 

這是通過一個onclick命令激活,但在運行此我得到運行時錯誤「438」對象不支持此屬性或方法。 VBA代碼是使用來自另一個數據庫的代碼的相似位來編寫的,該代碼更新執行SQL查詢的查詢。

我也試過,只是自身運行查詢和不斷收到錯誤「查詢必須至少有一個目標字段」

我缺少的東西或者是不是可以運行執行SQL在Access傳遞查詢中更新查詢?還有更簡單的方法來做我想要的嗎?

UPDATE;我這裏有一個標籤列出了我沒有看到自動生成的ACTIVECONTROL,這本來應該是Me.ActualValue.Value

回答

1

你可以嘗試使用:

CurrentDb.QueryDefs("PolyPartChange").SQL = mysql 
CurrentDb.QueryDefs("PolyPartChange").Execute 

查詢必須是直通查詢你的SQL語法來工作。

+0

我試着改變你的建議,但得到了運行時錯誤'438'對象不支持這個屬性或方法。點擊調試它指向MySQL =「...」部分 – MDavies

+0

這結束了工作,我發現我的錯誤是當輸入VBA代碼時,我意外地把ActiveControl,而不是我的標籤ActualValue。所以謝謝。 – MDavies

相關問題