在MS Access中,我创建了一个具有主窗体和子窗体并且处于一对多关系的数据库,然后我在我的主窗体上创建了一个搜索框,我应该能够在两者上进行搜索,主要和子形式的领域,我可以做到这一点。现在,当我正在搜索时,表单显示搜索到的记录,但问题是我的主窗体上的非主要窗体的控件(保存,新建,删除,下一个,上一个等)正在工作。 我很高兴在这个问题上指导我...谢谢,
答案 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
子句。否则,你可能无法按照预期的方式前后导航。