我在 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 的问题。