0

問題

複数アイテムのサブフォームに新しいレコードを挿入すると、親フォームから必要な外部キーが含まれていないため、エラーがスローされます。外部キーをnullにすることは許可されておらず、null値を挿入しようとしています。

もう少し情報

このプロセスは以前は正常に機能していましたが、その後、バックエンドをACEからSQLServer2005にアップグレードしました。次のエラーがスローされます。

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レコード用です。1つのELには多くのサービスがあります。

テーブルの設定を確認しましたが、問題はないようですが、テーブルは正常に動作していると思います。null値を許可するべきではありません。また、SQLServerが正しいFKの識別に責任を持つべきではないと思います。フロントエンドがこれを行う必要があります。ただし、以前はACEバックエンドでフロントエンドは正常に機能していました。そのため、原因を特定するのに問題があり、より高度なAccessデバッグを実行する方法を理解できません(たとえば、beforeUpdate、SQL INSERTクエリがどうなるかを教えてください)。

他の親サブフォームのいくつかを確認しましたが、正常に動作しています。

何か案は?

4

1 に答える 1

0

私が言及するのを忘れたもう1つの詳細-私は同時にいくつかの劇的なフロントエンドの再構築を行いました。サブフォームでは、EngagementLetterID_FKを親フォームのEngagementLetterIDに正しくリンクしていませんでした。この結果、新しいサービスレコードにEngagementLetterID_FKが指定されていません。

リンクを修正したので、正常に機能しています。

于 2012-12-04T01:15:09.933 に答える