Access & SQL 链接表默认值

Posted

技术标签:

【中文标题】Access & SQL 链接表默认值【英文标题】:Access & SQL linked table Default Value 【发布时间】:2017-11-01 10:04:44 【问题描述】:

问题:如何在 SQL/Access 链接表中显式获取 SHOW 的默认值?

场景:

您在访问表中。其中一个字段标记为“收藏 方法'。 该字段是一个列表框,有 2 个值可供选择 - 欠款或 前进 在属性字段中,默认值为 Advance 在数据表视图中,默认值明确显示 Advance for 该字段而不是空白单元格。

将 Access 表链接到 SQL 时,无法设置默认值 - Access 在属性窗口中显示一条消息 - “无法在链接表中修改属性”。

如果我在 SQL 中设置默认值,当最终用户为该行插入记录时,它不会显式显示该值。他们要么必须单击列表框并选择值,要么将字段留空并转到下一条记录,然后 SQL 约束将启动并显示上一条记录的默认值。

有没有办法显式显示默认值?

亲切的问候 D

【问题讨论】:

【参考方案1】:

不,除非您采用一些“kluge”解决方法,否则不会。

Access 不会看到也不会设置服务器内容,例如 PK(身份)字段。在本地表中,当您开始键入时,您可以看到默认值,并且还可以看到 PK 键(并且在提交记录之前看到)。

如果您使用链接表和服务器端默认值,或者说自动编号 PK(SQL 服务器中的 PK + 标识列),那么在您保存记录之前,该值不可用。

您当然可以通过使用访问表单来解决这个问题,因为直接在 Access 中编辑表格是个坏主意。但是,这意味着您在 Access 表单控件中设置控件默认值,而不是在表格中。

最后但同样重要的是,如果这是一个表单,那么您可以关闭允许添加到表单,并在表单上放置一个名为“添加新”的按钮。代码将添加记录,然后将表单设置为该新记录——这将显示默认值。 (但如果用户当时退出表单而没有做任何事情或想要添加记录,则会导致创建记录)。因此,这可能会导致您的应用程序中出现大量“额外”的空白记录。

因此,在您提交(保存)有问题的记录之前,默认服务器端和 PK/身份值的默认值不会显示也不会设置。

在数据输入期间,您还可以按 F9 刷新当前记录(这仅在记录脏的情况下才有效 - 所以 f9 仅在您已经在行中输入“一些”数据时才有效。注意 ctrl- s 保存当前记录也可以(并且仅在相关行变脏后再次使用)。

所以用户可以按 ctrl-s,但实际上为了减少折磨,你最好使用一个表格 - 甚至是一个看起来像表格的数据表来处理这个问题。

【讨论】:

它不适用于表单(目前无论如何)。非常感谢您提供的丰富而有用的解释。由于除非您提交记录,否则值不会显示,我们选择在 SQL 中将字段设置为 NOT NULL,从而强制用户从链接表中的空白字段中进行选择,该字段具有默认值在提交记录之前显示在本地表中。

以上是关于Access & SQL 链接表默认值的主要内容,如果未能解决你的问题,请参考以下文章

ACCEss表中要设置默认值:DATE()结果是例:2011-8-29,我想要带时间的,例2011-8-29 5:45:12

怎么把数据库中的某个表的某个字段默认值设为0?

Access使用链接表写入冲突问题

从第一个表值 Access 中设置表单的组合框默认值

用默认值替换 UPDATE SQL vs Drop & Add COLUMN?

C# & MS Access - SQL 用于在应用程序开始时创建表、列和添加值