Access 2007, 搜索字段 Textbox, 喜欢搜索字段 Facebook 在右上角

所以,主要是我有一种形式 AddCompany, 哪里有 textbox [CompanyName], 我想输入公司的新名称,但与此同时检查是否存在现有的。

所以,例如,让我们说我想进入 Microsoft, 当我键入时 M, textbox 显示一大堆其他名称 M, 然后继续前进,直到我得到 finish typing microsoft. 基本上 jsut, 搜索字段如何运作 facebook.

如何实施它 Microsoft Access 2007?? 它可能是一个肮脏的事件/关于变革/关闭了事件???

请赐教!!

非常感谢!!!
已邀请:

快网

赞同来自:

可以使用Access向导完成相同的更简单版本。 如果在表单构造函数中启用形状向导并按列表按钮并指向表单标题的位置,则会自动接收选择以创建一个字段,其中列表将搜索与列出的内容对应的条目下拉列表。

但是,请记住这一点:

只有当您将表单绑在整个表格中时,它只有效 /不推荐大量记录/

他创造的代码是可怕的 BAD.

有几种方法可以解决这个问题。 如果您对表单的绑定感到满意,则导航书签 /就像由主设备创建的代码一样/ 会没事的。 但是,我建议您使用此代码而不是主代码。 /假设在列表框中有一个带有标识符的针织列 PK 您想要找到的记录/:


Private Sub MyComboBox_AfterUpdate//
If IsNull/Me!MyComboBox/ Then Exit Sub
With Me.RecordsetClone
.FindFirst "[MyID]=" & Me!MyCombBox
If Not .NoMatch Then
If Me.Dirty Then Me.Dirty = False
Me.Bookmark = .Bookmark
End If
End With
End Sub


包含列表的字段应该使用 SQL rowsource, 这将是如下:


SELECT CompanyID, CompanyName FROM Company ORDER BY CompanyName


并且您将使用列表定义该字段,以便它是 2 列,第一个绑定列,并且已经安装了第一列的宽度 0. 主人将掌握此功能并为您配置它。 他唯一做错了 - 这为此写了一个非常糟糕的代码。

现在,如果你不寻找一个唯一的价值,它变得更加复杂,你可以使用另一种方法。 假设您有一种显示人员,您希望查看特定公司的表格。 在这种情况下,您可以过滤 CompanyName. 在这种情况下,除了如上所述,代替执行搜索操作,您可以应用滤波器。 在这种情况下,事件 AfterUpdate 您的字段与列表看起来像这样的东西:


Private Sub MyComboBox_AfterUpdate//
If IsNull/Me!MyComboBox/ Then Exit Sub
Me.Filter = "[CompanyName]=" & Chr/34/ & Me!MyComboBox & Chr/34/
Me.FilterOn = True
End Sub


现在,在这种情况下,具有列表的字段只有一列具有公司名称和没有隐藏的字段。 ID, 所以这有点不同。

我不喜欢编写此类过滤,因为它提供访问权限 UI /您可以右键单击该字段 CompanyName 在出现的上下文菜单中,输入要过滤的公司名称,包括通配符,? 和 */./. 如果您只查看 CitiCorp, 然后过滤 JP Morgan Chase, 你不会得到任何东西。

相反,我将寻求更改表单记录的源,而不应用过滤器。 这意味着每个搜索都将为您提供一组新的结果,并且是最有效的方法。 这真的使情况与返回初始起点的情况相复杂,但在适当的应用程序中,您可能必须首先代表用户一个数据子集,因此是这种方法的问题 "causes" 正是您需要决定构建一个正确和高效的用户界面,只能提取用户真正需要的数据。

八刀丁二

赞同来自:

形式B. Access 有事件处理程序功能。 那么,你可以使用添加到这些函数的自动填充代码吗? 我找到了一本书
http://books.google.com/books% ... m%3D5
, 讨论它。

我可以提出以下代码,即必须添加到事件处理程序函数:

1. SQL 找到现有的潜在巧合

2. 生成的下拉列表代码,以显示潜在的巧合

诸葛浮云

赞同来自:

通常,此功能称为AutoCarter /我也听说过 find-as-you-type/.
http://www.tek-tips.com/faqs.cfm?fid=6295
有一篇文章介绍了如何进行的例子 Access .

要回复问题请先登录注册