找回密码
 立即注册

QQ登录

只需一步,快速开始

myh441

论坛元老

13

主题

44

帖子

6353

积分

论坛元老

积分
6353

活字格认证

myh441
论坛元老   /  发表于:2013-3-14 17:12  /   查看:6189  /  回复:5
// 设置DataSource信息
dataSource = new DataSource();
// 设置Name,ConnectionProperties.DataProvider,ConnectionProperties.ConnectString

// 创建DataSet
GrapeCity.ActiveReports.PageReportModel.DataSet dataSet = new GrapeCity.ActiveReports.PageReportModel.DataSet();
dataSet.Name = "Sample DataSet";

// 创建Query
Query query = new Query();
query.DataSourceName = "Reels Database";
query.CommandType = QueryCommandType.Text;
query.CommandText = ExpressionInfo.FromString("select * from test t where rownum < 10");           
dataSet.Query = query;         

// 添加DataSet的Field

问题在这里,我希望通过ActiveReport的API,获取查询返回的结果集中的所有列。
在Designer运行时,编辑数据集的窗口里,在编写完sql语句后,通过点击“对号”,即可自动生成列,想知道这的自动生成是如何实现的,有没有对应的API

5 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-3-14 18:08:00
沙发
AR只会再运行时才会加载数据,所以你需要先查询该数据表,返回所有的列,并添加到Fields对象中,示例代码:
  1.     //创建并设置数据源对象
  2.     GrapeCity.ActiveReports.PageReportModel.DataSource myDataSource = new GrapeCity.ActiveReports.PageReportModel.DataSource();
  3.     myDataSource.Name = "Example Data Source";
  4.     myDataSource.ConnectionProperties.DataProvider = "OLEDB";
  5.     myDataSource.ConnectionProperties.ConnectString = connectionstring;
  6.             
  7.     //创建并设置数据集对象
  8.     GrapeCity.ActiveReports.PageReportModel.DataSet myDataSet = new GrapeCity.ActiveReports.PageReportModel.DataSet();
  9.     GrapeCity.ActiveReports.PageReportModel.Query myQuery = new GrapeCity.ActiveReports.PageReportModel.Query();
  10.     myDataSet.Name = "Example Data Set";
  11.     myQuery.DataSourceName = "Example Data Source";
  12.     myQuery.CommandType = GrapeCity.ActiveReports.PageReportModel.QueryCommandType.TableDirect;
  13.     myQuery.CommandText = GrapeCity.ActiveReports.Expressions.ExpressionInfo.FromString("Products");
  14.     myDataSet.Query = myQuery;
  15.             
  16.     // 填充数据集中的Fields
  17.     using (System.Data.OleDb.OleDbConnection connection = new System.Data.OleDb.OleDbConnection(connectionstring))
  18.     {
  19.         DataTable dt = new DataTable();

  20.         System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter("SELECT TOP 1 * FROM Products", connection);

  21.         connection.Open();
  22.         adapter.Fill(dt);
  23.         connection.Close();
  24.         foreach (DataColumn col in dt.Columns)
  25.         {
  26.             GrapeCity.ActiveReports.PageReportModel.Field _field = new GrapeCity.ActiveReports.PageReportModel.Field(col.Caption, col.Caption, null);
  27.             myDataSet.Fields.Add(_field);
  28.         }
  29.     }
复制代码
回复 使用道具 举报
myh441
论坛元老   /  发表于:2013-3-15 08:47:00
板凳
如果碰到绑定变量的时候怎么办呢?

我的想法是,遇到绑定变量时,都变成1 = 1
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-3-15 13:43:00
地板
变量是指 WHERE 子句中的参数吗,我不太明白你描述的功能。
回复 使用道具 举报
myh441
论坛元老   /  发表于:2013-3-15 14:28:00
5#
一些自己的实践而已,可以解决了。

谢谢dof,结贴
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-3-15 15:10:00
6#
OK
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部