SSブログ

VBA DoCmd.FindRecordについて [VBA]

 DoCmd.FindRecordの記事を書こうと思って、サンプルプログラムを作っていたのですが、どうにもうまくいきません。
 私的には、DoCmd.FindRecordの利用は非推奨なので、パスして他の記事を書こうかと思いましたが、いちおういろいろやってみたので、そのことについて書いておこうと思います。

 純粋にDoCmd.FindRecordについて知りたい方、申し訳ありませんが、ここにご希望の内容はありません。ご了承下さい。
 同じような検索であれば、DAOのFindFirstを使うのが良いかと思います。

・構文
 DoCmd.FindRecord  FindWhat , Match , MatchCase , Search , SearchAsFormatted , OnlyCurrentField , FindFirst

・引数
 FindWhat 必須
 検索する数値・文字列を設定します。

 Match
 一致と判断する検索方法を、以下のacEntireクラスから指定します。

名前 説明
acAnywhere 0 FindWhatとフィールドの一部が一致した場合
acEntire 1 FindWhatとフィールド全体が一致した場合
acStart 2 FindWhatがフィールドの先頭から一部一致した場合

 デフォルトはacEntireです。

 MatchCase
 大文字と小文字を区別するかどうかを指定します。
 Trueなら区別します。デフォルトはFalse(区別しない)です。

 Search
 検索を行う方向を指定します。
 以下のAcSearchDirectionクラスから指定します。

名前 説明
acDown 1 カレントレコードより下のすべてのレコードを検索します。
acSearchAll 2 すべてのレコードを検索します。
acUp 3 カレントレコードより上のすべてのレコードを検索します。

 デフォルトはacSearchAllです。

 SearchAsFormatted
 書式化された形式で検索する場合にはTrue、データベースに保存されている形式で検索する場合はFalseを指定します。
 デフォルトはFalseです。

 OnlyCurrentField
 検索対象となるフィールドを指定します。
 以下のAcFindFieldクラスから指定します。

名前 説明
acAll 0 すべてのフィールドで検索します。
acCurrent -1 現在のフィールドだけで検索します。

 デフォルトはacCurrentです。

 FindFirst
 最初のレコードから検索を開始する場合は、Trueを指定します。
 カレントレコードを次のレコードから検索を開始する場合は、Falseを指定します。

続きを読む


VBA 画面の描画を停止する・ステータスバーへのメッセージ表示 [VBA]

 VBAで処理を行っている間、処理の内容によっては、その影響が画面に反映する場合があります。
 VBAでやっていることを、画面上で見せたくない場合は、Application.Echoで画面の描画(書き換え)を停止することができます。

・構文
 Application.Echo EchoOn, bstrStatusBarText

EchoOn … 必須です。Trueなら描画ON、Falseなら描画OFFになります。
bstrStatusBarText … ステータスバーテキストに表示する文字列を指定します。

 以下に、例を示します。

Private Sub cmdEcho_Click()

    Application.Echo False, "処理中…"
'
'…処理…
'
    Application.Echo True
  
End Sub

続きを読む


VBA イベントのキャンセル [VBA]

 ACCESSは、ユーザーの操作やACCESSの処理によって起きるイベントによって、処理が実行されています。
 様々なイベントがありますが、一部のイベントは、VBAによってイベントの処理を取り消すことができます。

 具体的にどんなことなのかは、以下の通り。
 フォームが閉じるときの処理を、キャンセルする例です。

 画面にコマンドボタンを配置し、クリックイベントに以下のコードを記述します。

Private Sub cmdClose_Click()
    
On Error Resume Next
    DoCmd.Close acForm, Me.Name
On Error GoTo 0
    
End Sub

 次に、フォームの「読み込み解除時」イベントに、以下のコードを記述します。

Private Sub Form_Unload(Cancel As Integer)

    If MsgBox("フォームを閉じますか?", vbYesNo) = vbNo Then
        Cancel = True
        Exit Sub
    End If

End Sub

続きを読む


VBA データベースを閉じる [VBA]

 現在ACCESS開いているデータベースを閉じる方法です。

 Application.CloseCurrentDatabaseメソッドで、現在のデータベースを閉じます。
 データベースは閉じますが、ACCESSは終了しません。

 例は以下の通り。


 画面にボタンを作成し、クリック時イベントに以下のコードを記述します。

Private Sub cmdCloseDB_Click()

    Application.CloseCurrentDatabase

End Sub

続きを読む


VBA フォーム・レポートを閉じる [VBA]

 ACCESSでフォームを閉じる時は、DoCmd.Closeを使用します。

・書式
 DoCmd.Close ObjectType, ObjectName, Save

・引数
 ObjectType
 閉じるオブジェクトの種類を指定します。
 以下のAcObjectTypeクラス定数から指定します。

名前 説明
acDatabaseProperties 11 Databaseプロパティ
acDefault -1
acDiagram 8 データベースダイアグラム(Accessプロジェクト)
acForm 2 フォーム
acFunction 10 関数
acMacro 4 マクロ
acModule 5 モジュール
acQuery 1 クエリ
acReport 3 レポート
acServerView 7 サーバービュー
acStoredProcedure 9 ストアドプロシージャ(Accessプロジェクト)
acTable 0 テーブル
acTableDataMacro 12 データマクロ

 よく使うのは、acFormacReportくらいだと思います。

 ObjectName
 閉じるオブジェクトの名前を文字列で指定します。
 フォームやレポートの名前です。
 省略すると、現在アクティブなオブジェクトが閉じられます。

 Save
 変更を保存するかどうかを指定します。
 以下のAcCloseSaveクラス定数から指定します。

名前 説明
acSaveNo 2 保存しない
acSavePrompt 0 確認を表示。
Visual Basic モジュールを閉じる場合は無視され、保存しない。
acSaveYes 1 保存するされます。

 まじめに指定するなら、acSaveNoが良いと思うのですが、制作中においては保存したい場合も多々あるので、acSavePromptが無難です。(私は省略しています。)

続きを読む


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。