{ dr[x] = cs[pos++].FormattedValue; } dt.Rows.Add(dr); } return dt; } 5、程序调用 BaseComponent.Data.SqlAnalysisService sa = new SqlAnalysisService("Data Source=localhost;Catalog=LibraryStat"); protected void Page_Load(object sender, EventArgs e) { StringBuilder sb=new StringBuilder(); sb.Append("with "); sb.Append(" set [AllCount] as '[图书分销 订单].[层次结构].[单位].[安徽大学 图书馆].Children'"); sb.Append(" Member [图书分销 订单].[层次结构].[单位].[安徽大学 图书馆].[合计] as 'aggregate([AllCount])'"); sb.Append(" Member [所占订单数百分比] as '[订单数量]/([订单数量],[图书分销 订单].[层次结构].[单位].[安徽大学 图书馆].[合计])',format_string='#.00%'"); sb.Append(" select {[Measures].[订单数量],[Measures].[储运数量],[Measures].[原始数量],[所占订单数百分比]} on columns,"); sb.Append(" {[图书分销 订单].[层次结构].[单位].[安徽大学 图书馆].Children} on rows"); sb.Append(" from [图书馆统计]"); DataTable dt = sa.GetDataTable(sb.ToString()); gv.DataSource = dt; gv.DataBind(); } gv为一个GridView对象。除了查询语句不同,数据绑定是一样的,因为已经转换为DataTable了。 四、备注 命名空间:Microsoft.AnalysisServices.AdomdClient 程序集文件:Microsoft.AnalysisServices.AdomdClient.dll(Microsoft SQL Server 2005为9.0版;Microsoft SQL Server 2000为8.0版) 有AdomdClient当然有AdomdServer,分析服务也包含了存储过程和CLR的存储过程。 五、后记 l 理论上本例也可以在Microsoft SQL Server 2000下运行。但是我的同事在WebForm下应用时出现错误。 l 在微软推出Microsoft SQL Server 2005之后,微软又为分析服务提供了多种访问方式。 下次有时间讲讲如何定时从SQL 2005更 |