メインコンテンツへスキップ

DB Error「~NULLを挿入できません。この列ではNULL値が許可されていません。INSERTは失敗します。」

コメント

11件のコメント

  • y-yoshi

    こんにちは。

    たぶん、データベース側でNULL値許可が無いカラムにNULLを入れようとしているのではないかと思います。

    私はNULLの扱いが面倒なので、NULLは極力許可しないのですが、

    データベース側でNULLを入れられるように設定するか、Magic側でデータベースデフォルト値を設定してやればいいかと思います。

    ①NULL許可する場合

     テーブルリポジトリで、該当テーブルのカラム特性を開き、NULL値許可をYesにする

    ②NULL許可しない場合

     テーブルリポジトリで、該当テーブルのカラム特性を開き、NULL値許可をNoにして

     データベースデフォルト値に型に従ってデフォルト値を設定する。

     

    上記でいかがでしょうか。

     

  • mari

    「NULL 値可」というところでしょうか。

    Yesにしてみましたが、同じエラーが出てしまいました。

    他のプログラムでは、この特性項目がNoでもエラーは出ません。

    どのような違いがあるのでしょうか…?

  • y-yoshi

    こんにちは。

     

    データベース側の設定はどうなっているでしょうか?

    データベースを削除してよいならば、Magic側でテーブルを再作成してみるのもいいかもしれません。

  • mari

    SQL Serverの、「NULLを許容」欄にチェックが入っています。

    試しに、Magic側で新しくテーブルを作成してみたところ、エラーは出ませんでした。

    作り方が悪かったんでしょうか…

  • こんにちは

    >作り方が悪かったんでしょうか…

    ------------------------------------------------------------

    Magic側のデータベース特性で、「テーブル存在チェック」が外れていたのでしたら、

    「開発モードでのテーブル変換」のチェックも外れているのでは?

     

    HAYATO@アインシュタイン設計社

  • mari

    確認しましたところ、チェックは入っています。

    同じデータベースを使用した、他プログラムでは現象が起きないのも不思議ですが、

    今回は、新しいテーブルで作成を進めていこうと思います。

     

    y-yoshiさん、遠藤勇人さん

    先日から、毎度ご助言いただきましてありがとうございます。

    Magic勉強中の身ですので、またご教示いただけますと幸いです。

    何卒よろしくお願いいたします。

  • mari

    やはり、理解が追い付かず、申し訳ございません。

    得意先名を入力した状態でも、エラーが出てしまいます。

    Magicのカラム特性「NULL値許可」をYesにすると、回避できました。

    未入力でも登録できるようにしたい項目は、すべてYesにするのが基本でしょうか?

    恐れ入りますが、もう一度、ご教示いただけますと幸いです。

  • y-yoshi

    こんにちは。

    メンテのロジックがどのように作られているのかにもよりますので私の想像になってしまいますが、

    得意先名が入力されているのに列にNULLのエラーが出るということは

    1.まず空のデータをテーブルに登録

    2.入力された項目で1のデータを修正

    の様な流れになっていると考えられます。

    得意先マスタを、得意先メンテPGのメインソースで宣言し、

    初期モードは登録、フォームに得意先メンテのカラムを配置する

    という作り方で、このエラーが出ているということですか?

  • mari

    得意先メンテPGは、データリポジトリからAPGを使用して作りました。

    初期モードは修正に変更するのを忘れていて、登録モードだったと思います。

    作りたてなので、ロジックにはまだ何も行がありません。

    空のデータがテーブルに登録されないようにするには、ロジックで処理が必要になるんでしょうか?

  • y-yoshi

    mari様

    APGで作成しているならば、通常問題ないはずですね。

    Magicの内部的な話にはなりますが、データビューにカラムが定義されていれば

    特に項目を配置していない状態でデータ登録したとしても、Magic側で設定した初期値がデータに入るようになっていたと思います。(たぶん)

    逆にデータビューにカラムを宣言していない状態でデータ登録をすると、データベースで設定された初期値が入ります(初期値が無い場合はNULL)。

    APGで作成されているのならば、得意先マスタの全カラムがデータビューに宣言されているはずですよね…。

    うーん、なんででしょう・・・。

  • mari

    y-yoshi様

    ご回答ありがとうございます。

    そうですね、全カラムがデータビューにあります…。

    私の操作ミスかもしれないので、改めようと思います。

    また何か、考えられることがあれば、ぜひご教示お願いいたします。

サインインしてコメントを残してください。