使用RecordSource更改表单内容

时间:2014-08-06 19:32:19

标签: forms ms-access access-vba

我正在尝试创建一个在DS视图表单中显示所选表格的方法。该表单将被重复使用以查看不同的表,因此我认为最简单的方法是创建表单并根据用户选择动态更改RecordSource。

我创建了一个名为“frmDisplay”的表单,用于向用户显示表的内容。我正在尝试使用此代码更新表单。

Private Sub btnViewEntries_Click()

Dim frmDisplay As Form
Dim selection As String

Me.cmboSelection.SetFocus
selection = "tbl" & Me.cmboSelection.Text

Set frmDisplay.RecordSource = selection
DoCmd.OpenForm "frmDisplay", acFormDS

End Sub

目前,当我尝试将RecordSource设置为在组合框中进行的选择时,代码会抛出“不正确的属性使用”错误。

Set frmDisplay.RecordSource = selection

我现在已经看了一会儿,但我似乎无法找到适用于此示例的任何明确答案。我发现的大多数帖子都缺少Set关键字...

有人认出这个问题吗?更重要的是,这是实现这一目标的最佳方式 工作?

由于

_____ 编辑 _____

我想出来了,请看下面的代码。

Dim selection As String
Me.cmboSelection.SetFocus
selection = "SELECT * from tbl" & Me.cmboSelection.Text
DoCmd.OpenForm "frmDisplay", acDesign
Forms!frmDisplay.Form.RecordSource = selection
DoCmd.Close acForm, "frmDisplay", acSaveYes
DoCmd.OpenForm "frmDisplay", acFormDS

1 个答案:

答案 0 :(得分:0)

我注意到您已经提供了答案,但您可能会发现以下内容:

如果您的主窗体包含控件cmboSelectionbtnViewEntries,则添加子窗体控件并将其命名为fsbDisplay。不要在这个子表单中放置任何内容,不加限制。

现在尝试以下单行:

Private Sub btnViewEntries_Click()

    fsbDisplay.SourceObject = "Table.tbl" & cmboSelection.Value

End Sub

此方法的优点是您可以使用它来调用任何表或查询(前缀为Query.而不是Table.),并且显示的字段是动态创建的。