我正在尝试创建验证规则,但在 Access 中使用 SQL。我对此很陌生。我知道如何在常规 Access 设计 View 中执行此操作,但不知道如何在使用创建表命令时执行此操作。到目前为止,我有,
CREATE TABLE CUSTOMERS
(
CustomerName TEXT (20),
Gender TEXT (10),
FavoriteFood TEXT (20)
);
想为男性/女性/未知的性别添加验证规则。
最佳答案
字段的验证规则是 DAO.TableDef
属性,无法使用 Access SQL 创建。
如果您想将 Access SQL 用于类似的事情,请使用 CHECK CONSTRAINT
。此语句会将 Gender
值限制为男性、女性或未知。
CREATE TABLE CUSTOMERS
(
CustomerName TEXT (20),
Gender TEXT (10) NOT NULL,
FavoriteFood TEXT (20),
CONSTRAINT allowed_genders CHECK
(
Gender IN ('male','female','unknown')
)
);
注意 CHECK CONSTRAINT
只能在从 ADO 执行时用在 Access SQL 中。我使用 CurrentProject.Connection.Execute
执行了该语句,这是一个 ADO 方法。
这种方法的一些后果可能会让你无法接受......
- 约束在表设计 View 中不可见。
- 当违反约束条件时,错误消息不会出现,直到您尝试保存记录。
- 并且错误消息基于约束名称...在这种情况下这对用户来说不是很友好。
- 由于限制,您无法从 Access UI 中删除该表;您必须先执行
DROP CONSTRAINT allowed_genders
然后删除表,或者执行DROP TABLE CUSTOMERS
这将同时丢弃表和约束。
您可能更愿意创建一个更简单的表版本,然后使用 DAO 设置验证规则。
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Set db = CurrentDb
Set tdf = db.TableDefs("CUSTOMERS")
tdf.Fields("Gender").ValidationRule = "IN ('male','female','unknown')"
tdf.Fields("Gender").ValidationText = "Gender must be male, female, or unknown"
注意事项:
- DAO 方法还允许您包含用户友好的验证文本消息。
- 如果违反验证规则,Access 将在您尝试移至下一个字段时立即显示错误消息。
最后,另一种方法是创建一个查找表,其中包含您允许的 Gender
值,使 CUSTOMERS.Gender
成为该查找字段的外键,并强制执行引用诚信。
这 3 种方法中的任何一种都可能适合您的情况;选择最适合的那个。 :-)
关于sql - sql和access中的验证规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22467737/