目前,我正在尝试将数据库从 Access 后端迁移到 SQL 后端,同时仍保留 Access 表单作为前端。这是通过带有 ODBC 连接到我的后端的链接表来完成的。该表单旨在向表中添加新记录。问题出在自动编号上。 ID 设置为自动编号,并且在等待用户添加剩余列时,表单将简单地显示(新建)。我已经使用 IDENTITY 属性设置了 SQL 数据,因此一旦创建新记录,它就会递增。但是,我无法让表单以与以前相同的方式运行,因为即使后端会自动添加下一个连续 ID,我也无法在用户实际保存表单数据之前自动将该数据填充到表单中。有没有办法维护自动编号提供的表单功能?
TL;DR:自动编号更改为数字后,表单无法正常工作。
嗯,在“罕见”的情况下,您在保存记录之前实际上需要自动编号器。例如,如果您有一个子表单,则 Access 始终会自动保存主记录,因此自动编号将会被创建。因此主表单和子表单(子表)将正常工作,并且无需代码即可完成此操作。
现在,在某些情况下您需要自动编号。假设您有一些“代码”需要运行并吐出一些子记录。
一般方法是简单地在该时间点执行记录保存。
那么,假设有一个按钮,或者您需要在表单中运行一些代码,并且您需要 PK 自动编号?
您可以使用此代码:
If isnull(me!ID) = true then
me.dirty = false ' force record save - autonumber now created
end if
上述工作的记录必须是“脏”的,但在几乎所有情况下,情况往往都是如此。 “罕见”的例外情况建议您可以检查 me.IsNewRecord,但在大多数情况下,上述代码就足够了。
我真的无法想象当用户开始输入数据时某些自动编号的“显示”是如此重要。
但是,如果您希望在任何按键(表单上的数据输入)后显示自动编号?
只需将这行代码放在 after insert 事件中:
me.dirty = false
因此,现在在查看表单时,用户在任何文本框中按下第一个键将强制生成并显示自动编号。然而,将自动编号 ID 的任何含义分配给最终用户是非常糟糕的做法。事实上,在大多数情况下,该 ID 应该被隐藏。
当然,上述唯一的问题或缺点是,如果您有任何必需的列,则上述内容可能会出错或出现问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)