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

📄 designreportmanageinfo.cs

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

namespace TreeReportApp
{
	/// <summary>
	/// ReportManageInfo---摘要说明:
	/// 保存一个报表的管理信息,对报表的管理信息进行增、删、改操作
	/// 如果报表ID变了,要重设置“可配置信息对象”,保证管理和配置数据一致性。
	/// 如果数据字典ID变了,要更新数据域列表界面。
	/// </summary>
	public class ReportManageInfo
	{
		//报表的管理信息,与数据库表中的字段对应
		public string _ReportID;
		public string _EReportName;
		public string _CReportName;
		public string _HReportName;
		public string _ManageCategory;
		public string _BusinessDictID;
		public string _SQLStr;
		public string _ReportPath;
		//public string _ReportFile;
		public string _ReportOwner;
		public string _ReportUser;

		//为方便维护数据的一致性,而设的引用变量
		public TreeReportConfigInfo _ConfigInfo;//引用配置信息
		public TreeReportDesignFrm _DesignFrm;//引用主设计窗体对象

		public bool IsDirty;

		private System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection();

		
		public ReportManageInfo( TreeReportConfigInfo cfginfo,TreeReportDesignFrm designfrm)
		{
			//连接据库,这段程序用一个公共连接类代替
			conn.ConnectionString = TreeConnection.connstr;

			_ConfigInfo = cfginfo;
			_DesignFrm = designfrm;

            initReportManageInfo();
			IsDirty = false;
		}

		/// <summary>
		/// initReportManageInfo---初始化
		/// </summary>
		public void initReportManageInfo()
		{
			_ManageCategory = "";
			
			//_ReportID = "";
			setReportID("");

			_EReportName = "";
			_CReportName = "";
			_HReportName = "";
			//_BusinessDictID = "";
			setReportDataDict("");
			_SQLStr = "";
			_ReportPath = "";
			//_ReportFile = "";
			_ReportOwner = "";
			_ReportUser = "";

			//保证配置信息与管理信息的一致
			//_ConfigInfo.setReportId(_ReportID);
		}

		/// <summary>
		/// setReportDataDict --设置数据字典,并开更新界面
		/// </summary>
		public void setReportDataDict(string BusinessDictID)
		{
			_BusinessDictID = BusinessDictID;
			_DesignFrm.UpdateDataDictView(_BusinessDictID);
		}

		/// <summary>
		/// setReportID -- 报表ID变更时,重设置可配置信息。
		/// </summary>
		public void setReportID(string reportid)
		{
			_ReportID = reportid;

			//保证配置信息与管理信息的一致
			if(!_ReportID.Equals(_ConfigInfo.getReportId()))
				_ConfigInfo.setReportId(_ReportID);
		}

		

		/// <summary>
		/// IsExistReportManage---数据表中是否已存在此ID的报表信息
		/// </summary>
		public bool IsExistReportManage(string reportid)
		{
			if (conn.State == System.Data.ConnectionState.Closed)
				conn.Open();//打开数据库

			System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand("select count(*) from ReportsManage where ReportID='" + reportid + "'",conn);
			int rowcount = Convert.ToInt32(cmd.ExecuteScalar().ToString());
			conn.Close();

			if (rowcount==0)
			   return false;
			else
				return true;

		}

		/// <summary>
		/// IsExistReportManage---数据表中是否已存在此ID的报表信息
		/// </summary>
		public static bool IsExistReportManage(string reportid, System.Data.OleDb.OleDbConnection dbconn)
		{
			System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand("select count(*) from ReportsManage where ReportID='" + reportid + "'",dbconn);
			int rowcount = Convert.ToInt32(cmd.ExecuteScalar().ToString());

			if (rowcount==0)
				return false;
			else
				return true;

		}


