利用Access和VBA:在表单之间复制信息

时间:2014-10-30 21:04:13

标签: forms vba ms-access-2003

搜索了一下,找不到包含我确切问题的现有帖子。

我正在创建一个Access(2003)数据库,它使用多个表格和表格,这些表格和表格需要相互通信和共享信息(即 - 姓/名等)。主要表格/表格“人员”将保留大部分信息,但其他表格/表格仅保存与某些情况/情况相关的信息,因此“人事”中的每个条目都不会同时输入“雇用“,例如。如果已存在具有相同名称的记录,我希望MsgBox告诉我并打开该条目(在表单中进行编辑),如果没有创建新条目,则使用预先选择的字段自动填充(即 - 名/姓)。

从下拉菜单中选择一个选项后,会访问/打开相应的表单,例如“已聘用”(此部分可用)。

跨表单复制信息不起作用。


Dim rstPers, rstHired As DAO.recordset
Dim LastName As String

If status = "hired" Then
DoCmd.OpenForm "Hired Information"

Set rstPers Forms!Personnel.RecordsetClone
Set rstHired Forms![Hired Information].RecordsetClone

????

...
End If

我尝试过多种方式,但似乎没有任何效果。新表格或表格中没有任何内容。我看错了吗?我应该尝试不同的方法吗?

希望我的解释有意义。谢谢你的帮助。

- 查尔斯

1 个答案:

答案 0 :(得分:0)

你的方法确实不好。 您的表单链接到表格。因此,您应尽可能避免使用记录集克隆直接操作或检索表单数据,而应尝试直接从表中检索此数据。 / p>

所以,如果你想打开你的雇佣信息"形式:

Dim RS As Recordset
Dim IDperson As String

IDperson = me.ID ' or whatever

Set RS = CurrentDb.OpenRecordset("SELECT ID FROM TableHired WHERE ID='" & IDperson & "'")

If RS.BOF Then
    ' No record exist - Open form in record creation
    DoCmd.OpenForm "FormHired", acNormal, , , acFormAdd
Else
    ' record exists, open form and position it oon the record's ID
    DoCmd.OpenForm "FormHired", acNormal, , "ID='" & RS!ID & "'", acFormEdit
End If

当然,由于你没有提供足够的信息,它不会像这样工作。
查看此代码并使用您的字段名称(ID),表名称(TableHired)和FormName(FormHired)进行调整,并遵循触发位置和方式的情况。此外,如果您的ID不是字符串,则应删除SQL中的引号