我遇到的问题是访问2010中的组合框只显示了1278的1249个值。是否有可能增加访问组合框中的最大值?
以下是代码示例:
If not rs.EOF Then
rs.MoveFirst
frm.FName.RowSource = ""
frm.FNameLux.RowSource = ""
Do Until rs.EOF
If rs![id] <> -1 And rs![id] <> -2 Then
If (rs!KID <> 2 And rs!KID <> 8) Then
If IsNull(rs![Name]) = False Then
frm.FName.AddItem rs![Name] & ";" & rs![id]
Debug.Print rs!Name 'The program writes all values in the combobox, but when I look in the form, I don't see all values
End If
End If
If (rs!KID = 2 Or rs!KID = 8) Then
If IsNull(rs![Name]) = False Then
frm.FNameLux.AddItem rs![Name] & ";" & rs![id]
End If
End If
End If
rs.MoveNext
i = i + 1
Loop
End If
rs
是记录集。有没有想法如何解决它或我必须做什么?
答案 0 :(得分:0)
显然RowSource
的{{1}}属性限制为16位整数长度(2 ^ 15 = 32768)或稍低一点。
2列组合框的测试代码:
RowSourceType = Value list
组合框已填满,直到&#34;编号1991&#34;,输出为Private Sub btValues_Click()
Dim i As Long
DoCmd.Hourglass True
Me.cboValues.RowSource = ""
For i = 1 To 5000
Me.cboValues.AddItem "Number " & Format(i, "0000") & ";" & i
Next i
DoCmd.Hourglass False
Debug.Print Len(Me.cboValues.RowSource)
End Sub
。
所以问题不是行数,而是总字符串长度。如果我缩短文本,它会上升到&#34; Nr 2604&#34; (32744个字符)。
您必须使用32739
来显示所有项目。
修改强>
将查询创建为组合框的行源。据我所知,您的代码中没有任何内容无法在WHERE子句中完成。
E.g。 RowSourceType = Table/query
FName
如果无法在SQL中重新创建VBA代码,则必须将所需的记录集行插入临时表,并将此表用作行源。