Excelには「コメント」という機能があります。これは、セルごとに自由にメモ書きなどを付けられる機能です。
Accessにはそのような機能はありませんが、テーブル構造やフォームのプログラムを工夫することで、似たような感じの機能を付加することはできます。ここでは「仕入先」というテーブルを例に説明します。
- まずテーブルにおいて、本来の仕入先の情報に加えて、各データのコメントを保存するためのフィールドを追加します(例ですのでここでは3つだけとします)。
- そのテーブルをレコードソースとするフォームを作成します。
ここでは本来コメントに関するフィールドはコントロールとして配置しない方がルックスはよいと思いますが、動作確認のためあえて配置しておくこととします。
- 次に、コメントを付ける3つのコントロールについて、その編集画面を開くためのプログラムを追加します。
そのタイミングは任意です。クリックや右クリックで表示させるようにしてもよいですが、ここでは”ダブルクリック”で表示させるものとして「DblClick/ダブルクリック時」イベントプロシージャを使います。
ここでは、編集用のフォームからコメントデータを参照・代入するため、それぞれ該当するコメントのフィールド名を引数として与えています("会社名コメント"や"フリガナコメント"の部分)。
下記がそのコードです。
Private Sub 会社名_DblClick(Cancel As Integer)
'[会社名]のダブルクリック時
DoCmd.OpenForm "fdlgコメント編集", , , , , , "会社名コメント"
End Sub
Private Sub 会社名フリガナ_DblClick(Cancel As Integer)
'[会社名フリガナ]のダブルクリック時
DoCmd.OpenForm "fdlgコメント編集", , , , , , "フリガナコメント"
End Sub
Private Sub 部署_DblClick(Cancel As Integer)
'[部署]のダブルクリック時
DoCmd.OpenForm "fdlgコメント編集", , , , , , "部署コメント"
End Sub
- 次に、コメントを表示・編集するためのフォームを作成します。
上記の呼び出し元フォームと同じテーブルをソースとして操作する方法もありますが、ここではレコードソース”なし”の非連結フォームとし、単にコメント編集用のテキストボックスを1つと、編集結果を確定/キャンセルするためのボタンを配置するだけのスタイルとします。
- フォーム読み込み時に引数(OpenArgs)で指定されたコントロールの値を参照しその内容をこのフォームのテキストボックスに代入するコード、および[OK]・[キャンセル]ボタンがクリックされたときのコードを次のように記述します。
Private Sub Form_Load()
'フォーム読み込み時
'呼び出し元フォームのコメントをテキストボックスに代入
Me!コメント = Forms!frm仕入先(Me.OpenArgs)
End Sub
Private Sub cmdOK_Click()
'[OK]ボタンクリック時
'テキストボックスの値を呼び出し元フォームのコメントに代入
Forms!frm仕入先(Me.OpenArgs) = Me!コメント
'このフォームを閉じる
DoCmd.Close acForm, Me.Name
End Sub
Private Sub cmdキャンセル_Click()
'[キャンセル]ボタンクリック時
'このフォームを閉じる
DoCmd.Close acForm, Me.Name
End Sub
実行例:
- 画面の初期状態
- 「会社名」をダブルクリックしてコメント編集用画面を表示
- コメントを入力
- [OK]ボタンのクリックでコメントが書き込まれる
関連Tips:
#662 マウスポインタの近くでフォームを開くには? |
自動中央寄せ:はい、境界線スタイル:なし、レコードセレクタ:いいえ、移動ボタン:いいえ、
スクロールバー:なし、コントロールボックス:いいえ、ポップアップ:はい、作業ウィンドウ固定:はい