2013-03-01 66 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需要根据您的设置进行更正。