my_table,my_form,my_reportが登場します。
・my_formフォームにボタンを設置。クリックすると、「my_report」というレポートを呼び出す。
Private Sub cmd_Execute_Click()
DoCmd.OpenReport my_report, acViewPreview
・レポート上(my_report)には、r_ID,r_Nameというテキストボックスが配置されています。この2つのテキストボックスにIDと名前を表示したいと思っています。
・レポートオープン時には、下記が流れてレコードソースがセットされます。
Private Sub Report_Open(Cancel As Integer)
Dim sql As String
sql = "SELECT ID,Name from my_table where ID Between 0 and 100"
Me.RecordSource = sql
end sub
質問続きは補足で。
RecordSetを別途持って、RecordSourceを使わないサンプルがあります。
http://hatenachips.blog34.fc2.com/blog-entry-76.html
同ページ、下のほうにちょっと複雑なサンプルがあります。
http://www42.tok2.com/home/hatena19/samplefile/RptNonConnect.zip
ページセクションの制御を自身のコードを制御する必要があり、めんどうです。
実用性が無い気がします。
----
RecordSourceを使う場合は、ページセクションの制御をAccessに任せれるので楽です。
RecordSourceの内容と一致するようにコントロールの連結内容を変更するだけでOKです。
Private Sub Report_Open(Cancel As Integer) Dim sql As String sql = "SELECT ID,NAME from my_table where ID Between 0 and 100" Me.RecordSource = sql '左辺にレポートのコントロールを指定、右辺にSQL内のフィールドを指定します。 Me.r_ID.ControlSource = "[ID]" Me.r_NAME.ControlSource = "[NAME]" End Sub
Me.r_ID.ControlSource = "[ID]"こういったやりかたを知りませんでした。このようにして指定できるんですね、ありがとうございます!感謝です!