从表中填充表单

时间:2013-07-23 14:47:48

标签: ms-access access-vba

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

我正在为我公司的员工评审制作一个MS-Access数据库,我制作了表格,表格中的所有数据都是两个单独的表格。每次填写表单时,表格都通过相同的评级ID进行链接。

我有一个单独的表单,当您选择所审查的利益相关方的名称时,它会填充一个列表框,其中包含审核它们的领导者的姓名,日期和评级ID。我使用VB将其设置为如果您选择评级ID,那么它将打开使用DoCmd.OpenForm“FRM”放入数据的表单。

现在提出这个问题,我希望这一切都是可以理解的。我想通过选择评级ID来重新填充的表单,以及为该特定ID输入表格的所有信息。我需要做什么才能做到这一点?

2 个答案:

答案 0 :(得分:2)

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

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

这样做的好处是表单可以单独打开,因为它只显示RecordSource的所有数据,而不会产生不需要的参数请求。

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

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

答案 1 :(得分:0)

有各种可能的解决方案。

第一个(也是最简单的)是使用适当的数据源在表单的RowSource属性中编写查询,并在该查询中包含与您要过滤的Id对应的过滤器字段: / p>

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

希望这有助于你