• ベストアンサー

Access2000、2002でのテーブル作成のプロパティで

テーブルを作成し、たとえば“氏名を入力する際に空白にしてはいけない”という 設定にしたいのですが、  人に聞いたところ、2通りの返事が返って来ました。 プロパティで、値要求をはいとするというのと、入力規則のところにIs Not Nullとするという2つの返事が返って来ました。 この2つにはどういう違いがあるのでしょうか? また、どっちがいいのでしょうか?

noname#9485
noname#9485

質問者が選んだベストアンサー

  • ベストアンサー
  • bobble
  • ベストアンサー率34% (111/323)
回答No.2

こんにちわ。takntさんと同じ事になるんですがちょっと補足・・・ 入力規則にis not null を入れて置く事は、値要求”はい”とその下の空文字列の許可”いいえ”(←これはデフォルトで”いいえ”です)とイコールになります。 この3つの関係は  入力規則  値要求   空文字      null値  空白   なし    はい   いいえ       ×    ×   なし    はい   はい        ×    ○   なし   いいえ   いいえ       ○    ○   なし   いいえ   はい        ○    ○  isnotnull  はい   はい        ×    ○  isnotnull  はい   いいえ       ×    ×  isnotnull  いいえ   いいえ       ×    ×  isnotnull  いいえ   はい       ×    ×     となるはず?です。 つまり入力規則にis not null と設定していても値要求を”はい”にして空文字を”はい”に設定すると空白文字の入力はOKになってしまいます。 値要求を”はい”にすると入力規則よりも空文字・・の設定を優先します。 間違っていたらすいません。

noname#9485
質問者

お礼

回答ありがとうございます。 詳しく書いていただきありがとうございます。 本当に勉強になります。

その他の回答 (2)

  • yoisho
  • ベストアンサー率64% (331/516)
回答No.3

すでにみなさんから回答(値要求、入力規則のどちらでもOK)が出ていますが、さらにもうちょっと詳しく。 「値要求」や「空文字列の許可」プロパティは、単に null値や空文字列を禁止するためのものですが、 「入力規則」プロパティを使うと、その他にもいろいろと入力する値に規制をかけられます。(例えば、“OK太郎”という名前は入れられない とか) その他、「入力規則」なら、ユーザーでエラーメッセージを決められる という利点もあります。 例えば「値要求」で null値に規制をかけておくと、氏名を入力しないでレコードを更新しようとしたときに “フィールドに必要なプロパティが~・・・・” というメッセージが表示されてしまいます。 すると入力者は、「おれ、なんか悪いことした?」と戸惑うことになるかもしれません。 一方、「入力規則」なら、「エラーメッセージ」プロパティに、例えば “氏名は必ず入力してください。” と記述しておけば、「おっと、名前を入れ忘れた。」というように、レコードが更新できない理由をわかってもらえます。 ここで注意すべき点ですが、エラーの判断は、「入力規則」よりも「値要求」や「空文字列の許可」が優先されますので、任意の「エラーメッセージ」を表示させたい場合は、「値要求」を “いいえ” 、「空文字列の許可」を “はい” としておいてください。 ついでに、「入力規則」の記述方法についても補足です。 何も入力されていない場合を規制するなら、 “Is Not Null” (null値でない場合は許可) 空文字列を禁止(わざわざ "" と入力する人はいないかもしれませんが)するなら、 “<>""” (空文字列("")と等しくなければ許可) 氏名の入力ですから、IMEのモードは “かな” になっていると思いますが、全角スペースは文字として認識されてしまいますので、これを規制するなら、 “Not Like " *"” (文字列の始まりが全角スペースでない場合は許可) 上記の全ての条件を合わせる場合は、 “Is Not Null And <>"" And Not Like " *"” と記述することになります。 一応、それぞれのプロパティについては、HELPで確認しておいてください。

noname#9485
質問者

お礼

