ActiveReports 10运行时设置数据源报错,求排查解决方法
ActiveReports 10 运行时设置数据源报错排查方案
针对你遇到的“‘DataSource’ 不是‘Script.ReportScript’的成员”编译错误,可从以下几个方向排查:
1. 确认报表类型对应的数据源设置方式
ActiveReports 10不同报表类型的数据源赋值逻辑不同:
- SectionReport(区域报表):直接使用
Me.DataSource赋值是正确的,但需确保脚本上下文指向的是SectionReport实例。 - PageReport(页面报表):不能直接用
Me.DataSource,需通过数据源集合添加,语法为Me.DataSources.Add("数据源名称", 你的DataTable),之后报表控件需绑定到这个命名数据源。
2. 补充必要的命名空间引用
脚本开头必须导入相关命名空间,否则会导致类型或属性无法识别:
Imports System.Data Imports System.Data.SqlClient
3. 修正代码语法错误
原代码中连接字符串使用了中文引号“”,需替换为英文引号"",这是常见的编译错误诱因。
4. 验证脚本上下文的对象访问方式
部分场景下,脚本的Me可能指向Script容器而非报表实例,此时需通过Me.Report访问报表对象,比如SectionReport可改为:
Me.Report.DataSource = _dt
修正后的SectionReport脚本示例
Imports System.Data Imports System.Data.SqlClient Sub ActiveReport_ReportStart Dim connectionString = "Data Source=PC\SQLEXPRESS;Initial Catalog=Contratti;Integrated Security=True" Dim con As SqlConnection = New SqlConnection(connectionString) con.Open() Dim _strSQL As String = "Select id , cod from customers" Dim _cm As New SqlCommand(_strSQL, con) Dim _dt As New DataTable Dim _da As New SqlDataAdapter(_cm) _da.Fill(_dt) _dt.TableName = "customers" Me.DataSource = _dt con.Close() ' 关闭连接避免资源泄漏 End Sub
修正后的PageReport脚本示例
Imports System.Data Imports System.Data.SqlClient Sub PageReport_ReportStart Dim connectionString = "Data Source=PC\SQLEXPRESS;Initial Catalog=Contratti;Integrated Security=True" Dim con As SqlConnection = New SqlConnection(connectionString) con.Open() Dim _strSQL As String = "Select id , cod from customers" Dim _cm As New SqlCommand(_strSQL, con) Dim _dt As New DataTable Dim _da As New SqlDataAdapter(_cm) _da.Fill(_dt) _dt.TableName = "customers" Me.DataSources.Add("customers", _dt) con.Close() End Sub
内容的提问来源于stack exchange,提问作者LukaGer
相关产品推荐
相关产品推荐

