我在access中有一个表(tblexample),它由id、tripid、day和value字段组成。
此表由窗体编辑。当用户关闭表单时,access应该验证所做的输入。一天中有多条相同日期的记录是可以的。但是…如果同一日期有多条记录,则只有一条记录的值不能为0。我怎样才能查到那个?
我的想法是:创建一个查询,返回所有不满足上述要求的记录。然后让vba检查查询是否为空。如果不为空,则显示错误消息框。这样的查询在sql中是什么样子的?如果查询不返回任何记录,如何签入vba?
也许我的想法太复杂了。有没有更简单的检查方法?
1条答案
按热度按时间y0u0uwnf1#
大多数数据库都有实现这一点的工具——可以使用过滤的唯一索引,也可以使用基于表达式的唯一索引。
ms access不提供此类功能。基本上你有两个选择:
首先是创建触发器——两者都是
update
以及insert
触发器——验证数据的触发器。触发器的优点是它们加强了数据库中数据的正确性。缺点是很难维护。第二种方法是在插入或更新数据时在应用程序级别进行检查。这可能是ms-access中最简单的方法。
基本上,你会检查:
如果返回的值大于
0
,则不要insert
/update
返回一个错误。我会注意到这不是线程安全的。也就是说,两个不同的用户可能会同时插入非零值。我将添加一个编辑评论:如果您担心这样的事情(并发问题非常重要),那么您应该使用比msaccess更复杂的数据库。