using System; using System.Collections; using System.Data; using System.Data.SqlClient; using System.Configuration; using System.IO; using System.IO.Compression; ///////////////////////////////////////////////////////////////////////////////////////////////////////// //class SqlReportData 产生提供给报表生成需要的 或 JSON 数据 public class SqlReportData { //★特别提示★: //连接SQL Server数据库的连接串,应该修改为与实际一致。如果是运行Grid++Report本身的例子,应该首先附加例子数据库到 //SQL Server2000/2005数据库上。 //public const string SqlConnStr = "Data Source=(local);Initial Catalog=gridreport;Persist Security Info=True;User ID=sa;Password=;"; //public const string SqlConnStr = "Data Source=10.0.2.9;Initial Catalog=HX_LimsSys;Persist Security Info=True;User ID=HX_USER;Password=lc@841022;"; //public const string SqlConnStr = "Data Source=.;Initial Catalog=HX_LMESsys;Persist Security Info=True;User ID=HX_USER;Password=lc@841022;"; //public const string SqlConnStr = "Data Source=.;Initial Catalog=HX_LimsSys;Persist Security Info=True;User ID=HX_USER;Password=lc@841022;";//ch测试 //public const string SqlConnStr = "Data Source=47.96.97.237,15127;Initial Catalog=HX_LMESsys;Persist Security Info=True;User ID=HX_USER;Password=lc@841022;";//YL测试 //public const string SqlConnStr = "Data Source=47.96.97.237,15127;Initial Catalog=HX_LMESsys;Persist Security Info=True;User ID=HX_USER;Password=lc@841022;";//YSJ测试 //public const string SqlConnStr = "Data Source=10.11.18.195;Initial Catalog=HX_LMESsys_test;Persist Security Info=True;User ID=HX_USER;Password=lc@841022;"; //斯莫尔 //public const string SqlConnStr = "Data Source=30.10.7.6;Initial Catalog=HX_LMESsys_test;Persist Security Info=True;User ID=HX_USER;Password=lc@841022;"; //斯莫尔 //public const string SqlConnStr = "Data Source=192.168.0.245;Initial Catalog=HX_LMESsys;Persist Security Info=True;User ID=HX_USER;Password=lc@841022;";//帅威 //public const string SqlConnStr = "Data Source=10.10.1.1;Initial Catalog=HX_LMESsys;Persist Security Info=True;User ID=HX_USER;Password=lc@841022;";//乔一 //public const string SqlConnStr = "Data Source=192.168.1.251;Initial Catalog=HX_LMESsys;Persist Security Info=True;User ID=HX_USER;Password=lc@841022;";//乔一测试 //public const string SqlConnStr = "Data Source=192.168.16.53;Initial Catalog=HX_LMESsys;Persist Security Info=True;User ID=HX_USER;Password=lc@841022;";//龙山汽配 //public const string SqlConnStr = @"Data Source=192.168.0.193\SWE2014;Initial Catalog=HX_LimsSys;Persist Security Info=True;User ID=HX_USER;Password=lc@841022;";//丸井地址 //public const string SqlConnStr = "Data Source=192.168.0.175;Initial Catalog=HX_LimsSys;Persist Security Info=True;User ID=HX_USER;Password=lc@841022;";//雅琪诺测试 //public const string SqlConnStr = "Data Source=.;Initial Catalog=HX_LMESsys;Persist Security Info=True;User ID=HX_USER;Password=lc@841022;";//凯贝奈特 //public const string SqlConnStr = "Data Source=192.168.0.199;Initial Catalog=HX_LMESsys;Persist Security Info=True;User ID=HX_USER;Password=lc@841022;";//瑞琪 public const string SqlConnStr = "Data Source=192.168.2.10;Initial Catalog=HX_LMESsys;Persist Security Info=True;User ID=HX_USER;Password=lc@841022;";//九菱电机 //public const string SqlConnStr = "Data Source=192.168.1.8;Initial Catalog=HX_LMESsys;Persist Security Info=True;User ID=HX_USER;Password=lc@841022;";//添康科技 //public const string SqlConnStr = "Data Source=192.168.6.5;Initial Catalog=HX_LMESsys;Persist Security Info=True;User ID=HX_USER;Password=lc@841022;";//舜成 //public string sServer; //public string sDataBase; //public string sUser; //public string sPassword; //public const string SqlConnStr=""; //protected void Page_Load(object sender, EventArgs e) //{ // sServer = Pub_Class.ClsIni.ReadIni("Erp", "Server", Pub_Class.ClsPub.AppPath + @"\" + "HXErp.ini"); // sDataBase = Pub_Class.ClsIni.ReadIni("Erp", "DataBase", Pub_Class.ClsPub.AppPath + @"\" + "HXErp.ini"); // sUser = Pub_Class.ClsIni.ReadIni("Erp", "UserName", Pub_Class.ClsPub.AppPath + @"\" + "HXErp.ini"); // sPassword = Pub_Class.ClsIni.ReadIni("Erp", "PassWord", Pub_Class.ClsPub.AppPath + @"\" + "HXErp.ini"); // SqlConnStr = "Data Source=" + sServer + // ";Initial Catalog=" + sDataBase + // ";Persist Security Info=True;"+ // "User ID=" + sUser + // ";Password=" + sPassword + ";"; //} //定义在SQL中表示日期值的包围符号,Access用“#”, 而MS SQl Server用“'”,为了生成两者都可用的查询SQL语句,将其参数化定义出来。这样处理只是为了演示例子方便 public const char DateSqlBracketChar = '\''; //根据查询SQL,产生提供给报表生成需要的 XML 数据,字段值为空也产生数据 public static void FullGenNodeXmlData(System.Web.UI.Page DataPage, string QuerySQL, bool ToCompress) { SqlConnection ReportConn = new SqlConnection(SqlConnStr); SqlCommand ReportDataCommand = new SqlCommand(QuerySQL, ReportConn); ReportConn.Open(); SqlDataReader ReportDataReader = ReportDataCommand.ExecuteReader(); XMLReportData.GenNodeXmlDataFromReader(DataPage, ReportDataReader, ToCompress ? ResponseDataType.ZipBinary : ResponseDataType.PlainText); ReportDataReader.Close(); ReportConn.Close(); } //获取 Count(*) SQL 查询到的数据行数。参数 QuerySQL 指定获取报表数据的查询SQL public static int BatchGetDataCount(string QuerySQL) { int Total = 0; SqlConnection ReportConn = new SqlConnection(SqlConnStr); SqlCommand ReportDataCommand = new SqlCommand(QuerySQL, ReportConn); ReportConn.Open(); SqlDataReader ReportDataReader = ReportDataCommand.ExecuteReader(); if (ReportDataReader.Read()) Total = ReportDataReader.GetInt32(0); ReportDataReader.Close(); ReportConn.Close(); return Total; } //<>protected function //特别提示:以下函数为兼容以前版本而保留,请勿再用之,无须兼容考虑可删除之 //<<保留前面版本的函数,兼容以前版本所写程序 //根据查询SQL,产生提供给报表生成需要的 XML 数据,采用 Sql 数据引擎 public static void GenNodeXmlData(System.Web.UI.Page DataPage, string QuerySQL, bool ToCompress) { DoGenDetailData(DataPage, QuerySQL, ToCompress ? ResponseDataType.ZipBinary : ResponseDataType.PlainText, false); } //根据查询SQL,产生提供给报表生成需要的 XML 数据,采用 Sql 数据引擎, 这里只产生报表参数数据 //当报表没有明细时,调用本方法生成数据,查询SQL应该只能查询出一条记录 public static void GenParameterReportData(System.Web.UI.Page DataPage, string ParameterQuerySQL) { DoGenDetailData(DataPage, ParameterQuerySQL, ResponseDataType.PlainText, false); } //根据查询SQL,产生提供给报表生成需要的 XML 数据,采用 Sql 数据引擎, 根据RecordsetQuerySQL获取报表明细数据,根据ParameterQuerySQL获取报表参数数据 public static void GenEntireReportData(System.Web.UI.Page DataPage, string RecordsetQuerySQL, string ParameterQuerySQL, bool ToCompress) { SqlConnection ReportConn = new SqlConnection(SqlConnStr); DataSet ReportDataSet = new DataSet(); ReportConn.Open(); SqlDataAdapter DataAdapter1 = new SqlDataAdapter(RecordsetQuerySQL, ReportConn); DataAdapter1.Fill(ReportDataSet, "Detail"); SqlDataAdapter DataAdapter2 = new SqlDataAdapter(ParameterQuerySQL, ReportConn); DataAdapter2.Fill(ReportDataSet, "Master"); ReportConn.Close(); XMLReportData.GenDataSet(DataPage, ReportDataSet, ReportDataBase.DefaultDataType); } //>>保留前面版本的函数,兼容以前版本所写程序 } ///////////////////////////////////////////////////////////////////////////////////////////////////////// //class SqlXMLReportData 根据SQL产生报表需要的 XML 数据,采用 Sql 数据引擎 public class SqlXMLReportData : SqlReportData { public static void GenOneRecordset(System.Web.UI.Page DataPage, string QuerySQL) { LogService.Write("打印sql:" + QuerySQL); SqlReportData.DoGenDetailData(DataPage, QuerySQL, ReportDataBase.DefaultDataType, false); } public static void GenMultiRecordset(System.Web.UI.Page DataPage, ArrayList QueryList) { SqlConnection ReportConn = new SqlConnection(SqlConnStr); DataSet ReportDataSet = new DataSet(); ReportConn.Open(); foreach (ReportQueryItem item in QueryList) { SqlDataAdapter DataAdapter = new SqlDataAdapter(item.QuerySQL, ReportConn); DataAdapter.Fill(ReportDataSet, item.RecordsetName); } ReportConn.Close(); XMLReportData.GenDataSet(DataPage, ReportDataSet, ReportDataBase.DefaultDataType); } //特别提示:以下函数为兼容以前版本而保留,请勿再用之,无须兼容考虑可删除之 //<<保留前面版本的函数,兼容以前版本所写程序 //产生报表明细记录数据,数据将被加载到明细网格的记录集中 public static void GenDetailData(System.Web.UI.Page DataPage, string QuerySQL) { GenOneRecordset(DataPage, QuerySQL); } //这里只产生报表参数数据,数据加载到报表参数、非明细网格中的部件框中 //当报表没有明细时,调用本方法生成数据,查询SQL应该只能查询出一条记录 public static void GenParameterData(System.Web.UI.Page DataPage, string ParameterQuerySQL) { GenOneRecordset(DataPage, ParameterQuerySQL); } //根据RecordsetQuerySQL获取报表明细数据,对应数据加载到报表的明细网格的记录集中 //根据ParameterQuerySQL获取报表参数数据,对应数据加载到报表参数、非明细网格中的部件框中 public static void GenEntireData(System.Web.UI.Page DataPage, string RecordsetQuerySQL, string ParameterQuerySQL, ResponseDataType DataType) { ArrayList QueryList = new ArrayList(); QueryList.Add(new ReportQueryItem(RecordsetQuerySQL, "Detail")); QueryList.Add(new ReportQueryItem(ParameterQuerySQL, "Master")); GenMultiRecordset(DataPage, QueryList); } public static void GenEntireData1(System.Web.UI.Page DataPage, System.Collections.Generic.List SqlList) { ArrayList QueryList = new ArrayList(); for (int i = 0; i < SqlList.Count; i++) { QueryList.Add(new ReportQueryItem(SqlList[i].QuerySQL, SqlList[i].RecordsetName)); } GenMultiRecordset(DataPage, QueryList); } public static void GenEntireData(System.Web.UI.Page DataPage, string RecordsetQuerySQL, string ParameterQuerySQL) { GenEntireData(DataPage, RecordsetQuerySQL, ParameterQuerySQL, ReportDataBase.DefaultDataType); } //>>保留前面版本的函数,兼容以前版本所写程序 } ///////////////////////////////////////////////////////////////////////////////////////////////////////// //class SqlJsonReportData 根据SQL产生报表需要的 JSON 数据,采用 Sql 数据引擎 public class SqlJsonReportData : SqlReportData { public static void GenOneRecordset(System.Web.UI.Page DataPage, string QuerySQL) { SqlReportData.DoGenDetailData(DataPage, QuerySQL, ReportDataBase.DefaultDataType, true); } public static void GenMultiRecordset(System.Web.UI.Page DataPage, ArrayList QueryList) { SqlConnection ReportConn = new SqlConnection(SqlConnStr); DataSet ReportDataSet = new DataSet(); ReportConn.Open(); foreach (ReportQueryItem item in QueryList) { SqlDataAdapter DataAdapter = new SqlDataAdapter(item.QuerySQL, ReportConn); DataAdapter.Fill(ReportDataSet, item.RecordsetName); } ReportConn.Close(); JSONReportData.GenDataSet(DataPage, ReportDataSet, ReportDataBase.DefaultDataType); } //特别提示:以下函数为兼容以前版本而保留,请勿再用之,无须兼容考虑可删除之 //<<保留前面版本的函数,兼容以前版本所写程序 //产生报表明细记录数据,数据将被加载到明细网格的记录集中 public static void GenDetailData(System.Web.UI.Page DataPage, string QuerySQL) { GenOneRecordset(DataPage, QuerySQL); } //这里只产生报表参数数据,数据将加载到报表参数、非明细网格中的部件框中 //当报表没有明细时,调用本方法生成数据,查询SQL应该只能查询出一条记录 public static void GenParameterData(System.Web.UI.Page DataPage, string ParameterQuerySQL) { GenOneRecordset(DataPage, ParameterQuerySQL); } //根据RecordsetQuerySQL获取报表明细数据,对应数据加载到报表的明细网格的记录集中 //根据ParameterQuerySQL获取报表参数数据,对应数据加载到报表参数、非明细网格中的部件框中 public static void GenEntireData(System.Web.UI.Page DataPage, string RecordsetQuerySQL, string ParameterQuerySQL, ResponseDataType DataType) { ArrayList QueryList = new ArrayList(); QueryList.Add(new ReportQueryItem(RecordsetQuerySQL, "Detail")); QueryList.Add(new ReportQueryItem(ParameterQuerySQL, "Master")); GenMultiRecordset(DataPage, QueryList); } public static void GenEntireData(System.Web.UI.Page DataPage, string RecordsetQuerySQL, string ParameterQuerySQL) { GenEntireData(DataPage, RecordsetQuerySQL, ParameterQuerySQL, ReportDataBase.DefaultDataType); } //>>保留前面版本的函数,兼容以前版本所写程序 }