		/// <summary>
		/// DeleteReportManage---从数据表中删此ID的报表信息
		/// </summary>
		public bool DeleteReportManage(string reportid)
		{
			if (conn.State == System.Data.ConnectionState.Closed)
				conn.Open();//打开数据库
			
			System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand("delete from from ReportsManage where ReportID='" + reportid + "'",conn);
			int affectrows = cmd.ExecuteNonQuery();

			//通关数据表间级联式的外键引用关系自动维护数据的一致性,所以把下面一段注掉,以提高效率
			/*
			cmd.CommandText = "delete from from Reportsconfigurable where ReportID='" + reportid + "'";
			cmd.ExecuteNonQuery();

			cmd.CommandText = "delete from from ReportsUserConfigInfo where ReportID='" + reportid + "'";
			cmd.ExecuteNonQuery();
			*/
			conn.Close();

			if (affectrows>0)
				return true;
			
			return false;
		}

		/// <summary>
		/// DeleteReportManage---从数据表中删此ID的报表信息
		/// </summary>
		public static bool DeleteReportManage(string reportid, System.Data.OleDb.OleDbConnection dbconn)
		{
			System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand("delete from from ReportsManage where ReportID='" + reportid + "'",dbconn);
			int affectrows = cmd.ExecuteNonQuery();
			
			//通关数据表间级联式的外键引用关系自动维护数据的一致性,所以把下面一段注掉,以提高效率
			/*
			cmd.CommandText = "delete from from Reportsconfigurable where ReportID='" + reportid + "'";
			cmd.ExecuteNonQuery();

			cmd.CommandText = "delete from from ReportsUserConfigInfo where ReportID='" + reportid + "'";
			cmd.ExecuteNonQuery();
			*/

			if (affectrows>0)
				return true;
			
			return false;
		}

        
		/// <summary>
		/// LoadReportManageInfoFromDB---从数据表中读出此reportID的报表信息
		/// </summary>
		public bool LoadReportManageInfoFromDB(string reportid)
		{
			initReportManageInfo();

			if(reportid.Length==0)
				return false;

			if (conn.State == System.Data.ConnectionState.Closed)
				conn.Open();//打开数据库

			System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand("select * from ReportsManage where ReportID='" + reportid + "'",conn);
			System.Data.OleDb.OleDbDataReader rd = cmd.ExecuteReader();
			
			bool resultflag = false;
			if (rd.Read())
			{
				_ManageCategory = (rd.IsDBNull(rd.GetOrdinal("ManageCategory"))?"":rd.GetString(rd.GetOrdinal("ManageCategory")));
				
				//_ReportID = (rd.IsDBNull(rd.GetOrdinal("ReportID"))?"":rd.GetString(rd.GetOrdinal("ReportID")));
				setReportID(reportid);

				_EReportName = (rd.IsDBNull(rd.GetOrdinal("EReportName"))?"":rd.GetString(rd.GetOrdinal("EReportName")));
				_CReportName = (rd.IsDBNull(rd.GetOrdinal("CReportName"))?"":rd.GetString(rd.GetOrdinal("CReportName")));
				_HReportName = (rd.IsDBNull(rd.GetOrdinal("HReportName"))?"":rd.GetString(rd.GetOrdinal("HReportName")));

				//_BusinessDictID = (rd.IsDBNull(rd.GetOrdinal("BusinessDictID"))?"":rd.GetString(rd.GetOrdinal("BusinessDictID")));
				setReportDataDict((rd.IsDBNull(rd.GetOrdinal("BusinessDictID"))?"":rd.GetString(rd.GetOrdinal("BusinessDictID"))));
				
				_SQLStr = (rd.IsDBNull(rd.GetOrdinal("SQLStr"))?"":rd.GetString(rd.GetOrdinal("SQLStr")));
				_ReportPath = (rd.IsDBNull(rd.GetOrdinal("ReportPath"))?"":rd.GetString(rd.GetOrdinal("ReportPath")));
				//_ReportFile = (rd.IsDBNull(rd.GetOrdinal("ReportFile"))?"":rd.GetString(rd.GetOrdinal("ReportFile")));
				_ReportOwner = (rd.IsDBNull(rd.GetOrdinal("ReportOwner"))?"":rd.GetString(rd.GetOrdinal("ReportOwner")));
				_ReportUser = (rd.IsDBNull(rd.GetOrdinal("ReportUser"))?"":rd.GetString(rd.GetOrdinal("ReportUser")));
				
				 resultflag = true;
			}
			
			rd.Close();
			conn.Close();

			//保证配置信息与管理信息的一致
			//_ConfigInfo.setReportId(_ReportID);//在setReportID(reportid)中已执行

			return resultflag;
		}

