AccessのコンボボックスでNULLを入れたくない方法

このQ&Aのポイント
  • Accessのテーブルで、NULLの代わりに0を入れる方法について教えてください。
  • コンボボックスで選択した後、削除するとテーブルにNULLが入ってしまいます。コンボボックスを削除した場合に既定値の0を入れる方法を教えてください。
  • 値を選択しない場合は既定値の0が入るように設定していますが、コンボボックスを削除するとNULLが入ってしまいます。NULLの代わりに0を入れる方法を教えてください。
回答を見る
  • ベストアンサー

AccessのコンポボックスでNULLを入れたくない

AccessのコンポボックスでNULLを入れたくない Accessのテーブルで、NULLの代わりに0を入れたいのですが、どうすればいいのでしょうか? テーブルの既定値は0です。 そのテーブルには、フォームのコンボボックスから値を入れます。 そのコンボボックスの選択は必修ではありません。 そのため、選択しない場合は、既定値の0が入ります。 また、選択した場合は、数字が入ります。 問題は、コンボボックスで選択して、やめた場合です。 まず、コンボボックスで選びます。 でも、きが変わり、デリート(削除)でコンボボックスを空欄にします。 そして、更新した場合、テーブルにNULLが入ります。 私の希望は、コンボボックスをデリート(削除)した場合、既定値の0を入れたいのですがどうすればいいのでしょうか? 値要求は、メッセージ(ダイアログ?)が出るので、設定しないものとします。(他の人が、そのメッセージが出るたびに、どうすればいいかきいてくるからです。) よろしくお願いします。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.4

VBAになりますが そのコンボボックスの更新後処理に Private Sub コンボボックス名_AfterUpdate()   Me!コンボボックス名 = Nz(Me!コンボボックス名, 0) End Sub とすればNullの場合だけゼロに変換されます。

a-z_A-Z
質問者

お礼

ありがとうございます。 これで、問題が解決しました。 ところで、最初の条件のところで、VBAは除くと入れようと思っていました。 しかし、それは無理だろうと思い、その条件は除外しました。 でも、これをマクロでやる(VBA以外)ってのは無理でしょうか?

その他の回答 (8)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.9

> でも、これをマクロでやる(VBA以外)ってのは無理でしょうか? なぜマクロでやりたいのかは不明ですが 更新後処理のマクロで 値の代入 アイテム [Forms]![フォーム名]![コンボボックス名] 式     Nz([Forms]![フォーム名]![コンボボックス名],0) でできるでしょう。 エラー時にダイアログで簡単な説明を表示しても、読んでくれないのが人によっては"普通"みたいで、開発者が近くにいるから使用者も甘えてしまうのでしょうね。

a-z_A-Z
質問者

お礼

ありがとうございます。 えっ!マクロでも出来るんですか? 私はこの問題にぶつかったとき、VBAでやるしか方法はないと考えていました。 >なぜマクロでやりたいのかは不明ですが このシステムを作るに当っての条件として、だれでもわかると言う条件が付けられました。 その条件で行くと、VBAは却下となります。 しかし、VBAしか方法がないとなれば、例外も認められます。 そのため、マクロでは出来ないと言う確認のため、質問してみました。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.8

参考に。 ほか、マクロの、条件式あり値の代入やリストボックスを見ておくといいのでは?。 マニュアルは作らなくても簡単な手順説明1フォーム画面あるだけでも違います。

a-z_A-Z
質問者

お礼

ありがとうございます。 >簡単な手順説明1フォーム画面あるだけ と、思うのですが、私のところでは、余分な画面があるだけで 「むずかし~、わからん」 「やっぱり、前のシステム(エクセル)の方が簡単や~」 となります。 そのため、不必要に文字を大きくしたりして、なるべく拒否反応が起らないようにする必要があります。 まるで幼稚園児に物を教えるような配慮が必要になります。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.7

すみません。 3の回答は無視して下さい。 何も選択したくないときのために、「該当なし」の選択肢はどうだろうと考えていたことなので。

a-z_A-Z
質問者

お礼

ありがとうございます。 >3の回答は無視して下さい。 よくわからなかったので、また質問するところでした。 >「該当なし」の選択肢 これも考えました。 しかし、増設増設で作ったうえに、時間が経ったため、構造がわかりません。 そのため、該当なしを追加するのが怖くてやめました。

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.6

