my_table,my_form,my_reportが登場します。
・my_formフォームにボタンを設置。クリックすると、「my_report」というレポートを呼び出す。
Private Sub cmd_Execute_Click()
DoCmd.OpenReport my_report, acViewPreview
・my_reportにはVBAでレコードセット取得コードが書かれています。r_ID,r_Nameはレポート上に配置されているテキストボックスです。
Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
SQL_Str = "SELECT * from my_table where ID Between 0 and 100"
Set RS = db.OpenRecordset(SQL_Str, dbOpenDynaset)
Do Until RS.EOF
r_ID = RS!ID
r_Name = RS!Name
RS.MoveNext
Loop
何がやりたいかというと、レコードセットを作成。例えば100人分のレコードセットができたとします。100人の名前が印刷できるようなレポートを作りたいです。上記のコードだと、r_ID,r_Nameは上書きされて最後のレコードが印刷されるだけです。コードをどうやって変えたらよいでしょうか?アドバイスお願いします!
アクセスをアクセスらしくスマートに使うにはバインドを使用することです。
デザインのビューから「レコードソース」にテーブルやクエリ、SQLをセットしてレポートとバインドします。
で、必要に応じ、
DoCmd.OpenReport の引数で抽出条件を指定するとよいです。
http://www.happy2-island.com/access/gogo03/capter60005.shtml
どうしても、レポートのモジュールでコードを書きたいということであれば、こちらにあるように
Report_Openイベントでレコードセットを作って、Me.RecordSourceにセットします。
レポートにテーブルを持ってきておく。
ボタンを押したら、そのテーブルにレコードセットを書き込む。
全部書き込んだら、レポートを印刷すればいいんではないの?
ありがとうございます!
アクセスをアクセスらしくスマートに使うにはバインドを使用することです。
デザインのビューから「レコードソース」にテーブルやクエリ、SQLをセットしてレポートとバインドします。
で、必要に応じ、
DoCmd.OpenReport の引数で抽出条件を指定するとよいです。
http://www.happy2-island.com/access/gogo03/capter60005.shtml
どうしても、レポートのモジュールでコードを書きたいということであれば、こちらにあるように
Report_Openイベントでレコードセットを作って、Me.RecordSourceにセットします。
ありがとうございます!!
ありがとうございます!!