如何按记录集显示组合框中的所有值(Access 2010)

时间:2017-03-30 12:17:47

标签: combobox access-vba ms-access-2010

我遇到的问题是访问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是记录集。有没有想法如何解决它或我必须做什么?

1 个答案:

答案 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代码,则必须将所需的记录集行插入临时表,并将此表用作行源。