アクセス2003で入力ありと空欄の判別の仕方

このQ&Aのポイント
  • アクセス2003で「メインフォーム」からコマンドボタン「コメント」をクリックすると、入力ありと空欄の判別を行いたいです。
  • 入力があれば、「メインフォーム」上のコマンドボタン「コメント」の表示を「コメントあり」に変化させたいです。
  • 入力がなければ(空欄なら)、閉じたときに、「メインフォーム」上のコマンドボタン「コメント」はそのまま「コメント」のままで変化なしにしたいです。
回答を見る
  • ベストアンサー

アクセス2003で入力ありと空欄の判別の仕方?

いつもお世話になります。 アクセス2003で「メインフォーム」からコマンドボタン「コメント」をクリックすると、単票フォーム「コメント」が開きます。 この中に、入力があれば、「メインフォーム」上のコマンドボタン「コメント」の表示を「コメントあり」に変化させたいと考えています。(できればピンク色に変化もさせたいです。) また、入力がなければ(空欄なら)、閉じたときに、「メインフォーム」上のコマンドボタン「コメント」はそのまま「コメント」のままで変化なしにしたいです。 同じフォーム上にないのでなかなかうまくできません。 タイミングは「コメント」フォームを閉じる時にしたいのですが、どなたか教えてください。よろしくお願いいたします。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

メインフォームの「コメント」という名前のボタンを クリックして、「コメント」という名前のフォーム を開き、その中の「コメント」という名前の テキストボックスに入力されているかの確認と その処理。 Private Sub コメント_Click() DoCmd.OpenForm ("コメント") If Not IsNull(Forms!コメント!コメント) Then Me!コメント.ForeColor = 16744703 Me!コメント.Caption = "コメント有り" End If End Sub 以上です。 なお、「コメント」という名前のフォームが 開かれたかを確認することも必要な場合は、 以下を標準モジュールに貼り付けてください。 Function IsLoaded(ByVal strFormName As String) As Boolean ' 指定したフォームがフォーム ビューまたはデータシート ビューで開かれている場合 True を返します。 Const conObjStateClosed = 0 Const conDesignView = 0 If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> conObjStateClosed Then If Forms(strFormName).CurrentView <> conDesignView Then IsLoaded = True End If End If End Function そして、先ほどのコードを以下に変更します。 Private Sub コメント_Click() DoCmd.OpenForm ("コメント") If IsLoaded("コメント") Then If Not IsNull(Forms!コメント!コメント) Then Me!コメント.ForeColor = 16744703 Me!コメント.Caption = "コメント有り" End If Else MsgBox("フォームが開かれていません") End If End Sub

ayanohina
質問者

お礼

早々のご回答大変ありがとうございました。おかげさまでうまくできました!またこれからもよろしくお願いします。本当にありがとうございました!!!