		/// <summary>
		/// ReadReportManageInfoFromRmx --从文件读出报表的管理信息
		/// </summary>
		public bool LoadReportManageInfoFromRmx(string ManageInfofile)
		{
			initReportManageInfo();

			string pathstr = ManageInfofile;
			if (!pathstr.ToUpper().EndsWith(".RMX"))
			{
				int n = pathstr.LastIndexOf(".");
				if (n>=0)
					pathstr = pathstr.Substring(0,n) + ".rmx";
				else
					pathstr = pathstr + ".rmx";
			}

			
			try
			{
				System.Data.DataSet ds = new DataSet();
				ds.ReadXml(pathstr);

				System.Data.DataRow rw = ds.Tables["ReportsManage"].Rows[0];

				_ManageCategory = rw["ManageCategory"].ToString();

				//_ReportID = rw["ReportID"].ToString()
				setReportID(rw["ReportID"].ToString());
				//从文件载入可配置数据
				_ConfigInfo.loadReportConfigInfoFromRcx(ManageInfofile);

				
				_EReportName = rw["EReportName"].ToString();
				_CReportName = rw["CReportName"].ToString();
				_HReportName = rw["HReportName"].ToString();

				//_BusinessDictID = rw["BusinessDictID"].ToString();
				setReportDataDict(rw["BusinessDictID"].ToString());

				_SQLStr = rw["SQLStr"].ToString();
				_ReportPath = rw["ReportPath"].ToString();
				//_ReportFile = rw["ReportFile"].ToString();
				_ReportOwner = rw["ReportOwner"].ToString();
				_ReportUser = rw["ReportUser"].ToString();
				
				ds.Dispose();
				return true;
			}
			catch
			{
				//MessageBox.Show("出错:" + e.Message.ToString());
			}
			
			return false;
		}

		/// <summary>
		/// WriteReportManageInfo---写报表的管理信息到文件
		/// </summary>
		public bool WriteReportManageInfo(string ManageInfofile)
		{
			if ((""+_ReportID).Length==0)
				return false;

            string pathstr = ManageInfofile;

			//把可配置数据写到rcx文件
			_ConfigInfo.writeReportConfigInfoToRcx(pathstr);

			if (!pathstr.ToUpper().EndsWith(".RMX"))
			{
				int n = pathstr.LastIndexOf(".");
				if (n>=0)
				    pathstr = pathstr.Substring(0,n) + ".rmx";
				else
					pathstr = pathstr + ".rmx";
			}

			try
			{
				//建立一个数据集(XML文档)
				System.Data.DataSet ds = new DataSet();
				System.Data.DataTable _reportsTable = ds.Tables.Add("ReportsManage");
				
				_reportsTable.Columns.Add("ManageCategory",typeof(string));
				_reportsTable.Columns.Add("ReportID", typeof(string));
				_reportsTable.Columns.Add("EReportName", typeof(string));
				_reportsTable.Columns.Add("CReportName", typeof(string));
				_reportsTable.Columns.Add("HReportName", typeof(string));

				_reportsTable.Columns.Add("BusinessDictID",typeof(string));
				_reportsTable.Columns.Add("SQLStr",typeof(string));
				_reportsTable.Columns.Add("ReportPath",typeof(string));
				//_reportsTable.Columns.Add("ReportFile",typeof(string));
				_reportsTable.Columns.Add("ReportOwner",typeof(string));
				_reportsTable.Columns.Add("ReportUser",typeof(string));

				System.Data.DataRow rw = _reportsTable.NewRow();

				rw["ManageCategory"] = _ManageCategory;
				rw["ReportID"] = _ReportID;
				rw["EReportName"] = _EReportName;
				rw["CReportName"] = _CReportName;
				rw["HReportName"] = _HReportName;
				rw["BusinessDictID"] = _BusinessDictID;
				rw["SQLStr"] = _SQLStr;
				rw["ReportPath"] = _ReportPath;
				//rw["ReportFile"] = _ReportFile;
				rw["ReportOwner"] = _ReportOwner;
				rw["ReportUser"] = _ReportUser;

				_reportsTable.Rows.Add(rw);
				
				ds.WriteXml(pathstr);
				IsDirty = false;

				return true;
			}
			catch
			{
				//MessageBox.Show("出错:" + e.Message.ToString());
			}
			
			return false;
		}

		
		
