【问题标题】:Validate whole row/record in access在访问中验证整行/记录
【发布时间】:2013-07-08 13:08:07
【问题描述】:

我们正在将 Access forms/Access 数据库迁移到 Access forms/SQL 数据库。

我在模仿 access 中发生的验证时遇到问题。

当用户输入新记录并跳过必填字段并尝试保存访问时,它会显示一个消息框,说明某些字段是必需的(验证规则)

但对我来说,问题是同样的场景为我引发了一个关于缺失字段的 SQL 异常......尽管我有一个验证规则。 除非您先移至该字段然后尝试逃离或保存,否则验证规则不起作用。但如果您例如 1) 开始新记录 2) 在第一个字段中输入内容 3) 按向下箭头保存记录,则它不起作用

如何对整行进行验证(无需编写代码)

示例显示在下一个屏幕截图中,显示的最后一列应该有一个值,但是除非您专门转到该字段然后输入错误内容,否则不会强制执行验证。 如您所见,最后 2 条记录已在未经验证的情况下保存。

【问题讨论】:

    标签: sql sql-server validation ms-access


    【解决方案1】:

    您需要了解 Access 和 SQL Server 之间的区别。

    • Access 是单用户集成的数据库/用户界面 - 易于使用,易于由同一个人进行编程。
    • SQL Server 是一个高性能的多用户数据库,仅依赖于其他东西来提供用户界面:Windows 窗体项目、网站或(在您的情况下)访问。它期望它的程序员和它的用户将是不同的人,拥有截然不同的技能,前者需要保护它免受后者的伤害。

    您从 1 层解决方案转变为 3 层解决方案,这些层是用户界面层(访问)-业务逻辑层(访问/SQL Server?)-数据层(SQL Server)。每条信息的每一层都需要进行数据验证。

    我建议您阅读多层应用程序。

    关于您的特定问题 - 如果仅在“cuttings”和“seed”之间进行选择,那么这应该由与新表的外键关系而不是使用文本字段来控制。您的 UI 可以使用它来生成一个组合框选择,以防止无效数据进入,即使发生这种情况,FK 关系也会拒绝它。只需向 FK 表中添加一条记录即可适应业务逻辑的更改(例如,允许“树苗”)。

    【讨论】:

    • 我了解,但在访问权限中设置的验证应该适用于整行,因为它适用于单个字段。我所要求的只是在将记录发送到 sql 数据库之前一一检查记录验证
    • 如果您直接访问表(这是个坏主意),那么验证需要在 SQL Server 中,而不是在 Access 中。
    • 我通过表单访问它。我现在已经使用 VBA 代码完成了它们。像魅力一样工作。
    • 您还应该使用 CHECK 约束在 SQL Server 中实现验证。 ALTER TABLE 表名 ADD column_name CONSTRAINT constraint_name CHECK (coulumn_name = 'cuttings' OR column_name = 'seed')
    • 它已经到位,但访问验证还不够吗?还是说我们是绝对确定的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-28
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多