関連するQ&A

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

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

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

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

  • アクセスのフォームからレコード入力空欄回避のVBA

    アクセス初心者です。 帳票式フォームからテーブルへのレコード入力において、次のレコード入力ボタンで空欄を防止するためのVBAを作っていますが、うまく行きません。空欄があれば警告は出ますがそのままテーブルへ記録されてしまいます。 テーブルに記録されずに空欄が入力できるようにするにはどうすればよいのでしょうか? また、次を入力するときにフォームの製品名の内容だけ消えずに残したいのですが、そのプログラムについても教えていただきたいです。 なかなかうまく行かずに大変困っています。 どなたかVBAの達人の方、初心者にわかりやすくお教え下さい。 「入力内容を登録して次を入力」ボタンで作ったVBAは次の通りです。 つぎはぎなので、不要なプログラムもあるかもしれません。 Private Sub コマンド9次のレコードに_Click() On Error GoTo Err_コマンド9次のレコードに_Click DoCmd.GoToRecord , , acNext Exit_コマンド9次のレコードに_Click: Exit Sub Dim Rst As DAO.Recordset Set Rst = CurrentDb.OpenRecordset("T_指定材料表", dbOpenTable) With Rst .AddNew .Fields("製品名") = Me!製品名 .Fields("回路記号") = Me!回路記号 .Fields("部品名") = Me!部品名 .Fields("員数") = Me!員数 .Update If IsNull(Me!製品名) Then MsgBox ("製品名が空欄です。") Resume Exit_コマンド9次のレコードに_Click End If If IsNull(Me!回路記号) Then MsgBox ("回路記号が空欄です。") Resume Exit_コマンド9次のレコードに_Click End If If IsNull(Me!部品名) Then MsgBox ("部品名が空欄です。") Resume Exit_コマンド9次のレコードに_Click End If If IsNull(Me!員数) Then MsgBox ("員数が空欄です。") Resume Exit_コマンド9次のレコードに_Click End If End With On Error Resume Next DoCmd.GoToRecord DataForm, "T_指定材料表", acNew Rst.Close Set Rst = Nothing Call ClearControls End Sub

  • アクセス2007

    アクセス2007 アクセスで日付や内容を打ち込むと検索結果が出ると言うものを作りました。 検索結果はフォームで表示されてそこにトグルボタンを作りました。 このトグルボタンをクリックすると単票形式で詳細が出るようにするのはどうすればいいですか? 今のところ、クリックすると単票形式のフォームは出ますがデータが反映されていないようです。 よろしくお願いします。

  • Accessのメインフォームとサブフォームの使い方について

    Accessにてメインフォーム(単票形式)+サブフォーム(帳票形式)を使って進捗管理をするデータベースを作っており、新規にメインフォームで入力し、サブフォームで入力したデータを表示させてます。 サブフォームで更新したいレコードをクリックしたときにメインフォームでそのレコードを表示させるにはどのようにすればよろしいのでしょうか?

  • アクセスのフォームで入力可能にならない。

     初心者で申し訳ありませんがお願いします。過去ログNo.449250を見ましたが(似た状況ではあります)解決しないので質問させてください。  既存のデータのあるデータベースでの入力フォームは、最初、既存のデータが表示されますよね?(ここまでは正しいでしょうか?)、そこから、左下のアスタリスクと三角のようなボタンで最終頁に飛ぶような感じで、入力項目が空欄になると思うのですが、そのボタンがアクティブにならず、新規入力できません。  原因追求のための基本的なチェック項目と、解決手段をおしえてください。お願いします。  フォームは、単票形式の親フォームに表形式の子フォームが入り込んでいる形で、親子のリンクは機能してます。  ウィザードで流れるままにフォームを作成していき、親子のリンクを設定して、入力欄のデザインをいじったぐらいで、とくにそれ以上の操作はしていないつもりですが、ひょんなところを触ってしまっているかもしれません。  単価と数量を入れると合計が表示されるようにした欄があるので、集計をしていることが原因かもと思いましたが、以前にそのような形でのフォームを作ったことがあり、私の操作の一部が間違っているだけだと思うのですが、どこがおかしいのかがわかりません。  合計欄は編集不可にしてあります。 windows2000 access2002です。  

  • Accessのフォームで、空欄のレコードを検索したい。

    Accessの自己流で使っているものです。 販売管理のデータベースを作ったのですが、 主なフィールドは、 仕入先、商品名、販売日などです。 そこでですが、 コマンドボタンで販売日が未入力のものを検索しようとしましたが、抽出ができません。 仕入先では検索ができました。 検索コマンドボタンと、仕入先抽出のテキストボックスを作り、 検索コマンドボタンのクリック時のマクロビルダで、 [仕入先]=[Forms]![販売フォーム]![仕入先抽出]   [仕入先]  テーブルのフィールド名   [販売フォーム] フォーム名   [仕入先抽出] 抽出したい仕入先を入力するテキストボックス そこで販売日についても抽出を掛けたく思い、 同様に、販売日検索未入力コマンドボタンを作り、 コマンドボタンのクリック時のマクロビルダで、 [販売日] like "is null" [販売日] like is null などやってみましたができませんでした。 少ない情報で申し訳ありませんが、補足情報は随時いれますので宜しくお願いいたします。

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

    ACCESS2000を使用しています。初心者のほうです。住所録のテーブルを作って、作業用のフォームを表形式で作りました。そのフォームに宛名印刷するためのコマンドボタンを配置しています。フォーム上で一件入力し、そのコマンドボタンを実行するのですが、その時点ではレコードとして入力されていないようで、実行できません。フォームを一度閉じて、また開くと出来るようになります。1件のレコードをフォームから入力すると同時にテーブルへも保存されていくようにしたいのですが、簡単にやる方法はないでしょうか?

  • ACCESS 単票形式フォームの新しいレコードでのカーソルの位置

    単票形式フォームで、新しいレコードを入力の際に、カーソルをタブオーダーの1番最初に点滅させることが出来ないでしょうか? また、フォームで使用しているコマンドボタンにショートカットキーを割り付けることがでないでしょうか? と、言いますのは、一つのレコードを打ち終わって、ショートカットキーで次のレコードに移るコマンドボタンを押して、そのまま入力できれば、キーボードから手を離さずに打ち続けることができるのに・・と思いまして。 何卒、お願いします。m(__)m

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

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

専門家に質問してみよう