📄 designreportmanageinfo.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 + -