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

时间:2009-02-04 22:41:20

标签: ms-access forms lambda field

我正在'修复'旧的Access数据库,并且客户端请求将DATE字段添加到表单中。 问题是,我以前从未使用过Access。我是一个SQL人,我建立了自己的UI。 这种形式对我来说越来越好。

好的 - 所以我有两张桌子: tblQuestionairre QuestionairreID 事件ID blah blah blah

tblEvent 事件ID 约会时间 blah blah blah

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

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

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

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

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

编辑:现在我显示了它,我无法编辑它!?

3 个答案:

答案 0 :(得分:0)

如果我正确地阅读了这个问题,那么在tblQuestionairre和tblEvent之间的EventID上有1-1关系?

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

一旦你有了这个集合,你应该能够在表单上删除一个新的文本框,并将它的controlsource(再次在属性表的数据选项卡上)设置为“DateTime”字段。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您需要更改表单的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