0

问题

当我在多项目子表单中插入新记录时,它会引发错误,因为它没有包含父表单中所需的外键。外键不允许为空,它试图插入一个空值。

更多信息

这个过程以前运行良好,但我已经将我的后端从 ACE 升级到 SQL Server 2005。它现在抛出这个错误:

Run-time error '3146':
ODBC--call failed.
[Microsoft][ODBC SQL Server Driver][SQL Server]Cannot insert the value NULL into
column 'EngagementLetterID_FK', table 'ClientDatabase.dbo.Services'; column does
not allow nulls. INSERT fails. (#515) [Microsoft][ODBC SQL Server Driver][SQL
Server]The statement has been terminated. (#3621)

作为快速评论,子表单用于服务记录,父表单用于 EngagementLetter 记录。一个 EL 有许多服务。

我检查了表的设置,看起来不错,但我会说表运行正常——它不应该允许空值。我也不认为 SQL Server 应该负责识别正确的 FK - 前端应该这样做。但是,我的前端在使用 ACE 后端之前运行良好。所以我很难找出罪魁祸首是什么,而且我不知道如何进行更高级的 Access 调试(例如 beforeUpdate,告诉我 SQL INSERT 查询将是什么)。

我检查了我的其他一些父子表单,它们表现良好。

有任何想法吗?

4

1 回答 1

0

我忘记提及的另一个细节 - 我同时进行了一些戏剧性的前端重建。对于子表单,我没有正确地将 EngagementLetterID_FK 与父表单中的 EngagementLetterID 关联起来。其结果是新的服务记录没有指定 EngagementLetterID_FK。

所以现在我已经更正了链接,它工作正常。

于 2012-12-04T01:15:09.933 回答