回答ありがとうございます。 >“フィールドに必要なプロパティが~・・・・” というメッセージが表示されてしまいます。 すると入力者は、「おれ、なんか悪いことした?」と戸惑うことになるかもしれません。 そうですね~何回も”何か悪いことした?”を経験しちゃいました。(^^ゞ

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

どっちでもいいです。 両方とも 空白のみには できない設定になります。

noname#9485
質問者

お礼

回答ありがとうございます。 御礼が遅くなり済みませんでした。

関連するQ&A

  • アクセスの質問です。

    テーブルのテーブルプロパティの入力規則プロパティに ([会社直通TEL] & [会社内線番号]) Is Not Null と入力しました。 & を + に書き換えると、思ったように動きません。 & と + のちがいを教えてください。

  • テーブル作成時のプロパティーの設定方法

    vb からアクセスのテーブル作成時のプロパティーの設定方法を教えてください。 値要求 のプロパティーを Falseにしたいのですが、DAOでは「フィールドの Required プロパティにアクセスするには、DAO の Required プロパティを使います。」だそうですが ADO、ADOX での設定の仕方がわかりません。 知っている方がおられたら教えて下さい。

  • アクセスのテーブル間で同じ値を入力したい

    アクセスでテーブル間で同じ値を入力したいのですが、出来ないのでしょうか? 例 テーブルA 氏名 年齢 住所 テーブルB 氏名 趣味 特技 のようなテーブル間で氏名は同じ値を入力し、その他は違う値を入力したいのです。更にテーブルA又はBのどちらで入力をしても反映されるようにしたいのですが、やり方を教えて下さい。宜しくお願いします。

  • ACCESSクエリで複数テーブルの抽出方法

    #1583217にて質問させていただいたものです。 私の早とちりで質問を締め切りさせていただいたのですが、クエリが要求通りに出てくれません。 再度、質問させて下さい。 現在、ACCESS2000で2つのテーブルの値を表示するクエリを作成中です。 テーブルは外部データよりインポートしています。 Aテーブル KEY1 | KEY2 | 値1 -------------------------- 00000001 | AAAAAAAA | 100 00000001 | BBBBBBBB | 200 00000002 | AAAAAAAA | 1000 Bテーブル KEY1 | KEY2 | 値1 -------------------------- 00000001 | AAAAAAAA | 500 00000002 | BBBBBBBB | 300 これを、 KEY1 | KEY2 | 値1 ---------------------------------------- NULL:00000002 | NULL:BBBBBBBB | NULL:300 と表示したいのです。(Bテーブルにあるデータのみを表示) どなかた教えてください。お願いします。

  • phpmyadminでのテーブル作成

    phpmyadminでテーブルを作成しようとするとエラーが発生します。 <実行されたSQLクエリ> CREATE TABLE `個人情報` ( `氏名` VARCHAR( 30 ) NOT NULL , PRIMARY KEY ( `氏名` ) ) <mysqlのメッセージ> #1 - Can't create/write to file '.\住所録\個人情報.frm' (Errcode: 2) どうやらファイルを作成できないと言われているみたいです。 いろいろ試してみましたがよくわかりません。 初歩の初歩ですいませんがご解答お願いします。

    • ベストアンサー
    • MySQL
  • MySQLでのテーブル作成

    MySQLでこういったテーブルを作成したのですが、 CREATE TABLE NOSGI ( GNRE_CD CHAR(5) NOT NULL, GNRE_NAME VARCHAR(20) NOT NULL, PRIMARY KEY (GNRE_CD) ); GNRE_CDはCHAR型で作成したのに、カラムの情報を見ると、 VARCHAR型にしまうのですが、どうしてでしょうか?

  • アクセスのフィルタ nullについて。

    質問です。 アクセスのテーブルの中で、あるフィールド(フィールド名:管理番号)が空白のものだけ抽出したいのです。フィルターで、管理番号箇所に「Is Null」としたのですが、実際空白になっているデータがうまく抽出されません。 で、「Is Not Null」で抽出するとそれらのデータが抽出されます。 そのデータの認識ではnullになってないようです。 (でも実際空白です。) どうやったらnullで抽出されるでしょうか? ちなみにそのフィールドのデータ型はテキスト型です。

  • Access2007でテーブルのデータ入力で

    Access2007でテーブルのデータ入力で”単価”の項目に教本通りに「18000」と入力したら、 以下のエラーが出ました。 「"T商品マスター,単価"に設定されたいる入力規則'0'に違反する値が1つ以上あります。 このフィールドの式で使用できる値を入力してください。」  以上ですが!  どうしたら、教本通りに「\18,000」と入力ができますか?    よろしくお願いします。

  • ACCESS2010_テーブル作成(超初心者)

    現在以下のようなテーブルを作成しています。 テーブル1:名前、区分 テーブル2:名前、区分、その他データ テーブル2の名前フィールドに名前を入力すると自動的に名前に対応する区分が自動入力されるようにしたいと思っていますが、やり方がよくわかりません。access初心者です。どうかご教授願えないでしょうか?よろしくお願い致します。 尚、名前の入力はテーブル1の名前から選択するようにしました。 表示コントロール:コンボボックス 値集合タイプ:テーブル/クリエ 値集合ソース:SELECT テーブル1.名前 FROM テーブル1 ORDER BY テーブル1.名前;

  • プロパティ作成

    お世話になっております 開発環境:VB2010(Windowsフォーム)、Windows7 動作環境:WindowsXP、Windows7 です プロパティを作っており、フォームのデザイナ時のプロパティで、「マスタメンテ用の画面」か「入力用の画面」かを選べるようにしたいと思っています プロパティを作成したのはいいのですが、選ぶときに「Masta」か「Nyuryoku」の選択肢を選ぶ形(右側に▼が出て選べる)にしたいのですが、方法がわかりません 直接入力で「Masta」と入力したりはできるのですが選択ではありません また、プロパティには「Masta」「Nyuryoku」と表示されますが内部的には"0"、"1"の値で持たせたいです (If (value = "Masta") Then~~でやろうとしたら値にしたほうがいいと言われました) Enum でと思ったのですが、Enumを使うと、「0」と入れると値が「Masta」に代わり、「1」を入れるとNyuryokuという文字に代わっただけで選択肢にはなりませんでした 初歩的な質問かもしれませんがよろしくお願いします