• ベストアンサー

アクセスで条件によるコマンドボタンの使い分け。

いつもお世話になります。 アクセス2003で納品管理を作成中ですが、商品のレコードに「不使用」のチェックボックスと「注文入力」のコマンドボタンがあります。この「不使用」のチェックボックスがOnの場合は「注文入力」のコマンドボタンをクリックできないようにしたいと考えています。 フォームの形式は帳票フォームになっていますのでそれぞれのレコードによってコマンドボタンがクリックできるものと、できないものにしたいのですが、可能でしょうか。(できたらそのレコードは色も暗くしたいのですが。。。) どなたかご教授よろしくお願いいたします。

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

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

レコード移動時のイベントやチェックボックスの更新後処理のイベントで チェックボックスの条件によって、該当ボタンのEnabled(使用可・使用不可)や Visible(表示・非表示)を変更してください。 If Me.不使用 = True Then Me.注文入力.Enabled = False Else Me.注文入力.Enabled = True End if みたいな感じです。

ayanohina
質問者

お礼

ありがとうございました。 これでスムーズに使うことができるようになりました。 またこれからもよろしくお願いいたします。

その他の回答 (3)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.4

帳票フォームのレコード毎にボタンがあるタイプでしょうか? ボタンを押せない様にするよりも、不使用のフィールドがTrueならボタンを押してもなにも起きない様にする方が簡単だと思いますが、いかがでしょうか。(VBAを前提にしています。) レコードの色を暗くするのは、条件付き書式で、不使用フィールドの値により色を変えれば可能と思います。 下記URLは文字の色を変えていますが、背景色を変えるのも同様にできます。 http://support.microsoft.com/kb/879811/ja

ayanohina
質問者

お礼

丁寧なご回答ありがとうございました。 また今後も参考にさせていただきますのでよろしくお願いいたします。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

コントロールの (1)イベントと (2)それを働かなく、働くようにする、Enabled=TRUE、FALSEの問題です。 >この「不使用」のチェックボックスがOnの場合は これも広く言って、どういう場面なのか。 (A)今から両方とも入力する場合なのか、(B)テーブルが作られていて、フォrムも作られていて、不使用のフィールドがONの場合は別途判別されて、注文入力を働かなくするのか、か認識と説明が足りない。 (A)の場合で操作者が不使用をONにすると即座に、「注文入力」のコマンドボタンをクリックできないようにするのか(外に優先順位があって不使用チェックボックスが優先されるのかな) チェックボックスやコマンドボタンコントロールは、何時クリックされるとも限らない場合、イベントで捉えざるを得ない。 コントロールのプロパティに「イベント」があり、色々な種類が用意されている。 そしてイベントをとらえた後は、普通はVBAでその後の処理を、書かないといけない。(式ビルダ、マクロビルダ、コードビルだをみよ) こういうのを経験してきたのかな。VBAのわずかでも経験があるのかな。 ないなら勉強してください。上記の概念や仕組みを掴んでいないのに回答をコピペしても仕方がない。 どうもこのコーナーを、家庭教師的に使っているようなので、コードは書かない。

ayanohina
質問者

お礼

勉強不足で大変申し訳ありませんでした。以後気をつけます。

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

追加です そのレコードの編集を不可にしたい場合 Me.AllowEdits = False を入れてください。 ただし、その場合チェックボックスも編集できなくなりますので 編集不可を解除するボタンが必要になります。 常時は非表示にしておいて編集不可にしたときだけ表示させるといいでしょう。