		/// <summary>
		/// WriteReportManageInfo---把此reportID的报表信息写入数据表中)
		/// </summary>
		public bool WriteReportManageInfo()
		{
			if ((""+_ReportID).Length==0)
				return false;

			if (conn.State == System.Data.ConnectionState.Closed)
				conn.Open();//打开数据库

			bool resultflag = false;
			try
			{
				System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand("",conn);
				if (IsExistReportManage(_ReportID,conn))
				{
					cmd.CommandText =  "update ReportsManage set ";
					cmd.CommandText += "ManageCategory='"+_ManageCategory + "',";
					cmd.CommandText += "EReportName='"+_EReportName + "',";
					cmd.CommandText += "CReportName='"+_CReportName + "',";
					cmd.CommandText += "HReportName='"+_HReportName + "',";
					cmd.CommandText += "BusinessDictID='"+_BusinessDictID + "',";
					cmd.CommandText += "SQLStr='"+_SQLStr + "',";
					cmd.CommandText += "ReportPath='"+_ReportPath + "',";
					//cmd.CommandText += "ReportFile='"+_ReportFile + "',";
					cmd.CommandText += "ReportOwner='"+_ReportOwner + "',";
					cmd.CommandText += "ReportUser='"+_ReportUser + "' ";
					cmd.CommandText += "where ReportID='" + _ReportID + "'";
				}
				else
				{
					//cmd.CommandText =  "insert into ReportsManage (ReportID,ManageCategory,EReportName,CReportName,HReportName,BusinessDictID,SQLStr,ReportPath,ReportFile,ReportOwner,ReportUser) values(";
					cmd.CommandText =  "insert into ReportsManage (ReportID,ManageCategory,EReportName,CReportName,HReportName,BusinessDictID,SQLStr,ReportPath,ReportOwner,ReportUser) values(";
					cmd.CommandText += "'" + _ReportID + "',";
					cmd.CommandText += "'" + _ManageCategory + "',";
					cmd.CommandText += "'" + _EReportName + "',";
					cmd.CommandText += "'" + _CReportName + "',";
					cmd.CommandText += "'" + _HReportName + "',";
					cmd.CommandText += (_BusinessDictID.Length==0)? "NULL":("'" + _BusinessDictID + "'");
					cmd.CommandText += ",'" + _SQLStr + "',";
					cmd.CommandText += "'" + _ReportPath + "',";
					//cmd.CommandText += "'" + _ReportFile + "',";
					cmd.CommandText += "'" + _ReportOwner + "',";
					cmd.CommandText += "'" + _ReportUser + "')";
				}

				int affectrows = cmd.ExecuteNonQuery();


				//保证配置信息与管理信息的一致
				bool IsConfigSaved =  _ConfigInfo.writeReportConfigInfo();

				if (affectrows>0 && IsConfigSaved==true)
					resultflag = true;//return true;
			}
			catch //(Exception e)
			{
				//MessageBox.Show("出错:" + e.Message.ToString());
			}

			conn.Close();

			IsDirty = false;
			return resultflag;			
		}

		public static DataTable getManageCatalogList()
		{
			System.Data.OleDb.OleDbConnection thisconn = new System.Data.OleDb.OleDbConnection();
			//连接据库,这段程序用一个公共连接类代替
			thisconn.ConnectionString = TreeConnection.connstr;
			thisconn.Open();

			System.Data.OleDb.OleDbDataAdapter adaptercmd = new System.Data.OleDb.OleDbDataAdapter("SELECT DISTINCT ManageCategory from ReportsManage",thisconn);
			System.Data.DataTable datatable = new  DataTable();
			adaptercmd.Fill(datatable);

			thisconn.Close();

			return datatable;
		}





	}
}

⌨️ 快捷键说明

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