2013-03-01 67 views
3

使用Access 2010中的我有我的窗體上的未綁定的組合MyCombo失敗,它看起來像這樣...在組合框中選擇行如果綁定列隱藏

RowSource: SELECT EventID, DocRef FROM Events 
BoundColumn: 1 
ColumnCount: 2 
ColumnWidths: 0cm;2cm 

設置在VBA組合值( =「23」)僅在綁定列可見時纔有效。當我設置columnWidth =「0cm; 2cm」時,分配不再有效。

Sub Form_Open() 
    evt = Me.OpenArgs 
    If evt > "" Then 
     MyCombo = evt 
     ' MyCombo.Value = evt 
     Call MyCombo_AfterUpdate 
    End If 
End Sub 

如何選擇組合行而不顯示eventIDs?

+0

我在你的代碼中看到了一些我不確定你是否爲了可讀性而編輯的,但是Form_Open沒有被正確聲明。它需要一個取消參數。 – Pillgram 2015-02-18 04:47:39

回答

2

我避免處理Form Open中的控件。從Form Load試試這個。

Private Sub Form_Load() 
    If Not IsNull(Me.OpenArgs) Then 
     Me.MyCombo = Me.OpenArgs 
     Call MyCombo_AfterUpdate 
     'Call DoSomething 
    End If 
End Sub 

結合的柱可具有0寬度,這應該仍然工作。

請注意,如果你的表格是已經與在組合選擇,當你做這樣的事情的值開...

DoCmd.OpenForm "frmJaybob", OpenArgs:= 4 

...組合的價值不會改變,以4

您可能會發現Call MyCombo_AfterUpdate實際上並沒有執行任何操作Form Load。如果是這樣,請將您的MyCombo_AfterUpdate代碼移至單獨的程序,並從MyCombo_AfterUpdateForm Load中調用新程序。

Private Sub DoSomething() 
    ' move your MyCombo_AfterUpdate code here 
    MsgBox "DoSomething" 
End Sub 
1

嘗試此而不是當前線

MyCombo = evt 

嘗試以下如果EVT是一個數值

MyCombo = DLookup("DocRef","Events","EventID=" & evt) 

使用下面表達式如果EVT是字符串

MyCombo = DLookup("DocRef","Events","EventID='" & evt & "'") 
1

我不認爲這個問題我與隱藏ID有關。我可以讓它工作得很好隱藏或不。

我看到了一些我會改變的東西。你的Sub沒有用正確的事件參數聲明,我也看到你沒有檢查空值。正如你所描述的,這對我來說測試的很好,可以將組合框設置爲一個隱藏的ID字段。 (事實上​​,它會接受任一字段作爲合適的輸入。)

Private Sub Form_Open(Cancel As Integer) 
    Dim evt As String 
    If Not IsNull(Me.OpenArgs) Then 
     evt = Me.OpenArgs 
     If Len(evt) Then 
      Me.Combo0.Value = evt 
     End If 
    End If 
End Sub 

我通過從即時窗口去VB-編輯器,按壓控制-G和運行該測試它:

Docmd.OpenForm "Form1",acNormal,,,,,5329 

很顯然,表單名稱和ID需要根據您的設置進行更正。