Vba 如何在Access中的特定记录处打开表单

Vba 如何在Access中的特定记录处打开表单,vba,ms-access,ms-access-2010,openform,Vba,Ms Access,Ms Access 2010,Openform,我有一个带有个人记录的表单,其中有一个按钮可用于查看/编辑个人信息。当我完成编辑许可并按下后退按钮时,我希望原始表单(基本个人信息)在我刚刚处理的记录处打开,而不是返回到记录1 我目前掌握的代码是 DoCmd.Close DoCmd.OpenForm ("Basic Personal Information") 我已尝试将OpenForm更改为 DoCmd.OpenForm ("Basic Personal Information"), , , "S_ID=LinkRef" 其中S_ID是具

我有一个带有个人记录的表单,其中有一个按钮可用于查看/编辑个人信息。当我完成编辑许可并按下后退按钮时,我希望原始表单(基本个人信息)在我刚刚处理的记录处打开,而不是返回到记录1

我目前掌握的代码是

DoCmd.Close
DoCmd.OpenForm ("Basic Personal Information")
我已尝试将OpenForm更改为

DoCmd.OpenForm ("Basic Personal Information"), , , "S_ID=LinkRef"
其中S_ID是具有persons unique ID的字段的名称,LinkRef是该ID的整数。我尝试了一些小的变化,并最终将其用于某种工作,但它打开了基本的个人信息,只有一条记录可用,因此我无法查看表单上的任何其他人(即,在左下角的记录导航中,它是1中的1,而实际上应该是32中的5)

我尝试的另一件事是添加行

DoCmd.GoToRecord(acDataForm,"Basic Personal Information",acGoTo,"[S_ID] = " & LinkRef)
但是很明显,这里的问题是AcGoTo的偏移量应该只是一个记录编号,所以在这种情况下应该是5。但是我不知道如何告诉程序从LinkRef中计算出记录的编号

我希望这是有意义的,如果不想问我问题,我会尽量解释得更好,否则任何建议/方法将不胜感激

谢谢

请参见本页:

我希望找到某种indexOf()方法,但我不知道所包含的类调用了什么。因此,这里有一个解决方法,因为我对VB不太熟悉:

您可以使用
GoToRecord
通过为第四个参数传递0来转到第一条记录。然后,使用
acNext
循环遍历所有记录,直到找到具有正确
S\u ID
值的条目。然后您可以在那里停止,并且您的条目将是列表中的当前条目


它远不是完美的或最佳的,但如果没有其他选项,它也能工作。

也许这对您有帮助:尝试在对话框中打开表单:


DoCmd.OpenForm(“基本个人信息”)、、、acDialog

我会用以下方式解决您的问题:

DoCmd.OpenForm ("Basic Personal Information")
Forms("Basic Personal Information").Form.Recordset.FindFirst "[S_ID] = " & _
            Forms("PreviousForm").[LinkRef] & ""
也就是说,我将首先打开表单,然后将记录集的光标移动到所需行。

DoCmd.OpenForm(“基本个人信息”),“s_ID=“&LinkRef