関連するQ&A

  • Accessのコマンドボタンについて

    Access97を使用しています。 Accessのレポート(単票形式)を作成したのですが、画面上のコマンドボタンをクリックしようとしてもカーソルが「虫眼鏡マーク」のままで作動しません。 超初心者なので「フォーム」と「レポート」の区別が今一つ付いていないのですが、「レポート」上ではコマンドボタンは使えないのでしょうか? やりたいことは、 (1) コマンドボタンを押すと、入力用フォームから該当するレコードの単票形式レポートが出力されるよう、設定したい(いちいち該当ページ番号を指定して印刷するのが面倒なので)。 (2) コマンドボタンを押すと、該当するレコードの入力用フォームと単票レポートとの間を行ったり来たり出来るようにしたい(修正・追記が多いので)。 現在は、入力用と出力用の2つの「フォーム」を作成してデータの行き来をしているのですが、レイアウトが違うだけでデータソース自体は全く同じなので、何となく間が抜けている気がするのです。メモリも食いそうだし。 初歩的な質問で申し訳ありませんが、宜しくお願いします。

  • 【Access2003】

    こななちわ。 フォーム上にて、全レコードを帳票フォームで表示しています。 そこでチェックボックスを設置していますが 全チェックボックスにチェックを入れるにはどうすれば良いのでしょうか? つまり、ボタンを追加してワンクリックで全レコードを選択したいのです。 宜しくお願い致します。

  • アクセス2003で納品金額の合計を出すには?

    いつもお世話になります。 アクセス2003で納品チェックがOnになっているレコードのみ金額の合計を出したいのですが、うまくいきません。 フォーム「未納」はレコードソースが選択クエリ「未納」からなる帳票フォームです。 納品チェックをOnにしたら、今日の日付が納品日に入るようにし、Offの場合は空欄にしてあります。 納品完了のコマンドボタンのフォーカス取得後にマクロで、条件に[納品チェック]=On、アクションに値代入、アイテムに[Forms!]![未納]![テキスト48]、式にDSum("価格*個数","未納","納品チェック=On")としているのですが、訂正をお願いします。テキスト48は「未納」フォーム上にある非連結のテキストです。またこの方法以外でもいろいろためしてみますのでどなたか教えてください。よろしくお願いいたします。

  • accessでのレコード移動について

    いつもお世話になっています。 アクセス初心者です。宜しくお願い致します。 現在、アクセスを用いて納品書を作成しています。 フォームにお客様情報、サブフォームに納品品目情報を入力。 フォームヘッダーに印刷ボタンを作り、納品書を印刷すると同時に、 そのレコードの印刷済みチェックボックスがオンになる 仕様になっているのですが、 情報を入力してもすぐその日には印刷をせず、 のちに、その印刷をしていないレコードを表示させて、 あらたに情報を追加入力後、改めて印刷をする事があります。 そこで質問なのですが、 今回、このフォームに検索ボタンを作り、 印刷済みチェックボックスがオフになっているレコードを 表示させようと思うのですが、どのようにしたらよいのでしょうか? ボタンを押すごとにまだ印刷していないデータだけが 次々表示されるボタンの作り方をご教授願えればと思います。 どうか宜しくお願い致します。

  • アクセスコマンドボタンで登録。

    アクセスのフォームで、コマンドボタンをクリックして、初めて登録ができるというのはどのようにすればいいのでしょうか?普通、登録画面といったら、テーブルを基にしてフォームを作成していいのでしょうか?それとも非連結にしてフォームからフォームへ登録という風にするものなのでしょうか?フォーム上のテキストボックスに一つでも文字を入力すると、×ボタンで消しても、データがテーブルに入っていってしまいます。これを防ぐことはできるのでしょうか?保存でもいいですし登録でもいいのですが、コマンドボタンを作成して、それをクリックして初めてテーブルにデータが入っていくという風にしたいのですが。どなたか分かる方居ましたらご教示ください。宜しくお願いします。

  • あくせすのフォームでのコマンドボタンについて。

    アクセスのフォーム上の「登録」というコマンドボタンをつくりたいのですが、これをクリックすると次のレコードの入力画面に移動させるにはどうしたらいいのでしょうか。よろしくお願いします。

  • 【Access2003】

    お世話になります。 前回の質問で説明が足りませんでした。 申し訳ありませんでした。 検索フォーム(帳票フォーム)にて各レコードにチェックボックスを設けています。 クエリにて抽出した全レコードをボタンクリックで全チェックボックスを選択(Yes)したいのですが うまくいません。 ボタンのプロパティの『クリック時』にどういうVBAをしたら良いのでしょうか? 宜しくお願い致します。

  • Access VBAボタンでテキストボックスを入力

    access2010を使用しております。 フォームでボタンをクリックしたときに、テキストボックスを書換える コードを作りたいのですが、 Private Sub コマンド111_Click() ME!テキストボックス.value= "あああ" End Sub としても、テキストボックスは書き換わりません。 でも、ボタンをクリックした後にそのテキストボックスをクリックすると ちゃんと「あああ」と入力されています。 つまり、ボタンをクリックしても入力はされても表示がされず、 ただ、テキストボックスをクリックすると「あああ」と表示されると言った具合です。 また、テキストボックスをクリックする以外にも 違うレコードに移動してもとのレコードに戻ってもおなじように 表示されます。 これを押した時に表示を変更させるには どのようにすればよろしいでしょうか?

  • Access フォームの入力について

    アクセス初心者です。 フォームA(メインとなる画面)でコマンドボタンをクリックすると フォームBが開くように設定しました。 フォームAでレコード1を入力時にコマンドボタンをクリックすると フォームBのレコード1に フォームAのレコード5を入力時にコマンドボタンをクリックすると フォームBのレコード5に移動してデータを入力できるようにすることは可能でしょうか?可能であればどのようにしたらよいでしょうか? 具体的には テーブル 社員NO、氏名・・・、希望地域(yes/no型)があります。 フォームA ・社員NO ・氏名など フォームB ・希望地域(チェックボックスでチェックする。複数選択可) フォームAを入力時にフォームBを開いて希望地域にチェックできる というようにしたいのですが、 フォームAからフォームBに移動するといつもレコード1が表示されてしまいます。 自分なりに試行錯誤しているのですがどうしてもできません。 よろしくお願いします。

  • アクセスで指定したレコードをフォームで開く方法?

    アクセスで、帳票形式のフォームで選択したレコードの内容を、詳細を表示する用のフォーム(単票形式)で開きたいのですが、どうしたらよいのでしょうか?(初心者です) 例えば、帳票形式のフォームで「予約番号:1」のレコード 選択した状態で、ボタンをクリックすると、 詳細を表示する用の単票形式のフォームの「予約番号:1」のレコードが表示されるようにしたいのです。 マクロでは出来なそうなので、VBAで・・・というところまでしか検討がつきません。 使用しているのはアクセス2002です。 どなたかご存知の方がいらっしゃいましたら、教えてください。よろしくお願いします。

専門家に質問してみよう