システム開発ブログ

Accessのサブフォームを使っている画面でフォーカスを操作する方法

seki

seki (2010年5月18日 14:15)
流通システム部

今日は、Accessの伝票明細入力を行うようなサブフォームのフォーカスについてお話します。

1.サブフォームの任意の行にフォーカスをセットする方法
サブフォームの行にフォーカスをセットしたい場合は、Bookmarkプロパティを使用します。
下記のソースは行のユニークキーである「KeyCode」が3の行のBookmarkを取得して、
該当行のコントロールにフォーカスをセットするサンプルです。
	'フォーカスセットの準備
	Dim bm As Variant
	Dim rst As Recordset
	Set rst = Me!SampleSubForm.Form.RecordsetClone
	If rst.RecordCount > 0 Then
		rst.MoveFirst
		Do Until rst.EOF
			'キーコードの判断
			If rst.Fields("KeyCode").Value = 3 Then
				'Bookmarkの取得
				bm = rst.Bookmark
				Exit Do
			End If
			rst.MoveNext
		Loop
	End If
	
	'フォーカスをセット
	If Not IsEmpty(bm) Then
		'Bookmarkのセット
		Me.SampleSubForm.Form.Bookmark = bm
		'フォーカスを当てたい
		Me.SampleSubForm.Form.txtFieldName.SetFocus
	End If
	
2.サブフォームの最終行から親フォームにフォーカスをセットする方法
RecordsetのMoveLastを使って、イベント行のBookmarkと最終行のBookmarkを比較します。
同じの場合は、親フォームにフォーカスをセットします。
その後は、サブフォームのフォーカスを最初行の最初コントロールにセットします。
	Dim bm As Variant
	
	Dim RS As Recordset
	Set RS = Me.RecordsetClone
	
	'Recordsetの最終行に移動
	RS.MoveLast
	If StrComp(Me.Bookmark, RS.Bookmark, 0) = 0 Then
		'親フォームにフォーカスをセット
		Forms![OyaForm]![cmdUpdate].SetFocus
		Forms![OyaForm]![SampleSubForm].Requery
		
		'Recordsetの最初行に移動
		RS.MoveFirst
		'Bookmarkのセット
		Me.Bookmark = RS.Bookmark
		'最初のコントロールにフォーカスをセット
		Me.txtCode.SetFocus
	End If
上記の二つはサブフォームにフォーカスをセットするサンプルです。お役立てください。
システムのトラブル解決を承ります。すぐにシステムリフォームを体験できますシステム診断・システムリフォームのお申し込みはこちらから。

システム開発ブログ

Twitterでilovex_officialをフォローしてください

最近の記事

カテゴリー

部署

月別アーカイブ

以前の部署別ブログ

ページのトップ