Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 从155K记录表中仅获取组合框中列出的65K记录_Ms Access - Fatal编程技术网

Ms access 从155K记录表中仅获取组合框中列出的65K记录

Ms access 从155K记录表中仅获取组合框中列出的65K记录,ms-access,Ms Access,我有一张155K的记录表。我只能在具有recordsource和query或sql的表单的组合框中滚动65K条记录,从该表中选择三个字段。为什么它没有列出所有155K记录?即使是我用作记录源的查询,也会显示表单之外的所有记录。也许项索引是一个16位整数 更好的问题是,您真的希望用户在组合框中滚动浏览155000个项目吗?也许项目索引是一个16位整数 一个更好的问题是,你真的希望用户在一个组合框中滚动15.5万个项目吗?另一个人认为这是一种让用户访问此数据的疯狂方式。没有人会想一次解析超过100k

我有一张155K的记录表。我只能在具有recordsource和query或sql的表单的组合框中滚动65K条记录,从该表中选择三个字段。为什么它没有列出所有155K记录?即使是我用作记录源的查询,也会显示表单之外的所有记录。

也许项索引是一个16位整数


更好的问题是,您真的希望用户在组合框中滚动浏览155000个项目吗?

也许项目索引是一个16位整数


一个更好的问题是,你真的希望用户在一个组合框中滚动15.5万个项目吗?

另一个人认为这是一种让用户访问此数据的疯狂方式。没有人会想一次解析超过100k条记录。我会提供一种预先筛选记录的方法,以便只显示当时感兴趣的记录。

另一个人同意,这将是一种让用户访问此数据的疯狂方式。没有人会想一次解析超过100k条记录。我会提供一种预先筛选记录的方法,以便只显示当时感兴趣的记录。

65536确实是组合框项目数量的限制

我建议使用带有搜索按钮的文本框从列表中查找某人,而不是在这种情况下使用组合框

作为替代方案,您可以从插入的文本中动态加载相关项

您还可以尝试通过表单上先前输入的值对组合框进行“预过滤”,以使返回的记录数低于允许的最大值。例如,如果您的表有价值100000的名称和地址,您可以让用户(在使用combobox之前)输入一个zipcode或状态,用于过滤combobox查询RecordSource返回的记录数


@史蒂文A.洛和阿姆德凡:你知道A是什么,为什么叫组合框吗?它是一个文本框和一个列表框的组合。键入文本后,列表框将显示与文本匹配的第一个条目


所以,我想这是一个合理的问题。

65536确实是组合框项目数量的限制

我建议使用带有搜索按钮的文本框从列表中查找某人,而不是在这种情况下使用组合框

作为替代方案,您可以从插入的文本中动态加载相关项

您还可以尝试通过表单上先前输入的值对组合框进行“预过滤”,以使返回的记录数低于允许的最大值。例如,如果您的表有价值100000的名称和地址,您可以让用户(在使用combobox之前)输入一个zipcode或状态,用于过滤combobox查询RecordSource返回的记录数


@史蒂文A.洛和阿姆德凡:你知道A是什么,为什么叫组合框吗?它是一个文本框和一个列表框的组合。键入文本后,列表框将显示与文本匹配的第一个条目


所以,我想这是一个合理的问题。

那么你真正想要的是一个“自动完成”的功能,就像在互联网浏览器中看到的那样?当你说组合框时,每个人都会画出一个下拉列表,用户在其中选择一个项目-你可能想澄清你的问题。

那么你真正想要的是一个“自动完成”的功能,就像在internet浏览器中看到的那样?当你说组合框时,每个人都会画出一个下拉列表,用户在其中选择一个项目-你可能想澄清你的问题。

一般来说,当你遇到一个通用和广泛使用的组件(如组合框)的硬编码限制时,是时候重新考虑你的方法了。组合框不是为您的用例设计的,也不足以满足您的用例。从项目中后退几步,重新评估UI。也许ListView或过滤数据网格更合适

一般来说,当您在一个通用且广泛使用的组件(如组合框)上遇到硬编码限制时,是时候重新考虑您的方法了。组合框不是为您的用例设计的,也不足以满足您的用例。从项目中后退几步,重新评估UI。也许ListView或过滤数据网格更合适

创建文本框和列表框组合并不太困难,在文本框的更改事件中重新查询列表框,逐步缩小所选项目的范围。这意味着您的用户仍然可以看到一个名称列表,而不是猜测,而是一个更短、更相关的列表

以下是此类列表框的行源的示例SQL:

SELECT tp.PersonKey, 
   tp.Surname & ", " & tp.Forename AS PersonName
FROM tblPersons tp
WHERE tp.Surname 
LIKE Forms!MyForm!txtSurname.Text
ORDER BY  tp.Surname, tp.Forename

注意使用textbox的Text属性,这可以确保使用textbox的当前内容,但这也意味着除非TXTNUSAME具有焦点,否则无法重新查询textbox,这很好,由于重新查询只应在txtAn姓氏的更改事件中进行。

创建文本框和列表框组合并不太困难,其中列表框在文本框的更改事件中重新查询,从而逐步缩小所选项目的范围。这意味着您的用户仍然可以看到一个名称列表,而不是猜测,而是一个更短、更相关的列表

以下是此类列表框的行源的示例SQL:

SELECT tp.PersonKey, 
   tp.Surname & ", " & tp.Forename AS PersonName
FROM tblPersons tp
WHERE tp.Surname 
LIKE Forms!MyForm!txtSurname.Text
ORDER BY  tp.Surname, tp.Forename

注意使用textbox的Text属性,这可以确保使用textbox的当前内容,但这也意味着除非TXTNUSAME具有焦点,否则无法重新查询textbox,这很好,因为重新查询只能在TXTNUSAME的更改事件中进行。

在现实世界中很难使用,combobox存储155k条记录,我认为如果将其更改为[…]浏览按钮或其他控件,我将更易于使用
  PARAMETERS [Forms]![MyForm]![MyField] Text ( 255 );
  SELECT MyID, MyField FROM MyTable WHERE MyField = [Forms]![MyForm]![MyField];"
  Dim strRowSource As String

  strRowSource = "PARAMETERS [Forms]![MyForm]![MyField] Long; "
  strRowSource = strRowSource & "SELECT MyID, MyField FROM MyTable "
  strRowSource = strRowSource & "WHERE MyField = [Forms]![MyForm]![MyID]"
  strRowSource = strRowSource & "UNION SELECT MyID, MyField FROM MyTable"
  If Len(Me!cmbMyCombo.Text)=3 Then
     strRowSource = strRowSource & " WHERE MyField Like '" 
     strRowSource = strRowSource & Me!cmbMyCombo.Text
     strRowSource = strRowSource & "*'"
     Me!cmbMyCombo.RowSource = strRowSource
     Me!cmbMyCombo.DropDown
  End If
  Dim strRowSource As String

  strRowSource = "PARAMETERS [Forms]![MyForm]![MyField] Text ( 255 ); "
  strRowSource = strRowSource & "SELECT MyID, MyField FROM MyTable "
  strRowSource = strRowSource & "WHERE MyField = [Forms]![MyForm]![MyField]"
  Me!cmbMyCombo.RowSource = strRowSource
Private Sub POLICY_NO_Click()
    Set Me.Parent.Recordset = CurrentDb.OpenRecordset("qryHPolicy")
    Me.Parent.Recordset.FindFirst "[POLICY_NO]=" & Me.POLICY_NO & ""
End Sub
Forms(Me_FormTo).Form.RecordSource = Me_RecSource
Forms(Me_FormTo).Combo6.Form.RecordSource = Me_RecSource