hatenaさんとこの
フォームのすべてのフィールドを対象とする検索機能を読んで、これをやっておかないとそのうち忘れてしまいそうだからやってみた。
詳細セクションにはテキストボックスのみという仕様で、フォームヘッダに検索用テキストボックスとコマンドボタンを配置。検索テキストボックス更新したら先頭から検索。
Option Compare Database
Option Explicit
Private ctrFirst As Access.Control
Private ctrPrev As Access.Control
Private flgNext As Boolean
Private Sub Form_Load()
Set ctrFirst = Me.ID
End Sub
'Private Sub 詳細_Paint()
' If ctrFirst Is Nothing Then
' Set ctrFirst = Screen.ActiveControl
' End If
'End Sub
Private Sub cmdSearch_Click()
If Len(Me.txtFind & "") = 0 Then Exit Sub
If Screen.PreviousControl.Name <> Me.txtFind.Name Then
Set ctrPrev = Screen.PreviousControl
End If
DoCmd.Echo False
Me.txtFind.Enabled = False
If flgNext Then
ctrPrev.SetFocus
ctrPrev.SelStart = 255
DoCmd.FindNext
Else
ctrFirst.SetFocus
DoCmd.FindRecord Me.txtFind, acAnywhere, _
False, acSearchAll, , _
acAll, True
flgNext = True
End If
Me.txtFind.Enabled = True
DoCmd.Echo True
flgNext = Screen.ActiveControl.SelLength <> 0
End Sub
Private Sub txtFind_AfterUpdate()
flgNext = False
End Sub
Private Sub txtFind_GotFocus()
If Screen.PreviousControl.Name <> Me.cmdSearch.Name Then
Set ctrPrev = Screen.PreviousControl
End If
End Sub
ちょっと画面のちらつきが気になるかな。思ったより面倒な処理なんだなと思った。NavigationButtonsの検索機能が優秀なのだろう。
0 件のコメント:
コメントを投稿