问题
当我在多项子窗体中插入新记录时,它会抛出一个错误,因为它没有包含父窗体中所需的外键。外键不允许为null,并且它正在尝试插入空值。
更多信息
此过程以前工作正常,但我已将我的后端从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查询将是什么)。
我已经检查了一些其他的父子表格,并且表现得很好。
有什么想法吗?
答案 0 :(得分:0)
我忘了提到的另一个细节 - 我同时做了一些戏剧性的前端重建。使用子表单,我没有正确地将EngagementLetterID_FK与父表单中的EngagementLetterID相关联。结果是新的服务记录没有指定EngagementLetterID_FK。
所以现在我已经纠正了链接,它运行正常。