2016-12-16 75 views
0

我試圖讓用戶使用表單將數據插入到Microsoft Access中的表Inventory2Locaton中。他們將從兩個組合框中選擇數據,然後按下添加按鈕將數據添加到表格中。如何在SQL語句中引用組合框並在VBA中運行語句

我使用的查詢是

INSERT INTO Inventory2Location 
VALUES (ComboPart.value, ComboOver.value); 

,但它實際上並不會拉從組合框ComboPart.valueComboOver.value

我也不知道如何通過單擊按鈕來運行此查詢。我有模塊與

Private Sub CommandAdd_Click() 

但不知道什麼VBA代碼將運行查詢。

我對excel的體驗非常熟悉VBA,並且在SQL上學過一門課,但我對訪問非常陌生,不懂如何將兩者結合在一起。

+0

http://stackoverflow.com/questions/390420/create-a-query-dynamically-through-code-in-msaccess-2003-vba – tlemaster

回答

0

試試這個,

sqlStr = "INSERT INTO Inventory2Location VALUES (" & ComboPart.Value & " ," & ComboOver.value & ");" 

你需要得到組合框的值,你在做什麼只是把ComboPart.Value一個字符串值。

本代碼,

Private Sub CommandAdd_Click() 

這是自動生成的代碼,因此應重視的東西火了,當你點擊它。

+0

這會返回一對錯誤。使用一個ComboPart值,它會在查詢表達式'「U」CHANFRAME'「(」U「CHANFRAME是ComboPart值中的零件號碼。 )中返回」語法錯誤(缺少運算符)。另一個不完全是錯誤,會彈出一個消息框來手動輸入文本,消息框會被命名爲我想要輸入的內容。 –

+0

在字符串中發現了語法錯誤,它簡單地丟失了一對單引號。 「INSERT INTO Inventory2Location VALUES('」&ComboPart.Value&‘‘’’&ComboOver.Value & "');「 –

1

我會提供一個更好的解決方案是將窗體的「記錄源」屬性設置爲Inventory2Location。然後,在表單屬性的數據選項卡上,將「數據輸入」設置爲「是」。這將使得表格只能將記錄添加到表格中。

接下來,對於表示希望用戶添加的表中的值的每個控件,進入該控件的屬性並將Control Source設置爲您要更新的字段。

然後,在「保存」按鈕的事件選項卡上,刪除[Event Procedure]並單擊...按鈕。選擇Macro Builder。這將在窗體中創建一個嵌入式宏。宏只是兩個命令。一個保存當前記錄,另一個關閉表單。

RunMenuCommand 
     Command SaveRecord 
CloseWindow 
    Object Type Form 
    Object Name =[Screen].[ActiveForm].Name 
      Save Prompt 

請務必在[Screen]前面加上等號。

這種方法的好處是:

  • 如果由於錯誤重複鍵或錯誤輸入,訪問將通知問題的用戶的關懷。使用VBA,您需要捕獲這些類型的錯誤。
  • 通過使用嵌入式宏,你應該能夠徹底消除附着於形式的代碼模塊(轉Has ModuleNo其他選項卡形式的屬性)。這變成了一個輕量級形式,這意味着它運行速度更快,並且不會遭遇陷入Access的常見代碼損壞。
  • 最後,您應該能夠運行該表單而不必授予數據庫提升的信任設置。因此,您無需擔心人們點擊「啓用」按鈕以使表單正常工作。
+0

此方法將如何知道該把哪些數據字段到表? –

+0

您綁定控件(如組合Box)添加到表格字段中。在控件的屬性中,您將使用「控制源」 – DHW