解释一下,我现在使用的就是ACTIVEREPORT,说明白噢。

解决方案 »

  1.   

    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
      

  2.   

    ....
    set rs=conn.execute("select a,b from table")
    ...
    rs.movefirst    
    set activereport.datacontrol.recordset=rs添加文本框,设定fieldname 对应field就可以