⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 runreportinfo.cs

📁 树形逻辑报表程序源码,能根居元数据定义拖拉开发新的报表.
💻 CS
字号:
using System;
using System.Data;
using System.Data.OleDb;

namespace TreeReportApp
{
	/// <summary>
	/// RunReportInfo 的摘要:报表管理及配置信息的数据实体类
	///                     当前报表的管理、可配置、用户配置、搜索条件配置等集中信息对象
	/// </summary>
	public class RunReportInfo
	{
		/// <summary>
		//当前报表的管理、可配置、用户配置、搜索条件配置等集中信息(数据集)
		/// </summary>
		public DataSet infodataset;
		private OleDbDataAdapter adapter_manageinfo,adapter_dictioninfo,adapter_configurabl,adapter_configinfo,adapter_searchfields;

		/// <summary>
		//从数居字典中得到的数据源SQL,或原报表布局文件的数据源SQL
		/// </summary>
		public string datasourceSQL = "";
		 
		/// <summary>
		//标明从数居字典中得到的数据源SQL,是否是特别定义的SQLStr
		/// </summary>
		public bool IsNotSqlStrInDict = true;

		public RunReportInfo()
		{
			infodataset = new DataSet("reportinfo");
		}

		/// <summary>
		/// readReportInfo(string report_id) -- 从数据库中读取报表信息
		/// </summary>
		public bool readReportInfoFromDB(string report_id)
		{
			OleDbConnection conn = new OleDbConnection();
			conn.ConnectionString = TreeConnection.connstr;
			conn.Open();

			bool resultflag = true;
			try
			{
				infodataset.Clear();
			
				adapter_manageinfo = new OleDbDataAdapter("SELECT * FROM ReportsManage WHERE ReportID='"+report_id+"'",conn);
				adapter_manageinfo.Fill(infodataset,"ManageInfo");

				adapter_configurabl = new OleDbDataAdapter("SELECT * FROM Reportsconfigurable WHERE ReportID='"+report_id+"'",conn);
				adapter_configurabl.Fill(infodataset,"Configurable");

				adapter_configinfo = new OleDbDataAdapter("SELECT * FROM ReportsUserConfigInfo WHERE ReportID='"+report_id+"'",conn);
				adapter_configinfo.Fill(infodataset,"ConfigInfo");

				adapter_searchfields = new OleDbDataAdapter("SELECT * FROM ReportSearchField WHERE ReportID='"+report_id+"'",conn);
				adapter_searchfields.Fill(infodataset,"Searchfields");

				string datadict_id = ""+this.getManageInfo().Rows[0]["BusinessDictID"];
				adapter_dictioninfo = new OleDbDataAdapter("SELECT ItemName,EItemDescription,CItemDescription,HItemDescription FROM TreeDbObjectInfos_items WHERE ObjectName='"+datadict_id+"'",conn);
				adapter_dictioninfo.Fill(infodataset,"DictionInfo");

				//建立可配置信息与配置信息的关系
				//DataColumn[] parentCols = new DataColumn[2];
				//DataColumn[] childCols = new DataColumn[2];
				//parentCols(0) = infodataset.Tables["Configurable"].Columns["ReportID"];
				//parentCols(1) = infodataset.Tables["Configurable"].Columns["ControlID"];
				//childCols(0) = infodataset.Tables["ConfigInfo"].Columns["ReportID"];
				//childCols(1) = infodataset.Tables["ConfigInfo"].Columns["ControlID"];
                //DataRelation configrelation = new DataRelation("config", parentCols, childCols);
			}
			catch
			{
				resultflag = false;
			}

			conn.Close();

			return resultflag;
		}

		/// <summary>
		/// getManageInfo() -- 取管理信息
		/// </summary>
		public DataTable getManageInfo()
		{
			return infodataset.Tables["ManageInfo"];
		}

		/// <summary>
		/// getDictionInfo() -- 取数据字典信息
		/// </summary>
		public DataTable getDictionInfo()
		{
			return infodataset.Tables["DictionInfo"];
		}

