フォーム・レポートの操作【Access】

フォーム・レポートの操作【Access】 07.フォーム・レポートの操作
フォーム・レポートの操作【Access】

フォーム・レポートの参照方法

Accessのフォームとレポートの構造や仕組みは大変よく似ています。フォーム・レポートを操作するには、各オブジェクトの参照方法をマスターする必要があります。
フォーム・レポートの参照方法は次の通りです。

【書式(フォーム・レポート)】
Forms(“フォーム名”)
Reports(“フォーム名”)
【書式(サブフォーム・サブレポート)】
Forms(“フォーム名”).サブフォーム名.Form
Reports(“フォーム名”).サブレポート名.Report

サブフォーム・サブレポートはフォーム・レポート中に埋め込んだフォーム・レポートのことを指します。

フォーム・レポートを参照する構文は、上記以外にもいくつかの記述が存在します。
【書式】
Forms!フォーム名
Forms![フォーム名]
Forms.フォーム名

プログラム作成時に命名規則の統一方針を決めることをお勧めします。

meキーワード

モジュールには標準モジュールとフォーム・レポートに関連付けられフォームモジュール・レポートモジュールがあります。
フォームモジュール・レポートモジュールでは自身のモジュールを指定する際、Meキーワードを使用することができます。

Private Sub cmdFormName_Click()
    MsgBox "フォーム名は " & Me.Name
End Sub

フォーム・レポートのプロパティ

RecordSourceプロパティ

フォームまたはレポートのもとになるデータを指定すます。テーブル名・クエリ名・SQLのいずれかを指定します。
【書式】
コントロールに値を設定する場合:オブジェクト.RecordSource=設定値
コントロールの値を取得する場合:変数=オブジェクト.RecordSource
【プロパティシート】
フォーム-データ-レコードソース

Private Sub cmdRecordSource_Click()
    MsgBox Me.RecordSource
End Sub

Filterプロパティ/FilterOnプロパティ

フォームまたはレポートにフィルタを設定します。FileterOnプロパティは、Filterで設定したフィルタを指定するどうか設定します。
【書式】
オブジェクト.Filter=条件式
オブジェクト.FirlterOn=TrueまたはFalse
【プロパティシート】
フォーム-データ-フィルター/読み込み時にフィルターを適用

Private Sub cmdFilter_Click()
    Me.Filter = "年齢 >=40"
    Me.FilterOn = True
    MsgBox "年齢が40以上に設定しました。"
    Me.FilterOn = False
    MsgBox "フィルタ解除しました。"
End Sub

OrderByプロパティ/OrderbyOnプロパティ

フォームまたはレポートの並び順を取得・設定します。OrderByOnプロパティはOrderByプロパティで設定した並び順を適用するかどうかを取得・設定します。
【書式】
オブジェクト.OrderBy=”フィールド名1,[フィールド名2],[フィールド名3]・・・”
※降順にする場合は各フィールド名の後に “DESC”を追加します。
オブジェクト.OrderbyOn=TrueまたはFalse

Private Sub cmdOrderby_Click()
    Me.OrderBy = "年齢"
    Me.OrderByOn = True
    MsgBox "年齢順に並び替えました。"
    Me.OrderBy = "年齢 , 会員番号 DESC"
    Me.OrderByOn = True
    MsgBox "年齢順・会員番号降順に並び替えました。"
    Me.OrderByOn = False
    MsgBox "並び替えを解除しました。"
End Sub

CurrentRecordプロパティ

現在のレコードのレコード番号を設定します。
【書式】
オブジェクト.CurrentRecord

Private Sub cmdCurrent_Click()
    MsgBox "カレントレコードは " & Me.CurrentRecord
End Sub

Recordset.RecordCountプロパティ

フォームまたはレポートに設定されているレコードセットの件数を返します。
【書式】
オブジェクト.Recordset.RecordCount

Private Sub cmdRecordCount_Click()
    MsgBox "レコード件数は " & Me.Recordset.RecordCount
End Sub

フォーム・レポートのメソッド

Recordset.Find系メソッド

フォームのRecordsetプロパティで取得したレコードセットオブジェクトに、Find系メソッドを使用すると、レコードセットから特定のレコードを検索し、カレントレコードにすることができます。
【初期値】
オブジェクト.Recordset.FindFirst 条件式 (レコードの先頭から末尾に向かって検索)
オブジェクト.Recordset.FindLast 条件式 (レコードの末尾から先頭に向かって検索)
オブジェクト.Recordset.FindNext 条件式 (カレントレコードから末尾に向かって検索)
オブジェクト.Recordset.FindPrevious 条件式 (カレントレコードから先頭に向かって検索)
※検索後にRecordset.NoMatchプロパティで検索が見つかったか確認できます。

Private Sub cmdFind_Click()
    Dim MyName As String
    
    MyName = "吉田"
    
    '検索後にRecordset.NoMatchプロパティを確認することで検索結果が確認できます。
    If MyName <> "" Then
        Me.Recordset.FindFirst "氏名 like '*" & MyName & "*'"
        If Me.Recordset.NoMatch Then
            MsgBox MyName & " を含むレコードが見つかりませんでした。"
        Else
            MsgBox MyName & " を含むレコードが見つかりました。"
        End If
    End If
End Sub

Recordset.Move系メソッド

フォームのRecordsetプロパティで取得したレコードセットオブジェクトに、Move系メソッドを使用するとカレントレコードを移動することができます。
【書式】
オブジェクト.Recordset.MoveFirst (先頭レコードに移動)
オブジェクト.Recordset.MoveLast (最後のレコードに移動
オブジェクト.Recordset.MoveNext (次のレコードに移動)
オブジェクト.Recordset.MovePrevios (前のレコードに移動)

Private Sub cmdMove_Click()
    With Me.Recordset
        .MoveLast
        MsgBox "最後のレコードに移動"
        .MoveFirst
        MsgBox "先頭のレコードに移動"
        .MoveNext
        MsgBox "次のレコードに移動"
        .MovePrevious
        MsgBox "前のレコードに移動"
    End With
End Sub

次はコントロールの操作【Access】です。

コメント

タイトルとURLをコピーしました