Forms 如果窗体未绑定,如何选择MS Access组合框中的第一项

Forms 如果窗体未绑定,如何选择MS Access组合框中的第一项,forms,ms-access,combobox,Forms,Ms Access,Combobox,我尝试使用以下选项预选组合框项目中的第一个项目: Private Sub Form_Load() Me.ProjectBox = Me.ProjectBox.ItemData(0) End Sub 但是它说ItemData(0)是空的。我认为这是因为它在填充组合框的查询(行源属性)之前运行。是否有办法在组合框填充后运行它您可以重新查询组合框。将暂停代码直到完成: Private Sub Form_Load() Me.ProjectBox.Requery Me.Proje

我尝试使用以下选项预选组合框项目中的第一个项目:

Private Sub Form_Load()
    Me.ProjectBox = Me.ProjectBox.ItemData(0)
End Sub

但是它说ItemData(0)是空的。我认为这是因为它在填充组合框的查询(行源属性)之前运行。是否有办法在组合框填充后运行它

您可以重新查询组合框。将暂停代码直到完成:

Private Sub Form_Load()
    Me.ProjectBox.Requery
    Me.ProjectBox = Me.ProjectBox.ItemData(0)
End Sub

原始代码应该可以正常工作

Private Sub Form_Load()
    Me.ProjectBox = Me.ProjectBox.ItemData(0)
End Sub
如果在设计器属性页中正确设置了组合框属性,例如:

RowSource = {query}
ColumnCount = 2     
BoundColumn = 1   
ColumnWidths = 0";1"
请特别注意BoundColumn=1


BoundColumn=0
有一个特殊的含义,即组合框的值成为列表索引值(0、1、2…),而不是行源列的值。请注意,其他属性(如
ComboBox.Column(index,row)
的索引值是基于0的,而
ComboBox.BoundColumn
对于第一行源列从1开始。。。令人沮丧的不一致性。

我刚刚在我的一个表单上用一个未绑定的组合框尝试了相同的代码,它工作得非常好,因此至少在我的例子中,行源查询已经执行,结果已经填充了组合框的列表。您应该考虑何时和如何指定ROWSURE。它是在设计器中设置的还是在Form_Open()事件中设置的,以便在Form_Load()事件处理程序中查询可用?RowSource查询有多少列,以及为ColumnCount和BoundColumn属性设置了哪些值?还有ColumnWidths(带有“s”)属性吗?ItemData集合不一定返回显示的值,而是返回绑定值。(即使控件是“unbound”,这意味着没有为表单数据指定字段,术语bound也用于指示ComboBox.Value属性和ItemData集合将返回RowSource查询的哪一列。)发布我提到的所有ComboBox属性的值以获得进一步帮助。ColumnCount:2,列宽:0“1”,边界列:0。我还尝试在表单_Load()中使用它,但由于表单上还没有加载其他内容,因此出现了更多错误。我也试过重新询问,但对我来说没什么不同。我忘了提到的一件事是,当我以\u Load()的形式运行Me.ProjectBox=Me.ProjectBox.ItemData(0)时,它会阻止组合框填充任何条目。