我在MySQL中有一个表通过Microsoft Access 2013中的链接表(通过ODBC)访问。
此表包含超过124,000条记录,我需要一个表单中的ComboBox才能搜索UPC列。
这是查询,它是ComboBox的当前数据源:
SELECT [ID], [UPC_Case], [Description] FROM itemlist ORDER BY [UPC_Case];
除了ComboBox下的表视图不会超过记录号62287(但是自动填充仍然适用于表无法看到的记录)之外,这种方法很有效,是否有办法使其能够查看所有记录?
答案 0 :(得分:0)
这是一个已知的错误,有时像这样的大型记录集存在问题。你在基于文本的字段上排序吗?如果是这样,请尝试删除排序,看看它是否解决了问题。
答案 1 :(得分:0)
Access ComboBoxes的最大记录数为65535。
为了避免这种情况,我发现an article给了我编写一个函数所需的基础,该函数在键入一定数量的字符后动态设置rowSource。
这是设置rowSource的函数。我重构了代码,以便它可以在任何具有任何查询的Form中的任何comboBox上使用。
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
该函数可以绑定到ComboBox更改事件,如下所示:
Private Sub UPCCombo_Change()
Call ComboLimiter(Me.UPCCombo, 1, _
"SELECT ID, UPC_Case, Description FROM itemlist", "UPC_Case")
End Sub