		/// <summary>
		/// getConfigurableInfo() -- 取可配置信息
		/// </summary>
		public DataTable getConfigurableInfo()
		{
			return infodataset.Tables["Configurable"];
		}

		/// <summary>
		/// getConfigInfo() -- 取配置信息
		/// </summary>
		public DataTable getConfigInfo()
		{
			return infodataset.Tables["ConfigInfo"];
		}

		/// <summary>
		/// getConfigInfoRow -- 取配置信息
		/// </summary>
		public DataRow getConfigInfoRow(string control_id)
		{
			DataRow[] inforows = infodataset.Tables["ConfigInfo"].Select("ControlID='"+control_id +"'");
			if(inforows.Length==0)
				return null;
			else
				return inforows[0];
		}

		/// <summary>
		/// getSearchfieldsInfo() -- 取搜索条件信息
		/// </summary>
		public DataTable getSearchfieldsInfo()
		{
			return infodataset.Tables["Searchfields"];
		}

		/// <summary>
		/// getConfigurableRow -- //查看可配置信息
		/// </summary>
		public DataRow getConfigurableRow( string control_id)
		{
			DataRow[] configurablerows = getConfigurableInfo().Select("ControlID='"+control_id+"'");
			if (configurablerows.Length==0)
				return null;
			
			return configurablerows[0];			
		}


		/// <summary>
		/// saveUserConfigInfo() -- 保存配置信息
		/// </summary>
		public void saveUserConfigInfo()
		{
			OleDbCommandBuilder cmdbuilder = new OleDbCommandBuilder(adapter_configinfo);
			adapter_configinfo.Update(infodataset,"ConfigInfo");
		}

		
		/// <summary>
		/// IsExistReportInfo(string report_id) -- 数据库中是否存在报表信息
		/// </summary>
		public int IsExistReportInfo(string report_id)
		{
			OleDbConnection conn = new OleDbConnection();
			conn.ConnectionString = TreeConnection.connstr;
			conn.Open();

			OleDbCommand cmd =  new OleDbCommand("SELECT count(*) FROM ReportsManage WHERE ReportID='"+report_id+"'",conn);
			int resultval = Convert.ToInt32(cmd.ExecuteScalar().ToString());

			conn.Close();

			return resultval;
		}


		/// <summary>
		/// getDataSourceSQLFromReportInfo -- 从报表信息中取出数据源SQL,并存放在datasourceSQL
		/// </summary>
		public bool readDataSourceSQLFromReportInfo()
		{
			//如果设置了数据字典,则数据字典优先,原数据源被丢弃,用数据字典重设,此函数要返回SQL  
			datasourceSQL = "";

			string datadictid = ""+this.getManageInfo().Rows[0]["BusinessDictID"];

			//如果没有设置数据字典,返回空串的SQL,使用布局文件中原带的SQL
			if(datadictid.Length==0)
				return false;

			OleDbConnection conn = new OleDbConnection();
			conn.ConnectionString = TreeConnection.connstr;
			conn.Open();

			//查找字典表中,此字典是否定义了特别的SQL串,应休选使用定义了的SQL串,没有SQL串,就把字典ID当表名或视图名
			System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand("select ObjectName,EDescription,CDescription,HDescription,SQLStr from TreeDbObjectInfos where ObjectName='"+ datadictid +"'",conn);
			System.Data.OleDb.OleDbDataReader rd = cmd.ExecuteReader();

			//查数据字典
			if(rd.Read())
			{
				datasourceSQL = "" + rd["SQLStr"];
			}

			rd.Close();
			conn.Close();
					

			//如果数据字典中设置了SQL语句,则使用SQL语句,否则使用datadictid作为表名或视图名
			if (datasourceSQL.Trim().Length>0)
			{
				IsNotSqlStrInDict = false;
			}
			else
			{
				datasourceSQL = datadictid;
				IsNotSqlStrInDict = true;
			}

			return true;

		}			
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -