フォーム・レポートの参照方法
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】です。
コメント