Vba 组合框已达到最大记录数
我在MySQL中有一个表,通过Microsoft Access 2013中的链接表(通过ODBC)进行访问 这个表包含超过124000条记录,我需要一个表单中的组合框来搜索UPC列 这是组合框的当前数据源查询: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(但是自动填充仍然适用于表看不到的记录)之外,它工作得非常好。有没有办法使它能够查看所有记录
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