[Access] フォーム関連操作

フォームをモーダルに設定

エンドユーザーの興味から発生する余計な操作をさせないために、現在開いているフォーム以外の操作を行えないようにするためにするモーダルプロパティが設定できます。

下記の例は、自分自身以外の操作を受け付けなくする場合の例。

'フォームを開く時の処理
Private Sub Form_Open( Cancel As Integer )
	'モーダルウィンドウ設定
	Me.Modal = True
End Sub

フォームを開いた後に、呼び出し元フォームを閉じる

登録フォームから表示専用のフォームを開くときなど、呼び出し元フォームを閉じたいときの処理。

'フォームを開くプロシージャ
Private Sub barOpen()
	'barForm: 開きたいフォーム
	DoCmd.OpenForm "barForm"
	'fooForm: 呼び出し元フォーム
	DoCmd.Close acForm, "fooForm",  acSaveNo
End Sub

環境

以下の環境で確認しました。

  • Access 2002
  • Windows XP Pro

[Access] 指定文字列を利用した検索結果からコンボボックスのRowSourceを設定

フォーム上に設定したテキストボックスのフォーカス喪失後に、コンボボックスのデータソースを入れ替え、レコードの1番目の値をコンボボックスに設定する

Private Sub fooTb_LostFocus()
	'piyoテーブルのfuga列にテキストボックス「foo」コントロールに
	'入力された文字列と前方一致するレコードを持つhoge列を抽出
	'fooTb: 検索文字列入力用テキストボックス
	Dim getCbListSql As String
	getCbListSql = "SELECT DISTINCT hoge " & _
		"FROM piyo " & _
		"WHERE fuga LIKE '" & Me.fooTb.Value & "*';"
	'コンボボックスに抽出したリストをセット
	'barCb: コンボボックス
	Me.barCb.RowSource = getCbListSQL
	'コンボボックスの初期値をリストの1番目に設定
	If Me.barCb.ListCount >= 1 Then
		Me.barCb.Value = Me.barCb.ItemData(0)
	End If
End Sub

環境

以下の環境で確認しました。

  • Access 2002
  • Windows XP Pro SP2

VBA

お察しください。

ネタ元となったアプリケーション等の環境は各記事を参照してください。