首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用SQL后端时在窗体中维护AutoNumber功能

在使用SQL后端时在窗体中维护AutoNumber功能
EN

Stack Overflow用户
提问于 2019-12-13 16:24:21
回答 2查看 104关注 0票数 0

目前,我正试图从Access后端转移到数据库的SQL后端,同时仍然将Access表单作为前端。这是通过具有ODBC连接到后端的链接表来完成的。该表单旨在向表中添加新记录。问题在于AutoNumber。ID被设置为AutoNumber,表单将在等待用户添加其余列时简单地显示(新建)。我已经用IDENTITY属性设置了SQL数据,因此一旦创建了新记录,它就会增加。但是,我不能让表单像它那样运行,因为即使后端将自动添加下一个顺序ID,我也不能在用户实际保存表单数据之前自动将该数据填充到表单中。有办法维护AutoNumber提供的表单功能吗?

TL;DR:在AutoNumber更改为Number后,表单无法正常工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-14 01:00:13

嗯,在保存记录之前,有一些“罕见”的情况,您实际上需要使用autonumberr。例如,如果您有一个子表单,那么Access总是自动保存主记录,因此自动编号是并将被创建为.So一个主窗体,子表单(子表)将很好地工作,并且不需要代码。

现在,有些情况下您需要自动编号。假设你有一些“代码”,需要运行和吐出一些子记录。

一般的方法是在那个时候简单地执行记录保存。

那么,假设有一个按钮,或者一些您需要在表单中运行的代码,那么您需要PK自动编号吗?

您可以使用以下代码:

代码语言:javascript
复制
If isnull(me!ID) = true then
   me.dirty = false  ' force record save - autonumber now created
end if

上面的工作记录必须是“肮脏的”,但在几乎所有的情况下,情况都是如此。“罕见”的异常表明您可以检查me.IsNewRecord,但在大多数情况下,上面的代码就足够了。

我无法想象,当用户开始输入数据时,自动编号的“显示”是如此重要。

但是,如果您希望自动编号出现在任何按键(表单上的数据输入)之后?

只需将这一行代码放在“后插入”事件中:

代码语言:javascript
复制
me.dirty = false

因此,现在查看表单时,用户在任何文本框中按下的第一个键将强制生成并显示自动编号。但是,将自动编号ID的任何含义分配给最终用户是一种非常糟糕的做法。事实上,在大多数情况下,ID应该是隐藏的。

当然,上面唯一的问题或缺点是,如果您有任何必需的列,那么上面的内容可能会出错或出现问题。

票数 2
EN

Stack Overflow用户

发布于 2019-12-13 23:00:21

溶液

对于这个问题,我需要在SQL后端将我的identity_insert设置为ON。下面是这样做的代码:

代码语言:javascript
复制
SET IDENTITY_INSERT tableName ON;

此外,如果得到错误:Table <Table Name> does not have the identity property.使用具有标识的自动递增列重新创建表。

示例:

代码语言:javascript
复制
CREATE TABLE new_employees  (id_num int IDENTITY(1,1), fname varchar (20), minit char(1),  lname varchar(30));

更多关于Microsoft官方文档中身份的信息:这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59326367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档