|
■No12287 (岩男 さん) に返信
> 似たようなことは他でもやっているのですが、今回のSQLでは結果としてNullを取りえます。
> これを実行すると、ブラウザに、
> 「制約を有効にできませんでした。行に入力できるのは、Null 以外の値、一意な値、
> あるいは外部キーですが、この制約の違反が 1 つ以上の行で発生しています。 」
> というエラーが表示されてしまいます。
※以下の内容は、VS2005、SQL Server 2005 Express Editionでの検証結果になります。
情報が限定的なので、問題切り分けのステップも含めておきます。
そもそもSQL文自体がエラーを出しているのではないかと疑ってみますので、
・使用しているデータベースの定義(テーブル構造と制約条件)
・使用しているデータ
を確認します。もし、ここで、テーブルの制約条件に違反しているデータがあれば、
それが原因だと思われますので、この場合には、制約違反のデータを削除するか、制約条件自体を見直すかになります。
例えば、
CREATE TABLE [dbo].[SampleTable1](
[Column1] [numeric](18, 0) NOT NULL,
[Column2] [nchar](10) NULL
) ON [PRIMARY]
の様なテーブルで、データのColumn1にNullが入っているとか・・・ですね。
テーブル定義、データ共に問題がない場合には、
・テーブルアダプタで設定しているSQL文
・テーブルアダプタがデータをバインドするデータテーブルの制約
を確認します。ここで、
・SQL文を実行した結果にはNullが含まれる
ということですので、先のテーブル定義SampleTable1を例にしますと
データのColumn2がNullを含むものをSQL文では取得するものとしますので
[Column1] [Column2]
1 aaa
2 (null)
3 ccc
こんな感じのデータが返されるとします。
これをバインドするデータテーブルでColumn2のAllowDBNullプロパティがFalse、つまりNullを許可しない、と設定してある場合、
2番目のデータは、制約条件に違反していますので、ご指摘のエラーメッセージが表示されます。
その他にも原因があるかもしれませんが、いずれにしてもエラーメッセージの通り、
何らかの制約条件に合わない箇所があるわけですので、そこをなおされる事が正しい対応となるかと。
|