Access 2003 - 表单上另一个数据库中的字段

Posted

技术标签:

【中文标题】Access 2003 - 表单上另一个数据库中的字段【英文标题】:Access 2003 - Field from another database on form 【发布时间】:2009-02-04 22:41:19 【问题描述】:

我正在“修复”一个旧的 Access 数据库,而客户要求将 DATE 字段添加到表单中。 问题是,我以前从未使用过 Access。我是一个 SQL 人,我构建了自己的 UI。 这种形式的东西让我越来越好。

好的 - 所以我有两张桌子: tbl问卷 QuestionairreID 事件ID 哈哈哈哈哈哈

tbl事件 事件ID 约会时间 哈哈哈哈哈哈

现在,我正在编辑 frmQuestionairre(Questionairre 表格)。 Questionairre Table (tblQuestionairre) 中的所有信息都在这里。 问题是,我需要在此表单的某处添加 DateTime 字段,以便客户可以看到输入问题的时间。 如您所见,我的链接项是 EventID。

尽我所能,我不能只使用“表达式生成器”从事件表中“添加”日期时间。我需要为当前加载的 Questionairre 加载正确的 DateTime。每个 Questionairre 都与一个 Event 相关联。

如何将此字段添加到 Questionairre 表单?我不断收到#Name?错误,这显然是因为它不知道链接EventID上的两个表.. 想法?

编辑: 是的,这是一个简单的一对一关系。 是的,该字段需要是可编辑的。

答案:=DLookUp("[DateEntered]","tblEvent","EventID=" & Forms!frmQuestionnaire!EventID)

编辑:现在我已经显示了,我不能编辑它!?

【问题讨论】:

如果您希望它可编辑,我建议使用我提到的子表单方法。父表单和子表单的数据都可以编辑(如果您设置只读属性,则不能编辑)。或者,您可以创建一个执行连接的查询(视图):只要所有主键都在那里,您就可以保存。 此外,Dlookup 的答案是可行的,但不正确。查看一些建议更改基础记录源的答案。它们将是可编辑的并显示数据。 tblQuestionairre 和 tblEvent 之间是否存在 1:1 的关系?如果是这样,更改表单的记录源以连接两个表的答案是正确的。如果是 1:N,那么你需要一个子表单来显示来自 tblEvent 的数据。 【参考方案1】:

如果我正确阅读了问题,您在 tblQuestionairre 和 tblEvent 之间的 EventID 上有 1-1 关系吗?

如果是这样,只需打开表单的属性表并编辑“数据”选项卡上的“记录源”属性,使其基于连接两个表的查询,而不仅仅是 tblQuestionairre。您甚至可以使用属性表中的构建器来构建查询。

设置完成后,您应该能够在表单上拖放一个新文本框并将其控制源(再次在属性表的数据选项卡上)设置为“日期时间”字段。

【讨论】:

【参考方案2】:

最快的方法是在表单的 OnCurrent 事件中使用 DLookup 函数。 OnCurrent 在加载新记录并且 DLookup 执行返回一个值的简单数据库查找时触发。

【讨论】:

是的,控件确实需要编辑... OnCurrent 事件有什么作用? 它在新记录加载到表单时触发 - 当表单可以滚动记录时很有用。如果表单实际上是一个对话框,只打开显示一条记录,那么 OnLoad 就可以了。如果需要编辑数据,您需要将其显式保存回数据库(ExecSQL) 这不是最快的方法,而且是不必要的黑客攻击。【参考方案3】:

您需要更改表单的 RecordSource,以便它链接到连接两个表而不是一个表的查询。

在您的情况下,编辑 RecordSource 属性并使用设计器创建查询或单击 SQL 按钮输入如下内容:

SELECT tblQuestionaire.QuestionaireID, 
       tblQuestionaire.EventID,
       tblQuestionaire.blahblah,
       tblEvent.DateTime,
       tblEvent.blahblahblah
FROM tblQuestionaire 
INNER JOIN tblEvent 
      ON tblQuestionaire.EventID=tblEvent.EnventID;

这假定您在表之间具有严格的 1 对 1 关系,否则,如果是 1 对 [0,1] 关系,则使用 LEFT JOIN

【讨论】:

以上是关于Access 2003 - 表单上另一个数据库中的字段的主要内容,如果未能解决你的问题,请参考以下文章

在access 2003中根据另一个字段将数据放入一个表单字段

ms-access 2003:表单打不开!帮助!

MS Access 2003 - 有没有办法以编程方式定义图表的数据?

Access 中的简单导入表单

MS Access 2003 - Access 表单上的嵌入式 Excel 电子表格

MS Access 2003 - Unbound Form 使用 INSERT 语句保存到表中;子表单呢?