使用带有 Azure 链接表的 Access 插入 SQL 失败

Posted

技术标签:

【中文标题】使用带有 Azure 链接表的 Access 插入 SQL 失败【英文标题】:INSERT SQL failing using Access with Azure linked tables 【发布时间】:2016-10-25 12:51:46 【问题描述】:

我已将多个 Azure 表链接到我的 Access 2010 前端。我可以使用 docmd.RunSQL string 方法运行 SELECT 和 UPDATE 查询而不会失败,这就是该数据库中所有代码的编写方式。 INSERT 查询失败,因为没有插入任何内容但没有给出错误。我在网上找到的很少,但一个网站确实提到我需要列出所有字段(不仅仅是那些有值的字段),但这并没有什么区别。

tableName = "userLog"
fields = "userId,machine,timeIn"
values = "'testUser','testMachine',#10/25/2016#"
SQL = "INSERT INTO " & tableName & " (" & fields & ") VALUES (" & values & ")"
DoCmd.RunSQL SQL

编辑----

我尝试将 SQL 字符串直接输入到 SSMS 查询窗口中,但它返回了与日期字段相关的错误。所以我把它从 #10/26/2016# 到 '2016-10-26' 并且该错误已替换为新错误,说明: “无法将值 NULL 插入到列 'ID'、表 'LaborModel.dbo.userLog';列不允许空值。插入失败。” SQL 不会自动将唯一值添加到 ID 字段吗?显然,这是 SQL(我不熟悉)和 Access 操作之间的区别。

【问题讨论】:

我尝试将 SQL 字符串直接输入到 SSMS 查询窗口中,但它返回了与日期字段相关的错误。所以我将它从 #10/26/2016# 更改为 '2016-10-26' 并且该错误被替换为新的错误说明:“无法将值 NULL 插入到列 'ID',表 'LaborModel.dbo.userLog '; 列不允许空值。INSERT 失败。” SQL 不会自动将唯一值添加到 ID 字段吗?显然这是 SQL(我不熟悉)和 Access 操作之间的区别。 “ID”是主键吗?您可以将其设为标识列并让 SQL 为您生成新密钥。 ID 列是整数吗? @DanielG 是的,ID 是一个整数并且是唯一的列。这是我在 Azure 界面中设置的吗? 如果表中还没有数据,可以从 SSMS 执行此操作:Alter Table userLog Drop Column ID GO ALTER TABLE userLog ADD [ID] INT Identity (1,1) 然后将其设为 PK:ALTER TABLE [dbo].[userLog] ADD CONSTRAINT [PK_userLog] PRIMARY KEY CLUSTERED ([ID]) ON [PRIMARY] 【参考方案1】:

如果表中还没有数据,可以从 SSMS 执行此操作:Alter Table userLog Drop Column ID GO ALTER TABLE userLog ADD [ID] INT Identity (1,1) –

然后将其设为 PK:ALTER TABLE [dbo].[userLog] ADD CONSTRAINT [PK_userLog] PRIMARY KEY CLUSTERED ([ID]) ON [PRIMARY]

【讨论】:

查看编辑问题。我尝试从 SSMS 查询数据库。

以上是关于使用带有 Azure 链接表的 Access 插入 SQL 失败的主要内容,如果未能解决你的问题,请参考以下文章

使用 Azure SQL 数据库后端在 MS Access 中添加和编辑表的工作流

Access SQL - 插入带有空字段的记录?

获取最后插入记录的 ID - Access DAO、ODBC、SQL Server 2008 身份字段

Access App中的超链接控制

带有 NSManagedObject 的 EXC_BAD_ACCESS

带有触发器错误的 Microsoft Access 链接表 (ASE)