Vba 组合框已达到最大记录数

Vba 组合框已达到最大记录数,vba,database,ms-access,odbc,Vba,Database,Ms Access,Odbc,我在MySQL中有一个表,通过Microsoft Access 2013中的链接表(通过ODBC)进行访问 这个表包含超过124000条记录,我需要一个表单中的组合框来搜索UPC列 这是组合框的当前数据源查询: SELECT [ID], [UPC_Case], [Description] FROM itemlist ORDER BY [UPC_Case]; 除了组合框下的表视图不会超过记录编号62287(但是自动填充仍然适用于表看不到的记录)之外,它工作得非常好。有没有办法使它能够查看所有记录

我在MySQL中有一个表,通过Microsoft Access 2013中的链接表(通过ODBC)进行访问

这个表包含超过124000条记录,我需要一个表单中的组合框来搜索UPC列

这是组合框的当前数据源查询:

SELECT [ID], [UPC_Case], [Description] FROM itemlist ORDER BY [UPC_Case];

除了组合框下的表视图不会超过记录编号62287(但是自动填充仍然适用于表看不到的记录)之外,它工作得非常好。有没有办法使它能够查看所有记录?

有一个已知的错误,在这种情况下,大型记录集有时会出现问题。您是否在基于文本的字段上排序?如果是,请尝试删除排序,并查看它是否解决了问题。

Access组合框的最大记录数为65535

为了避免这种情况,我发现这为我编写一个函数提供了必要的基础,该函数可以在键入一定数量的字符后动态设置行源

这是设置行源的函数。我对代码进行了重构,这样就可以在任何形式的组合框上使用任何查询

Dim inputStub As String

Function ComboLimiter(targetCombo As ComboBox, minChars As Integer, Query As String, searchField As String)
    Dim inputStr As String: inputStr = targetCombo.Text 'Set input string
    Dim newStub As String: newStub = Nz(Left(inputStr, minChars), "") 'Set first n characters of targetCombo.Text

    If newStub <> inputStub Then 'If first n chars are the same as previously, do nothing.
        If Len(newStub) < minChars Then
            'Remove the RowSource
            targetCombo.RowSource = Query & " WHERE (False);"
            inputStub = ""
        Else
            'New RowSource
            targetCombo.RowSource = Query & " WHERE (" & searchField & " Like """ & newStub & "*"") ORDER BY " & searchField & ";"
            inputStub = newStub
        End If
    End If
End Function

我已经做了一个解决方案,我刚刚完成编码,然后我会回答我自己的问题
Private Sub UPCCombo_Change()
    Call ComboLimiter(Me.UPCCombo, 1, _
    "SELECT ID, UPC_Case, Description FROM itemlist", "UPC_Case")
End Sub