1、ActiveReport中自带数据控件,需单独初始化 2、ActiveReport没有DataSource 属性 3、手工赋值的方法:Public RptRs As ADODB.Recordset '---定义Recordset变量,再调用报表前赋值,例: '---Set ActiveReport1.RptRs = Adodc1.Recordset.Clone '---ActiveReport1.ShowPrivate Sub Detail_AfterPrint() '每打印子表一行后执行,移动纪录 If RptRs.EOF Then Exit Sub RptRs.MoveNext End SubPrivate Sub Detail_Format() '每打印子表一行前执行,赋值 Dim I As Integer If RptRs.EOF Then Exit Sub '---如果到达最后一条记录,则显示报表并结束程序的运行 For I = 0 To Detail.Controls.Count - 1 If Len(Detail.Controls(I).Tag) > 0 Then Detail.Controls(I).Text = IIf(IsNull(RptRs.Fields(CInt(Detail.Controls(I).Tag))), 0, RptRs.Fields(CInt(Detail.Controls(I).Tag))) '---其中用了控件的Tag属性设置RecordSet的对应字段名,相当于绑定字段的DataField属性,再设计是先设置好。 End If Next I Detail.PrintSection '---没有该行时,执行到此处将马上显示报表并结束程序的运行; '---执行该行后执行Detail_AfterPrint() End Sub
.... set rs=conn.execute("select a,b from table") ... rs.movefirst set activereport.datacontrol.recordset=rs添加文本框,设定fieldname 对应field就可以
2、ActiveReport没有DataSource 属性
3、手工赋值的方法:Public RptRs As ADODB.Recordset
'---定义Recordset变量,再调用报表前赋值,例:
'---Set ActiveReport1.RptRs = Adodc1.Recordset.Clone
'---ActiveReport1.ShowPrivate Sub Detail_AfterPrint() '每打印子表一行后执行,移动纪录
If RptRs.EOF Then Exit Sub
RptRs.MoveNext
End SubPrivate Sub Detail_Format() '每打印子表一行前执行,赋值
Dim I As Integer
If RptRs.EOF Then Exit Sub
'---如果到达最后一条记录,则显示报表并结束程序的运行
For I = 0 To Detail.Controls.Count - 1
If Len(Detail.Controls(I).Tag) > 0 Then
Detail.Controls(I).Text = IIf(IsNull(RptRs.Fields(CInt(Detail.Controls(I).Tag))), 0, RptRs.Fields(CInt(Detail.Controls(I).Tag)))
'---其中用了控件的Tag属性设置RecordSet的对应字段名,相当于绑定字段的DataField属性,再设计是先设置好。
End If
Next I
Detail.PrintSection
'---没有该行时,执行到此处将马上显示报表并结束程序的运行;
'---执行该行后执行Detail_AfterPrint()
End Sub
set rs=conn.execute("select a,b from table")
...
rs.movefirst
set activereport.datacontrol.recordset=rs添加文本框,设定fieldname 对应field就可以