Ms access 从表填充窗体

Ms access 从表填充窗体,ms-access,vba,Ms Access,Vba,我不确定我是否使用了这个问题的正确标题,但我会试着问它。请对我耐心,我是Microsoft Access的新手 我正在制作一个微软Access数据库,用于我公司的员工审核,我制作了表格,表格中的所有数据都将放在两个单独的表格中。每次填写表格时,表格都通过相同的评级ID链接 我有一个单独的表格,当你选择被审查的利益相关者的名字时,它会在一个列表框中填入审查他们的领导人的名字、日期和评级ID。我使用VB将其设置为如果你选择评级ID,那么它将使用DoCmd.OpenForm“FRM”打开数据输入的表格

我不确定我是否使用了这个问题的正确标题,但我会试着问它。请对我耐心,我是Microsoft Access的新手

我正在制作一个微软Access数据库,用于我公司的员工审核,我制作了表格,表格中的所有数据都将放在两个单独的表格中。每次填写表格时,表格都通过相同的评级ID链接

我有一个单独的表格,当你选择被审查的利益相关者的名字时,它会在一个列表框中填入审查他们的领导人的名字、日期和评级ID。我使用VB将其设置为如果你选择评级ID,那么它将使用DoCmd.OpenForm“FRM”打开数据输入的表格


至于这个问题,我希望大家都能理解。我希望在选择评级ID后生成的表单中重新填充该特定ID表中输入的所有信息。我需要做什么才能做到这一点?

有各种可能的解决方案

第一个(也是最简单的)方法是使用适当的数据源在表单的
RowSource
属性中编写一个查询,并在该查询中包含一个过滤器字段,该字段对应于正在筛选的Id:

select a.*
from [your table] as a
where a.[id] = forms!frmYourForm![theControlName]
这样,每次打开表单时,它都会显示相应的数据

第二种解决方案(稍微复杂一点)是在运行时编辑
RowSource
属性。在打开表单的代码中,可以执行以下操作:

strSQL = "select a.* from [your table] as a where a.Id = " & theControlName.Value
DoCmd.OpenForm "theDetailedForm"
form_theDetailedForm.RowSource = strSQL
form_theDetailedForm.Requery

希望这对您有所帮助

另一个选项是基于表或查询(其
RecordSource
)创建表单,并在打开表单时使用Where子句参数:

DoCmd.OpenForm "frmName", acNormal, , "[SomeID]=" & frmYours!ctlControlName
这样做的好处是表单可以单独打开,因为它只显示其
记录源中的所有数据,而不会产生不需要的参数请求

如果
SomeID
是文本,则需要使用撇号引用其值:

DoCmd.OpenForm "frmName", acNormal, , "[SomeID]='" & frmYours!ctlControlName & "'"

我已从您的标题中删除“MS Access”标签;标题不应包含标签,因为它是不必要的,并且可能会抑制搜索功能。如果您已正确设置了此项,则根据ID打开表单将使用该ID的所有数据填充该表单,因此您可能应该澄清您的问题;也就是说,提供更具体的信息。感谢您的建议。我刚吃完午饭回来,现在正在开会。稍后我将对此进行研究,并尝试您的建议。