如何创建临时表并将其设置为子表单的记录源?

时间:2015-04-15 03:19:25

标签: vba ms-access access-vba

我正在尝试使用CreateTableDef方法创建一个临时表,并在父表单加载时将该表设置为访问数据库中子表单的记录源:

Private Sub Form_Load()

Dim db As Database
Dim tblDef As TableDef
Set db = CurrentDb
Set tblDef = db.CreateTableDef("tblMyTable")
tblDef.Fields.Append tblDef.CreateField("Field1", dbText)
tblDef.Fields.Append tblDef.CreateField("Fields", dbText)
tblDef.Fields.Append tblDef.CreateField("Field3", dbText)

db.TableDefs.Append tblDef
db.TableDefs.refresh

Me.sfrm.Form.RecordSource = "SELECT * FROM tblmyTable"
Me.sfrm.Form.Requery

End Sub

但是,当执行到达:Me.sfrm.Form.RecordSource =“SELECT * FROM tblIHC”时,它会引发运行时错误2467:“您输入的表达式是指关闭或不存在的对象。“

帮助表示赞赏。另外,我是否还需要设置子窗体的源对象属性?如果是这样的话。

2 个答案:

答案 0 :(得分:0)

简单使用currentDB.Execute("CREATE TABLE tblMyTable (Field1 Text, field2 Text, field3 Text);"

要容易得多

但是对于记录来源,您是否尝试在Select?

的末尾添加;

答案 1 :(得分:0)

你有两个子表格吗?

应该是:

Me!IHCResults_subform.Form.RecordSource = "SELECT * FROM tblmyTable"
Me!IHCResults_subform.Form.Requery

如果是这样,则不需要最后一行。更改记录源时,子表单将重新查询。

另外请注意,当您打开表单时,首先打开(隐藏)子窗体,然后关闭,然后打开父窗体,这将打开子窗体。因此子表单最初必须包含有效的记录源。