さらに追伸 (^^ゞ いくら頑張ってすばらしい操作マニュアルを作成しても 勉強会のような形で半ば強制的に覚えてもらわないと ほとんどの場合は『そこに置いといて後で見るから』で終わってしまい勝ち。 フォームのプロパティのその他タブにヒントテキストてのがありますので 簡単な説明はここに入れてあげましょう。

a-z_A-Z
質問者

お礼

さらに追記(T-T) >『そこに置いといて後で見るから』 そんな前向きな答えさえ期待できません。 上を見ればきりがありません。 そして、下を見てもきりがありません。 世の中には、創造を超えるところもあるようです。

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.5

追伸 まったく見ず知らずの第三者に使ってもらうのではなく 社内で使用する場合には、ある程度運用面で対応して行ったほうが良いかと 思います。 >他の人が、そのメッセージが出るたびに、どうすればいいかきいてくるからです。 社内使用の場合なら、そのアプリケーションの操作マニュアルを作り また、コンボボックスはプルダウンした中から選ばんとイカン等々の 教育も必要かと。 作りこむのも大切ですがね。 正直『よくやってくれるよ』と言いたくなることもあり。 ↑これは使用者への愚痴です。

a-z_A-Z
質問者

お礼

ありがとうございます。 >コンボボックスはプルダウンした中から選ばんとイカン等々の 教育も必要かと。 私も、初めのころは、同じ考えでした。 しかし、今は、無理なものは無理と悟りました。 教育するどころか、私が教育された気分です。 あきらめることも肝心。 私が、この会社で唯一覚えたことかも知れません。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

コンボボックスでしたね。前の伝えたやり方でなく、更新したい値0をコンボボックスの見せない列に追加したらそう手間かからないし簡単です。 既にあるものは更新クエリで良いです。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

>そのテーブルには、フォームのコンボボックスから値を入れます。 (ユーザにテーブルに0がセットされたかどうかその瞬間で解らせる必要がなければ) フォームのコンボボックスを非連結項目にしておいて、 テーブルへは フォームのコンボボックスの更新後結果を元に更新する。 一通りの入力が終わったときに、 0にしたいデータがどれか、判断できれば更新クエリで一括更新も可能かと 思います。

a-z_A-Z
質問者

お礼

ありがとうございます。 今回、テーブルをチェックして、NULLが入ることがわかりました。 だから、今までのデータは、更新クエリで修正するつもりです。 しかし、私は忘れっぽい。 ACCESSなんて、たまにしか触らない為、簡単なことでさえ忘れてしまいます。 今回も、久しぶりのため、入門書片手に質問しています。 そのため、できるだけ手間はかけないようにしたいと考えています。 入力時点で、0が入る処理はないでしょうか? 更新クエリでさえ、覚えておく自信がありません。(情けないですが・・・)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

コンボボックスの更新後処理でコンボボックスの値がNULLなら0を入力するようにしておけばいかがですか。

a-z_A-Z
質問者

お礼

ありがとうございます。 >更新後処理でコンボボックスの値がNULLなら0を入力するようにしておけば まさに、これがやりたいのですが、やり方がわかりません。 具体的には、どのようにすればいいのでしょうか。

関連するQ&A

  • ACCESS2013 コンボボックスの警告について

    (1)コンボボックスに一度値を入力及び選択をして確定する。 (2)再度(1)のコンボボックスの内容を削除して空欄の状態に戻す。 (3)他のフィールド等にカーソル等を移すと、(2)のコンボボックスに対して警告メッセージが出でしまう。 'xxxxトランザクション.xxxxカラム'フィールドに値を入力してください。 上記(3)の警告メッセージが出ないようにしたいのですが どのように対応すればよろしいでしょうか? ※フォームはxxxxトランザクションがデータソース(ダイナセット)になっています。 ※コンボボックスはxxxxマスタテーブルが値集合(テーブル/クエリ)となっています。

  • アクセス テキストボックスが全てNULLの処理

    お世話になっております。 アクセスのフォームで コンボボックスをいくつか設けていて その指定で処理を分岐させていますが、 全てがNULL(未選択)の場合 エラーメッセージを表示させたいです。 1つであれば If IsNull(Me.cmb_選択肢1) Then MsgBox "全てが選択されていません。" で設定できるかと思いますが、 テキストボックスが複数あり、 それらが全てNULL場合 どうすれば実装可能になりますでしょうか。 初心者につき 初歩的なことが理解できておらず申し訳ございませんが、 ご教示ください! よろしくお願い致します。

  • ACCESS コンボボックスについて

    ACCESSのフォームで、コンボボックスによる入力をするところがあるのですが、ここで、前回選択(または入力)した値を次に入力するときの既定値にすることは可能でしょうか。可能でしたら、その方法を教授ください。

  • ACCESSコンポボックス

    ACCESS97のコンポボックスの質問です。 2つのコンポボックスがあります。1つ目のコンポボックスを選択し、1つ目のコンポボックスの条件で2つ目のコンポボックスのリストを変更したいです。1回目はうまく行きますが2回目からは一つ目のコンポボックスを変更しても2つ目のコンポボックスのリストが変わりません。よろしくお願いします。

  • ACCESSのコンボボックスについて

    ACCESSでコンボボックスを使っているときに たまに入力できなくなってしまう時があり困っています。 例えばA,B,Cという3つのデータを選択できるコンボボックスがあり、 現在、Aが選択されていてBに変更しようとした時に コンボボックスの表示部分が突然空欄(または選択されているのに表示されていない)になってしまいます。 その後、どれを選択してもコンボボックスには何も表示されなくなってしまいます。 この現象が起こるとなぜか同じフォーム内のボタンなどにも不都合が起こるようになってしまいます。 (テキストボックスのデータを削除するボタンがあるのですがおしてもなにも起こらなくなってしまいました) いろいろ試しているのですが全く原因がわかりません。 どのようなところに原因がありそうかなどあれば教えてください。 宜しくお願いします。

  • Access コンボボックスの複数選択

    Access2007を勉強中の初心者です。 「空白のフォーム」から作成したコンボボックスで、複数選択が可能になるような設定はありませんか? テーブル項目の「ルックアップ」「複数の値を許可」を許したテーブルから作成したフォームでは、コンボボックスで複数の値を選択可能になりますが、「空白のフォーム」から作成した場合にはできないのでしょうか。 リストボックスではスペースをとってしまう為、コンボボックスで行いたいです。 言葉足らずな内容かもしれませんし、大変お手数をおかけしますが、よろしくお願いいたします。

  • ACCESSでコンボボックスで入力しないとき

    ACCESS2000を使用しています。 コンボボックスを使用しているのですが、コンボボックスの中から選択して入力したのか、ダイレクトに入力したのかを区別するということは出来るのでしょうか。 コンボボックスとして作成した項目のところに、コンボボックスから連続して複数の値を取得する ということをしています。 つまり、コンボボックスの中に    1111    222    333333 とあるとすると  2221111 という項目にしたいというときです。 上記の質問は 間違って 作成したとき 2221111 を 後ろの1111を削除して 222に戻したい としたいときのことです。  よろしくお願いいたします。     

  • アクセスのコンボボックスウィザードについて。

    アクセスのコンボボックスウィザードで、 進んでいきますと、 最後から3番目の画面で、 『コンボボックスで行を選択すると、 その行の値をデーターベースに保存したり、 値をあとで使うことができます。 一意に行を特定できるフィールドを選択してください。 データベースに保存または使用する値は、 コンボボックスでどの列に含まれていますか?』 と出てくるのですが、 これのメッセージの意味が分かりません。 主キーになっているものを選ぶ必要がある、と 聞いたことがあるのですが、 どういうことなのでしょうか? 主キーじゃないものを選ぶとどうなるのでしょうか? どのフィールドを選択しても、 画面上では何も変わらないのでさっぱり意味が分かりません。 初心者です。 どうか宜しくお願い致します。

  • accessのコンボボックスのことで質問です。

    accessを勉強しているのですが、ちょっとしたことで分からなくなってしまいました・・。 質問の内容なのですが、まずフォーム上にコンボボックスAとコンボボックスBを配置するとします。 レコードソースには仮に[情報テーブル]というテーブルが選択されているとします。 コンボボックスAには[情報テーブル]のフィールド名が、 例えば[顧客NO]、[商品]、[値段]というフィールド名が入っているとし、フィールドにはそれぞれ10件ずつデータが入力されています。 そしてコンボボックスAで[顧客NO]を選択するとコンボボックスBに[顧客NO]の10件のデータが挿入され、選択できるようにしたいのです。 他のフィールド名を選んだときにも同じようにコンボボックスBにフィールドのデータが入るようにしたいと思っています。 コンボボックスAにテーブル名を入れることはできたのですが、 コンボボックスAで選択されたフィールドのデータを、コンボボックスBで選択できるようにするというやり方がわからないのです・・。 accessは2002を使っています。 よろしくお願いします。

  • Microsoft Access2003:コンボボックス

    Microsoft Access2003:コンボボックス Microsoft Access2003:コンボボックスで表示される値をテーブルからの値の他に、1件目を"全て"と表示させたいのですがうまくいきません。 コンボボックスの値集合ソースに select kaisya, cd from table1 order by cd UNION SELECT "全て",0 FROM table1; としているのですが、この「全て」が最初に表示されません。 cd は実際のテーブルは1001番からです。

専門家に質問してみよう