如何修复此 Access 2003 错误?数据输入自动生成值
Posted
技术标签:
【中文标题】如何修复此 Access 2003 错误?数据输入自动生成值【英文标题】:How can I fix this Access 2003 bug? Data Entry Auto-Generating a Value 【发布时间】:2011-12-21 18:26:51 【问题描述】:我在 MS Access 中遇到了一个奇怪的数据输入错误,我希望有人可以帮助解释为什么会发生这种情况以及如何解决它。
我有一个在我们的 SQL Server 数据库中定义的数据表。定义如下,仅更改了字段名称。
CREATE TABLE [dbo].[MyTable](
[ID] [int] IDENTITY(1,1) NOT NULL,
[TextField1] [nvarchar](10) NOT NULL,
[TextField2] [nvarchar](50) NOT NULL,
[Integer1] [int] NOT NULL CONSTRAINT [DF_MyTable_Integer1] DEFAULT (0),
[Integer2] [int] NOT NULL,
[LargerTextField] [nvarchar](300) NULL
) ON [PRIMARY]
从这个表的定义可以看出,它并没有什么特别之处。我遇到的问题是 MS Access 2003 数据库中的链接数据表通过 ODBC 链接到该表。
在 SQL Server 中定义和创建数据表后,我打开了正在工作的 Access 数据库并链接到新表。我需要手动创建属于该表的记录。然而,当我开始添加数据行时,我注意到当我从LargerTextField
切换到新行时,LargerTextField
被默认为'2
',即使我没有输入任何内容也没有输入在字段上定义了默认值?!
最初,我需要此字段为Null
。我稍后会回来并使用更新例程填充数据。但是为什么 MS Access 会在我的字段中默认一个值,即使表的架构显然没有定义一个值?有没有人看到这个或知道为什么会发生这种情况?
编辑
快速更正,一旦我进入LargerTextField
,值默认为'2
',而不是当我退出时。细微的差别,但可能很重要。
作为测试,我还创建了一个新的、全新的 MS 数据库并链接了表。我有完全相同的问题。我认为这可能是 MS SQL Server 或可能是 ODBC 的问题。
【问题讨论】:
总是2吗? 2 来自其他地方吗? 我无法重现 Access 2010 和 SQL Express 2005/SP4 中的错误。希望有人会支持正确的访问版本。 @webturner-- 奇怪的是,我有很多表,我经常通过 ODBC 和访问来维护这些表。其中一些具有非常相似的模式,但我从未见过这种行为。我只能将这种行为称为“怪异”。我想不出这种行为有意义的任何上下文,除非我在该字段上有一个默认值。 【参考方案1】:哇,问题解决了。这不是错误,但肯定不是我想要或预期的行为。
由于我在字段Integer1
和Integer2
中手动输入的数据,会出现这种情况。我手动输入0
作为Integer1
的值,并将1
输入Integer2
。我从未见过 Access 自动假定我的数据输入,但它看起来像是在识别按顺序输入的数据。
作为测试,我输入了一条记录,其中Integer1
设置为1
,Integer2
设置为2
。果然,当我进入LargerTextField
时,3
的值是自动填充的。
我讨厌这是由于用户无知而造成的问题,但老实说,在我使用 MS Access 的过去 10 多年中,我什至不记得曾经看到过这种行为。我几乎更愿意删除这个问题来挽回面子,但由于它让我措手不及,而且我是一位经验丰富的用户,我不妨将它留在 StackExchange 档案中,以供可能有相同经历的其他人使用。 :/
【讨论】:
我相信 Microsoft Excel 工作簿中也有类似的功能。如果您知道它在那里但没有太大用处,可能对数据输入有帮助。 我认为这也是我困惑的一部分。我也经常使用 Excel,电子表格中的这种行为非常有帮助。我已经在 Excel 中看到并使用了它,但我从未在 Access 中看到它。事实上,如果我没有考虑到 Excel 也有这种行为,我相信我不会注意到这个解决方案。 哇,我当然也没想到会这样。必须有一个设置来控制它。有时这些东西可能“太有用了”【参考方案2】:作为一个实验,启动一个全新的 Access DB 并连接到该表,看看您是否得到相同的行为。我怀疑这个 Access DB 过去曾连接到这样的表并设置了默认值。访问有时会忘记 :)
【讨论】:
我非常怀疑这种情况,但可以肯定的是,我会试一试。我同时管理 SQL Server 数据库,这是我用于数据查询和更新的“帮助”访问数据库。我从来没有用这样的名字创建过一个表,更不用说链接了。不过,感谢您的快速回复。我会告诉你进展如何。 好的,我刚刚创建了一个新的数据库,并链接了表。相同的行为。这可能是 ODBC 或 SQL Server 的一个奇怪错误吗?以上是关于如何修复此 Access 2003 错误?数据输入自动生成值的主要内容,如果未能解决你的问题,请参考以下文章
当我引用其他表时,如何保存在 Access 2003 中的表单中创建的数据?