DB Error「~NULLを挿入できません。この列ではNULL値が許可されていません。INSERTは失敗します。」
プログラムリポジトリに作成したプログラムを実行し、
登録モードで終了すると、一部省略していますがタイトルのようなエラーが発生し、実行画面が閉じれません。
Magic初心者ですが、ご教示いただけますと幸いです。
-
こんにちは。
たぶん、データベース側でNULL値許可が無いカラムにNULLを入れようとしているのではないかと思います。
私はNULLの扱いが面倒なので、NULLは極力許可しないのですが、
データベース側でNULLを入れられるように設定するか、Magic側でデータベースデフォルト値を設定してやればいいかと思います。
①NULL許可する場合
テーブルリポジトリで、該当テーブルのカラム特性を開き、NULL値許可をYesにする
②NULL許可しない場合
テーブルリポジトリで、該当テーブルのカラム特性を開き、NULL値許可をNoにして
データベースデフォルト値に型に従ってデフォルト値を設定する。
上記でいかがでしょうか。
-
「NULL 値可」というところでしょうか。
Yesにしてみましたが、同じエラーが出てしまいました。
他のプログラムでは、この特性項目がNoでもエラーは出ません。
どのような違いがあるのでしょうか…?

-
こんにちは。
データベース側の設定はどうなっているでしょうか?
データベースを削除してよいならば、Magic側でテーブルを再作成してみるのもいいかもしれません。
-
SQL Serverの、「NULLを許容」欄にチェックが入っています。
試しに、Magic側で新しくテーブルを作成してみたところ、エラーは出ませんでした。
作り方が悪かったんでしょうか…
-
こんにちは
>作り方が悪かったんでしょうか…
------------------------------------------------------------
Magic側のデータベース特性で、「
テーブル存在チェック」が外れていたのでしたら、 「開発モードでのテーブル変換」のチェックも外れているのでは?

HAYATO@アインシュタイン設計社
-
やはり、理解が追い付かず、申し訳ございません。
得意先名を入力した状態でも、エラーが出てしまいます。
Magicのカラム特性「NULL値許可」をYesにすると、回避できました。
未入力でも登録できるようにしたい項目は、すべてYesにするのが基本でしょうか?
恐れ入りますが、もう一度、ご教示いただけますと幸いです。

-
こんにちは。
メンテのロジックがどのように作られているのかにもよりますので私の想像になってしまいますが、
得意先名が入力されているのに列にNULLのエラーが出るということは
1.まず空のデータをテーブルに登録
2.入力された項目で1のデータを修正
の様な流れになっていると考えられます。
得意先マスタを、得意先メンテPGのメインソースで宣言し、
初期モードは登録、フォームに得意先メンテのカラムを配置する
という作り方で、このエラーが出ているということですか?
-
得意先メンテPGは、データリポジトリからAPGを使用して作りました。
初期モードは修正に変更するのを忘れていて、登録モードだったと思います。
作りたてなので、ロジックにはまだ何も行がありません。
空のデータがテーブルに登録されないようにするには、ロジックで処理が必要になるんでしょうか?
-
mari様
APGで作成しているならば、通常問題ないはずですね。
Magicの内部的な話にはなりますが、データビューにカラムが定義されていれば
特に項目を配置していない状態でデータ登録したとしても、Magic側で設定した初期値がデータに入るようになっていたと思います。(たぶん)
逆にデータビューにカラムを宣言していない状態でデータ登録をすると、データベースで設定された初期値が入ります(初期値が無い場合はNULL)。
APGで作成されているのならば、得意先マスタの全カラムがデータビューに宣言されているはずですよね…。
うーん、なんででしょう・・・。
-
y-yoshi様
ご回答ありがとうございます。
そうですね、全カラムがデータビューにあります…。
私の操作ミスかもしれないので、改めようと思います。
また何か、考えられることがあれば、ぜひご教示お願いいたします。
サインインしてコメントを残してください。
コメント
11件のコメント