2016-05-15 29 views
2

我有一個MS Access表單來輸入採購訂單。這是一個包含一般訂單詳細信息的主要表單 - 供應商名稱,日期,然後是數據表視圖中的一個子表單,其中用戶放入訂購的實際物料。子表單中的第一個字段是選擇項目的組合框,下一個字段是訂購的數量,然後自動計算價格和總計字段。加載vba後不顯示combox值

我希望組合框僅顯示屬於在主窗體上選擇的供應商的項目。我用下面的代碼

Private Sub CmbSupplier_Change() 

Me!sfrmOrderDetail.Form!CmbItem.RowSource = "SELECT Items.ID, Items.Product, " _ 
              & "  Items.Supplier" _ 
              & " FROM tblItems" _ 
              & " WHERE ((Items.Supplier)= " _ 
                 & Me.CmbSupplier & ");" 

End Sub 

我把這個也爲Form_Current()事件 - 這樣做成功,所以應該重做它,當我變成一個新的紀錄。

然而,在投入了幾個訂單後,我回到之前的訂單,使用表格後退按鈕來檢查我輸入的內容,並且我看到,雖然其餘的信息仍然存在,但其中的items字段(組合框)位於子表格的第一條記錄是空的。任何額外的行都被填充了。當我用光標進入空白區域時,它會刷新並填充值。

就這樣,我很清楚,例如,我的第一個訂單供應商是斯臺普斯。我有三排在我的subfrom - 墨跡,訂書機,。留下記錄,並在回來後,會出現以下情況:

  1. 沒有顯示,但訂書機是還有墨水,價格和總的數量。
  2. 當我按下該字段時,它突然顯示,我可以看到列出了正確項目的組合框列表,以便代碼可以正常工作。
+1

這是很多文字沒有實際得到的地步。哪裏有問題?表'tblItems'是否不包含所需的數據?該表是否包含數據,但在設置了「RowSource」屬性後,「CmbItem」沒有顯示條目?這是否工作,但事件處理程序不會在預期時調用,所以組合框永遠不會刷新?請隔離錯誤並更新您的問題,以便更具體地瞭解我們在哪裏以及如何提供幫助。 – Leviathan

+0

它應該是在訪問時,最好是有相應的標籤 – user3598756

回答

0

我相當肯定,這裏是什麼情況:

  • 你搬回現有的記錄
  • Access嘗試顯示在組合框中先前輸入的項目,但不能,因爲值不是組合框行來源
  • 然後Form_Current運行的一部分,並改變了行來源的電流供應商
  • CmbItem,直到您點擊它不會挑選起來。

解決方案應該是改變行來源後添加

Me!sfrmOrderDetail.Form!CmbItem.Refresh 

+0

謝謝!這解釋了發生了什麼!感謝解釋和刷新做了訣竅。 –

+0

@ K.Lifs:如果答案解決了您的問題,您可以[接受它](http://stackoverflow.com/help/someone-answers),這也標誌着問題已解決。 – Andre