字段的验证规则是 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 方法。
这种方法的一些后果可能会让您无法接受...
- 约束在表设计视图中不可见。
- 当违反约束时,在您尝试保存记录之前不会出现错误消息。
- 并且错误消息是基于约束名称...在这种情况下对用户不是很友好。
- 由于约束,您无法从 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 种方法中的任何一种都可能适合您的情况;选择最适合的。 :-)