MS Access 2007表单到表单数据验证(数据类型:日期)

时间:2012-10-14 17:35:30

标签: database ms-access-2007

我认为我有前进的方向,但需要就我想做的最佳方法提供指导:

MS Access 2007数据库

我有2个表,我已经为其创建了2个用户输入表单。

表格1。 网站位置:此表单中的关注领域是: 找到日期站点(使用日期数据类型)

表格2。 网站详细信息:表单中的关注领域是: 工作日期开始(使用日期数据类型)

这个问题是我正在尝试创建一个表单来形成定义以下内容的验证规则:

工作日期开始时间必须>> =找到日期网站。

我尝试了各种验证规则,所有这些规则都不起作用,如:

[工作日期开始]> = [发现日期网站]

  

= [工作地点]![发现日期网站]

我开始工作的一条规则要求两种形式都是公开的,但我不希望这样。

然而,这是解决方案:

willir (MIS) post re: Two form validation using <=Dlookup

或者是在更新前/后事件中编写代码的最佳方法? 或者还有另一种方式吗?

1 个答案:

答案 0 :(得分:1)

最简单的方法是查看表中的值,而不是另一种形式的值。 DLookup()可让您查看另一个表中的值。

在您的情况下,如果您的表名为“站点位置”,则DLookup()本身可能看起来像这样。

DLookup("[Date Site Found]", "[Site Location]", "Your WHERE clause goes here")

通过指定表,列和键来访问SQL数据库中的数据。您的WHERE子句提供密钥。没有办法从你的描述中看出它应该是什么样子,但我会猜测。

'Using a literal number. Only useful for testing.
DLookup("[Date Site Found]", "[Site Location]", "[Site ID] = 32")

'Referring to another control on the same form.
DLookup("[Date Site Found]", "[Site Location]", "[Site ID] = Form![Site ID"])

链接文章显示WHERE子句的几个变体,每个变体返回相同的结果。 类型的WHERE子句不包含单词 where 。这让很多人感到高兴。

使用DLookup

您的事件代码应如下所示。 (我认为这应该在[工作开始日期]控件的BeforeUpdate事件中。)

Dim date_found as Date
date_found = DLookup("[Date Site Found]", "[Site Location]", "[Site ID] = Form![Site ID"])
If ([work date start] >= date_found) Then
    'Good. Do nothing.
Else
    'Bad [work start date]. Throw the user a dialog box, and cancel this event.
    'Left as an exercise for the OP.
End If