搜索在MS Access表单中创建问题

时间:2012-02-27 05:35:41

标签: ms-access ms-access-2007

在MS Access中,我创建了一个具有主窗体和子窗体并且处于一对多关系的数据库,然后我在我的主窗体上创建了一个搜索框,我应该能够在两者上进行搜索,主要和子形式的领域,我可以做到这一点。现在,当我正在搜索时,表单显示搜索到的记录,但问题是我的主窗体上的非主要窗体的控件(保存,新建,删除,下一个,上一个等)正在工作。 我很高兴在这个问题上指导我...谢谢,

1 个答案:

答案 0 :(得分:0)

重新导航

根据您用于搜索的方法,您将无法前后导航。如果您确实想要前后导航,则需要指定搜索范围。例如,您不需要搜索ID为123的SINGLE记录,而是需要搜索RANGE记录,即ID 123和ID 234之间。

重新保存

您不需要在绑定表单(直接绑定到记录源的表单)上显式保存记录。您只需更改数据,然后继续。一旦继续,您的数据将被保存 - 只要不违反表约束。

重新搜索

在Access中创建主表单/子表单时,2个表单通过Child / Master属性链接。因此,如果要在主窗体中搜索特定记录,通常也不必担心过滤子窗体。使用类似于评论中的方法:

dim qry As String
qry = "select parenttbl.* from parenttbl where parenttbl.id=" & Me.mysearchbox.text &";"
Me.RecordSource = qry

通过在原始代码中加入子表,可能混淆了Access的保存能力,但我对此表示怀疑。我没有测试它,但我认为你不需要在更改记录源后将filteron属性设置为true。请参阅Allen Browne http://allenbrowne.com/ser-28.html

在本文中如何使用filteron

重新过滤 话虽如此,您可以调整他对filteron属性的使用来“搜索”您想要的记录,然后您可以将filteron属性转换为False,然后在记录集中前后导航。我没试过它。

编辑:以下是将FilterOn属性设置为false的示例:

Me.FilterOn = False
DoCmd.GoToRecord , , acNext

为此,您需要在主表单绑定的SQL查询中指定ORDER BY子句。否则,你可能无法按照预期的方式前后导航。