/// <summary> /// 代码检查---根据条件在模板里面进行检查 /// </summary> /// <param name="sqlStr">查询条件</param> /// <param name="pGISID">分类代码</param> /// <returns></returns> private int CodeStandardizeCheck(string sqlStr) { Exception Error = null; SysCommon.DataBase.SysTable pSysTable = new SysCommon.DataBase.SysTable(); pSysTable.SetDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + m_TempletePath, SysCommon.enumDBConType.OLEDB, SysCommon.enumDBType.ACCESS, out Error); if (Error != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "连接库体出错!路径为:" + m_TempletePath); return(-1); } DataTable dt = pSysTable.GetSQLTable(sqlStr, out Error); if (Error != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "打开表格出错!"); pSysTable.CloseDbConnection(); return(-1); } if (dt.Rows.Count == 0) { //在模板里面没有找到该分类代码 pSysTable.CloseDbConnection(); return(0); } else { pSysTable.CloseDbConnection(); return(1); } }
/// <summary> /// 获得分类代码字段名 /// </summary> /// <param name="outErr"></param> /// <returns></returns> private string GetClassifyName1(out Exception outErr) { outErr = null; Exception eError = null; SysCommon.DataBase.SysTable pSysTable = new SysCommon.DataBase.SysTable(); pSysTable.SetDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + TopologyCheckClass.GeoDataCheckParaPath, SysCommon.enumDBConType.OLEDB, SysCommon.enumDBType.ACCESS, out eError); if (eError != null) { outErr = new Exception("连接库体出错!路径为:" + TopologyCheckClass.GeoDataCheckParaPath); pSysTable.CloseDbConnection(); return(""); } string str = "select * from GeoCheckPara where 参数ID=1";//分类代码信息 DataTable tempDt = pSysTable.GetSQLTable(str, out eError); if (eError != null || tempDt.Rows.Count == 0) { outErr = new Exception("获取分类代码名称信息出错!"); pSysTable.CloseDbConnection(); return(""); } pSysTable.CloseDbConnection(); string pClassifyName = tempDt.Rows[0]["参数值"].ToString();//分类代码字段名 return(pClassifyName); }
/// <summary> /// 代码检查---根据条件在模板里面进行检查 /// </summary> /// <param name="sqlStr">查询条件</param> /// <param name="pGISID">分类代码</param> /// <returns></returns> private int CodeStandardizeCheck(string sqlStr) { Exception Error = null; SysCommon.DataBase.SysTable pSysTable = new SysCommon.DataBase.SysTable(); pSysTable.SetDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + TopologyCheckClass.GeoDataCheckParaPath, SysCommon.enumDBConType.OLEDB, SysCommon.enumDBType.ACCESS, out Error); if (Error != null) { //SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "连接库体出错!路径为:" + TopologyCheckClass.GeoDataCheckParaPath); return(-1); } //pSysTable.DbConn = (Hook.DataCheckParaSet as IArcgisDataCheckParaSet).DbConnPara; //pSysTable.DBType = SysCommon.enumDBType.ACCESS; //pSysTable.DBConType = SysCommon.enumDBConType.OLEDB; DataTable dt = pSysTable.GetSQLTable(sqlStr, out Error); if (Error != null) { //SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "打开表格出错!"); pSysTable.CloseDbConnection(); return(-1); } if (dt.Rows.Count == 0) { //在模板里面没有找到该分类代码 pSysTable.CloseDbConnection(); return(0); } else { pSysTable.CloseDbConnection(); return(1); } }
private Dictionary <string, Type> AddField() { Exception eError = null; Dictionary <string, Type> fieldDic = new Dictionary <string, Type>(); if (ConnStr == "") { return(null); } SysCommon.DataBase.SysTable pSysDB = new SysCommon.DataBase.SysTable(); pSysDB.SetDbConnection(ConnStr, SysCommon.enumDBConType.ORACLE, SysCommon.enumDBType.ORACLE, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "连接元数据库失败!"); pSysDB.CloseDbConnection(); return(null); } string pTableName = ""; if (cmbType.Text == "标准图幅") { pTableName = "StandardMapMDTable"; } else if (cmbType.Text == "非标准图幅") { pTableName = "NonstandardMapMDTable"; } else if (cmbType.Text == "控制点数据") { pTableName = "ControlPointMDTable"; } DataTable pTable = pSysDB.GetTable(pTableName, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "获取源数据信息表失败!"); pSysDB.CloseDbConnection(); return(null); } pSysDB.CloseDbConnection(); for (int i = 0; i < pTable.Columns.Count; i++) { if (pTable.Columns[i].ColumnName.ToString().Trim() == "ID") { continue; } if (pTable.Columns[i].ColumnName.ToString().Trim() == "图形数据") { continue; } if (!cmbField.Items.Contains(pTable.Columns[i].ColumnName.ToString().Trim())) { cmbField.Items.Add(pTable.Columns[i].ColumnName.ToString().Trim()); fieldDic.Add(pTable.Columns[i].ColumnName.ToString().Trim(), pTable.Columns[i].DataType); } } return(fieldDic); }
/// <summary> /// 初始化列表框 /// </summary> private void InitialForm() { Exception outError = null; //异常 SysCommon.DataBase.SysTable pSysDB = null; //连接数据库类 //连接数据库 ModDBOperate.ConnectDB(out pSysDB, out outError); if (outError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", outError.Message); return; } string str = ""; //查询字符串 if (m_BeRole) { //查询角色基本信息表 // str = "select * from rolebaseinfo"; //定义查询字符串 3为系统管理员 str = "select * from rolebaseinfo r join (select roletypeid from roletypeinfo ) t on (r.roletypeid=t.roletypeid) where t.roletypeid<> 3"; } else { //查询用户基本信息表 // str = "select * from userbaseinfo";//定义查询字符串 3为系统管理员 str = "select * from userbaseinfo u join userrolerelationinfo r on (u.userid=r.userid) join (select roleid,roletypeid from rolebaseinfo) b on (r.roleid=b.roleid) where b.roletypeid<>3"; } //查询角色信息表 DataTable pTable = pSysDB.GetSQLTable(str, out outError); if (outError != null || pTable == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取角色信息表失败"); pSysDB.CloseDbConnection(); m_beSuccedd = false; return; } for (int i = 0; i < pTable.Rows.Count; i++) { int pRoleID = Convert.ToInt32(pTable.Rows[i][0].ToString().Trim()); //角色ID string pRoleName = pTable.Rows[i][1].ToString().Trim(); //角色名称 ListViewItem pItem = new ListViewItem(); pItem.Text = pRoleName; pItem.Tag = pRoleID; pItem.Checked = false; if (!LstViewRole.Items.Contains(pItem)) { LstViewRole.Items.Add(pItem); } } }
// 登录系统 private void btnOK_Click(object sender, EventArgs e) { Exception outError = null; //界面控制 if (txtUser.Text.Trim() == "") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "用户名不能为空"); return; } else if (txtPassword.Text.Trim() == "") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "密码不能为空"); return; } if (ModuleData.v_AppConnStr.Trim() == "") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "连接字符串为空!"); return; } string[] arr = ModuleData.v_AppConnStr.Split(';'); if (arr.Length != 3) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "连接字符串不正确!"); return; } ///////////////////////获取登陆的用户信息/////////////////// #region 连接数据库 SysCommon.DataBase.SysTable pSysDB = null; //连接数据库 ModDBOperate.ConnectDB(out pSysDB, out outError); if (outError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", outError.Message); return; } #endregion #region 查询用户基本信息表,用户和密码判断 string selStr = "select * from userbaseinfo where UserName='******' and PASSWORD='******'"; DataTable UserTable = pSysDB.GetSQLTable(selStr, out outError); if (outError != null || UserTable == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "查询用户基本信息表失败!"); pSysDB.CloseDbConnection(); return; } if (UserTable.Rows.Count == 0) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "无效的用户或者密码!"); pSysDB.CloseDbConnection(); return; } #endregion int pUserID = -1; //用户ID string pSex = ""; //性别 string pJob = ""; //职称 string pRemark = ""; //备注 string pRoleName = ""; //角色名称 int pRoleTypeID = -1; //角色类型:1管理员、2作业员 pUserID = Convert.ToInt32(UserTable.Rows[0][0].ToString().Trim()); pSex = UserTable.Rows[0][3].ToString().Trim(); pJob = UserTable.Rows[0][4].ToString().Trim(); pRemark = UserTable.Rows[0][5].ToString().Trim(); #region 查询用户角色 string str = "select * from userrolerelationinfo inner join rolebaseinfo on UserID=" + pUserID + " and userrolerelationinfo.RoleID=rolebaseinfo.RoleID"; //string str = "select * from userrolerelationinfo a inner join (select * from rolebaseinfo inner join roletypeinfo on rolebaseinfo.roletypeid=roletypeinfo.roletypeid) b on a.UserID=" + pUserID + "and a.RoleID=b.RoleID"; DataTable pRoleRelTable = pSysDB.GetSQLTable(str, out outError); if (outError != null || pRoleRelTable == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "查询用户角色关系表失败!"); pSysDB.CloseDbConnection(); return; } if (pRoleRelTable.Rows.Count == 0) { pRoleName = ""; pRoleTypeID = -1; } else { pRoleName = pRoleRelTable.Rows[0]["ROLENAME"].ToString().Trim(); pRoleTypeID = Convert.ToInt32(pRoleRelTable.Rows[0]["ROLETYPEID"].ToString().Trim()); //角色类型ID } #endregion pSysDB.CloseDbConnection(); //若用户和密码正确,则登录系统,保存用户相关信息 m_User = new SysCommon.Authorize.User(); m_User.ID = pUserID; m_User.Name = this.txtUser.Text.Trim(); m_User.Password = this.txtPassword.Text.Trim(); m_User.Sex = pSex; m_User.Position = pJob; m_User.Remark = pRemark; m_User.Role = pRoleName; m_User.RoleTypeID = pRoleTypeID; ///////////////////////////////////////////////////////////// this.DialogResult = DialogResult.OK; this.Close(); }
private void btnSearch_Click(object sender, EventArgs e) { this.Hide(); Exception eError = null; string fieldVale = txtValue.Text.ToString(); //字段值 if (fieldVale == "") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "请填写关键字!"); return; } string strMatch = cmbMatch.Text.Trim(); //匹配类型 #region 申明表格并进行绑定 DataTable resalutDT = ModDBOperator.CreateDataInfoTable(); //清空表格 if (m_Hook.DataInfoGrid.DataSource != null) { m_Hook.DataInfoGrid.DataSource = null; } //绑定 m_Hook.DataInfoGrid.DataSource = resalutDT; m_Hook.DataInfoGrid.ReadOnly = true; m_Hook.DataInfoGrid.Visible = true; m_Hook.DataInfoGrid.SelectionMode = DataGridViewSelectionMode.FullRowSelect; for (int j = 0; j < m_Hook.DataInfoGrid.Columns.Count; j++) { //m_Hook.DataInfoGrid.Columns[j].Width = (m_Hook.DataInfoGrid.Width - 20) / m_Hook.DataInfoGrid.Columns.Count; m_Hook.DataInfoGrid.Columns[j].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells; } m_Hook.DataInfoGrid.RowHeadersWidth = 20; #endregion #region 连接数据库 if (ConnStr == "") { return; } SysCommon.DataBase.SysTable pSysDB = new SysCommon.DataBase.SysTable(); pSysDB.SetDbConnection(ConnStr, SysCommon.enumDBConType.ORACLE, SysCommon.enumDBType.ORACLE, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "连接元数据库失败!"); pSysDB.CloseDbConnection(); return; } #endregion #region 首先查询成果索引表,获得符合条件的数据ID string dataIDStandarStr = ""; //标准图幅过滤条件 string dataIDNonStandarStr = ""; //非标准图幅过滤条件 string dataIDControlStr = ""; //控制点过滤条件 string wherestr = GetWhereStr(); //过滤条件 string str2 = ""; if (wherestr != "") { str2 = "select * from ProductIndexTable where " + wherestr; //查询成果索引表 DataTable tempDt = pSysDB.GetSQLTable(str2, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "查询成果索引表失败!"); pSysDB.CloseDbConnection(); return; } for (int i = 0; i < tempDt.Rows.Count; i++) { int dataType = Convert.ToInt32(tempDt.Rows[i]["数据类型编号"].ToString()); long pDataId = Convert.ToInt64(tempDt.Rows[i]["数据ID"].ToString()); if (dataType == 0) { //标准图幅 dataIDStandarStr += pDataId + ","; } else if (dataType == 1) { //非标准图幅 dataIDNonStandarStr += pDataId + ","; } else if (dataType == 2) { //控制点数据 dataIDControlStr += pDataId + ","; } } if (dataIDStandarStr != "") { dataIDStandarStr = dataIDStandarStr.Substring(0, dataIDStandarStr.Length - 1); } if (dataIDNonStandarStr != "") { dataIDNonStandarStr = dataIDNonStandarStr.Substring(0, dataIDNonStandarStr.Length - 1); } if (dataIDControlStr != "") { dataIDControlStr = dataIDControlStr.Substring(0, dataIDControlStr.Length - 1); } } #endregion //再次进行过滤查询表格 string pTableName = ""; string restrainStr = ""; if (cmbType.Text == "标准图幅") { pTableName = "StandardMapMDTable"; if (dataIDStandarStr != "") { restrainStr = dataIDStandarStr; } } else if (cmbType.Text == "非标准图幅") { pTableName = "NonstandardMapMDTable"; if (dataIDNonStandarStr != "") { restrainStr = dataIDNonStandarStr; } } else if (cmbType.Text == "控制点数据") { pTableName = "ControlPointMDTable"; if (dataIDControlStr != "") { restrainStr = dataIDControlStr; } } //DataTable mTable = pSysDB.GetTable(pTableName, out eError); //if (eError != null) //{ // SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "获取源数据信息表失败!"); // return; //} try { if (cmbField.Text == "所有字段") { if (m_FieldDic == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "没有可用的字段!"); pSysDB.CloseDbConnection(); return; } foreach (KeyValuePair <string, Type> pField in m_FieldDic) { string fName = pField.Key.Trim(); Type fType = pField.Value; string pSQL = GetSQL(fName, fieldVale, fType, strMatch, out eError); if (eError != null) { pSysDB.CloseDbConnection(); return; } string str1 = ""; if (m_Hook.ProjectTree.SelectedNode.DataKey.ToString() == EnumTreeNodeType.DATABASE.ToString()) { //如果是数据库节点没有任何限制条件 str1 = "select * from " + pTableName + " where " + pSQL; } else { //如果是其他的节点则肯定 有限制条件 if (restrainStr != "") { //查询到数据 str1 = "select * from " + pTableName + " where ID in (" + restrainStr + ") and " + pSQL; } else { //查不到数据 return; } } //str1 = "select * from " + pTableName + " where ID in (" + restrainStr + ") and 数据文件名 like '%3%'"; DataTable pTable = pSysDB.GetSQLTable(str1, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "获取源数据信息表失败!"); return; } //DataRow[] pRowArr = mTable.Select(pSQL); showResault(pSysDB, pTable, resalutDT, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", eError.Message); pSysDB.CloseDbConnection(); return; } } } else { string fieldName = cmbField.Text.Trim(); Type fieldType = m_FieldDic[fieldName]; string selSQL = GetSQL(fieldName, fieldVale, fieldType, strMatch, out eError); if (eError != null) { pSysDB.CloseDbConnection(); return; } string str1 = ""; if (m_Hook.ProjectTree.SelectedNode.DataKey.ToString() == EnumTreeNodeType.DATABASE.ToString()) { //如果是数据库节点没有任何限制条件 str1 = "select * from " + pTableName + " where " + selSQL; } else { //如果是其他的节点则肯定 有限制条件 if (restrainStr != "") { //查询到数据 str1 = "select * from " + pTableName + " where " + selSQL + " and ID in (" + restrainStr + ")"; } else { //查不到数据 m_Hook.DataInfoGrid.Update(); m_Hook.DataInfoGrid.Refresh(); return; } } DataTable pTable = pSysDB.GetSQLTable(str1, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "获取源数据信息表失败!"); return; } //DataRow[] pRowsArr = mTable.Select(selSQL); showResault(pSysDB, pTable, resalutDT, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", eError.Message); pSysDB.CloseDbConnection(); return; } } } catch (Exception ex) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", ex.Message); } pSysDB.CloseDbConnection(); this.DialogResult = DialogResult.OK; this.Close(); }
public override void OnClick() { Exception eError = null; #region 通过树节点获取源数据库的连接地址 DevComponents.AdvTree.Node DBNode = null; string treeNodeType = m_Hook.ProjectTree.SelectedNode.DataKey.ToString(); if (treeNodeType == "") { return; } DBNode = m_Hook.ProjectTree.SelectedNode;//数据库节点,根节点 while (DBNode.Parent != null) { DBNode = DBNode.Parent; } if (DBNode.DataKey.ToString() != EnumTreeNodeType.DATABASE.ToString()) { return; } if (DBNode.Name != "文件连接") { return; } XmlElement connElem = DBNode.Tag as XmlElement; if (connElem == null) { return; } string conStr = connElem.GetAttribute("MetaDBConn"); #endregion SaveFileDialog saveDial = new SaveFileDialog(); saveDial.Title = "保存数据"; saveDial.Filter = "控制点数据(*.mdb)|*.mdb"; if (saveDial.ShowDialog() == DialogResult.OK) { FrmProcessBar frmbar = new FrmProcessBar(); frmbar.Show(); string pFileName = saveDial.FileName; FileInfo pFileInfo = new FileInfo(ModData.v_TempControlDB); FileInfo desFileInfo = pFileInfo.CopyTo(pFileName, true); //文件存储路径加名称 string path = desFileInfo.DirectoryName; //文件存储路径 //连接目标表 SysCommon.DataBase.SysTable desSysTable = new SysCommon.DataBase.SysTable(); desSysTable.SetDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pFileName + ";Persist Security Info=True", SysCommon.enumDBConType.OLEDB, SysCommon.enumDBType.ACCESS, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "连接元数据库失败!\n连接地址为:" + pFileName); desSysTable.CloseDbConnection(); return; } //获得目标表格 DataTable desTable = desSysTable.GetTable("metadata", out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", eError.Message + "在库中不存在表格'metadata',请检查!"); desSysTable.CloseDbConnection(); return; } //insert 语句 string insertStr = "insert into metadata ("; for (int i = 1; i < desTable.Columns.Count; i++) { //第一列为自动编号ID,从第二列开始 insertStr += desTable.Columns[i].ColumnName + ","; } insertStr = insertStr.Substring(0, insertStr.Length - 1) + ")"; insertStr += " values ("; //连接源数据库 SysCommon.DataBase.SysTable pSysTable = new SysCommon.DataBase.SysTable(); ////pSysTable.SetDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + conStr + ";Persist Security Info=True", SysCommon.enumDBConType.OLEDB, SysCommon.enumDBType.ACCESS, out eError); pSysTable.SetDbConnection(conStr, SysCommon.enumDBConType.ORACLE, SysCommon.enumDBType.ORACLE, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "连接元数据库失败!\n连接地址为:" + conStr); pSysTable.CloseDbConnection(); desSysTable.CloseDbConnection(); return; } //源数据表格 DataTable ordDt = pSysTable.GetTable("ControlPointMDTable", out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "查询控制点元信息出错!"); pSysTable.CloseDbConnection(); desSysTable.CloseDbConnection(); return; } pSysTable.CloseDbConnection(); if (desTable.Columns.Count + 5 != ordDt.Columns.Count) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "目标数据库与源数据库字段结构不一致!"); desSysTable.CloseDbConnection(); return; } #region 遍历要导出的数据 //设置进度条最大值 frmbar.SetFrmProcessBarMax(m_Hook.DataInfoGrid.SelectedRows.Count); int pValue = 0; for (int i = 0; i < m_Hook.DataInfoGrid.RowCount; i++) { if (m_Hook.DataInfoGrid.Rows[i].Selected) { string savePath = m_Hook.DataInfoGrid.Rows[i].Cells["存储位置"].FormattedValue.ToString().Trim(); if (!savePath.Contains("控制点数据")) { //其他数据导出 //pValue++; //frmbar.SetFrmProcessBarValue(pValue); continue; } frmbar.SetFrmProcessBarText("正在进行下载数据:" + m_Hook.DataInfoGrid.Rows[i].Cells["数据文件名"].FormattedValue.ToString().Trim()); if (m_Hook.DataInfoGrid.Rows[i].Cells["ID"].FormattedValue.ToString().Trim() == "") { return; } long dataID = Convert.ToInt64(m_Hook.DataInfoGrid.Rows[i].Cells["ID"].FormattedValue.ToString().Trim()); //执行导出操作 OutPutOneRacord(dataID, insertStr, ordDt, desSysTable, path, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", eError.Message); desSysTable.CloseDbConnection(); frmbar.Dispose(); frmbar.Close(); return; } pValue++; frmbar.SetFrmProcessBarValue(pValue); } } #endregion frmbar.Dispose(); frmbar.Close(); } }
private void btnAddRole_Click(object sender, EventArgs e) { Exception pError = null; try { #region 对界面进行控制 if (txtComment.Text.Length >= 200) { ErrorHandle.ShowFrmErrorHandle("提示", "备注内容太长!"); return; } if (string.IsNullOrEmpty(this.txtRole.Text.Trim())) { ErrorHandle.ShowFrmErrorHandle("提示", "用户组名不能为空!"); return; } if (txtRole.Text.IndexOf(" ") != -1) { errorProvider1.SetError(txtRole, "组名不能有空格"); return; } #endregion SysCommon.DataBase.SysTable pSysDB = null; //连接系统维护库 ModDBOperate.ConnectDB(out pSysDB, out pError); if (pError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", pError.Message); return; } int pRoleID = -1; //角色ID int pRoleTypeID = -1; //角色类型ID pRoleTypeID = Convert.ToInt32((cmbGroupType.SelectedItem as ComboBoxItem).Value.ToString()); if (pRoleTypeID == -1) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取角色类型ID失败!"); pSysDB.CloseDbConnection(); return; } //判断是否存在同名的角色 string tempStr = "select * from rolebaseinfo where ROLENAME='" + txtRole.Text.Trim() + "'"; DataTable mTable = pSysDB.GetSQLTable(tempStr, out pError); if (pError != null || mTable == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "查询角色基本信息表失败"); pSysDB.CloseDbConnection(); return; } if (m_BeUpdate) { //判断是否存在同名角色 if (mTable.Rows.Count > 1) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "存在同名的角色!"); pSysDB.CloseDbConnection(); return; } #region 对界面进行控制,角色名称保护 if (string.IsNullOrEmpty(cmbRoleName.Text.Trim())) { ErrorHandle.ShowFrmErrorHandle("提示", "用户组名不能为空!"); return; } if (cmbRoleName.Text.Trim().IndexOf(" ") != -1) { errorProvider1.SetError(txtRole, "组名不能有空格"); return; } #endregion //判断是否存在同名的角色 //if (cmbRoleName.Items.Contains(txtRole.Text.Trim())) //{ // SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "存在同名的角色!"); // pSysDB.CloseDbConnection(); // return; //} #region 修改角色信息,更新角色基本信息表 pRoleID = Convert.ToInt32((cmbRoleName.SelectedItem as ComboBoxItem).Value.ToString().Trim()); string updateStr = "update rolebaseinfo set ROLENAME='" + txtRole.Text.Trim() + "', ROLETYPEID=" + pRoleTypeID + ", REMARK='" + txtComment.Text.Trim() + "' where ROLEID=" + pRoleID; pSysDB.UpdateTable(updateStr, out pError); if (pError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "修改角色基本信息表失败!"); pSysDB.CloseDbConnection(); return; } pSysDB.CloseDbConnection(); SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "修改角色信息成功!"); #endregion } else { //判断是否存在同名角色 if (mTable.Rows.Count > 0) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "存在同名的角色!"); pSysDB.CloseDbConnection(); return; } #region 添加角色信息,往角色表里面插入记录 //查询角色ID的最大值 string selStr = "select Max(ROLEID) from rolebaseinfo"; DataTable tempTable = pSysDB.GetSQLTable(selStr, out pError); if (pError != null || tempTable == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "查询角色基本信息表失败"); pSysDB.CloseDbConnection(); return; } if (tempTable.Rows.Count == 0) { pRoleID = 1; } else { if (tempTable.Rows[0][0].ToString().Trim() == "") { //SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取角色类型ID失败!"); //pSysDB.CloseDbConnection(); //return; pRoleID = 1; } else { pRoleID = Convert.ToInt32(tempTable.Rows[0][0].ToString()) + 1; } } if (pRoleID == -1) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取角色ID失败!"); return; } string str = "insert into rolebaseinfo(ROLEID,ROLENAME,ROLETYPEID,REMARK) values ("; str += pRoleID + ",'" + txtRole.Text.Trim() + "'," + pRoleTypeID + ",'" + txtComment.Text.Trim() + "')"; //更新数据库 pSysDB.UpdateTable(str, out pError); if (pError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "更新角色基本信息表失败!"); pSysDB.CloseDbConnection(); return; } pSysDB.CloseDbConnection(); SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "添加角色成功!"); #endregion } this.DialogResult = DialogResult.OK; } catch (Exception ex) { } }
private void cmbRoleName_SelectedIndexChanged(object sender, EventArgs e) { //根据角色名称初始化角色类型 txtRole.Text = cmbRoleName.Text.Trim(); SysCommon.DataBase.SysTable pSysDB = null; Exception outError = null; //连接数据库 ModDBOperate.ConnectDB(out pSysDB, out outError); if (outError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", outError.Message); return; } string selStr = ""; //初始化角色类型列表的字符串 selStr = "select * from roletypeinfo inner join rolebaseinfo on rolebaseinfo.ROLETYPEID=roletypeinfo.ROLETYPEID and rolebaseinfo.ROLEID=" + Convert.ToInt32((cmbRoleName.SelectedItem as ComboBoxItem).Value.ToString()); //查询角色类型表 DataTable pTable = pSysDB.GetSQLTable(selStr, out outError); if (outError != null || pTable == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "查询角色类型表失败,原因:" + outError.Message); pSysDB.CloseDbConnection(); return; } if (pTable.Rows.Count == 0) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "查询角色类型表失败,原因:" + outError.Message); pSysDB.CloseDbConnection(); return; } //遍历表格记录,将角色类型信息加载到ComboBox中 //for (int j = 0; j < pTable.Rows.Count; j++) //{ string roleTypeID = ""; //角色类型ID string roleTypeName = ""; //角色类型 roleTypeID = pTable.Rows[0]["ROLETYPEID"].ToString().Trim(); roleTypeName = pTable.Rows[0]["ROLEREMARK"].ToString().Trim(); //ComboBoxItem pItem = new ComboBoxItem(roleTypeName, roleTypeID); //cmbGroupType.SelectedItem = pItem; cmbGroupType.Text = roleTypeName; //cmbGroupType.Items.Add(pItem); //} //if (cmbGroupType.Items.Count > 0) //{ // cmbGroupType.SelectedIndex = 0; //} //初始化备注列表框 selStr = "select * from rolebaseinfo where ROLEID=" + Convert.ToInt32((cmbRoleName.SelectedItem as ComboBoxItem).Value.ToString().Trim()); pTable = pSysDB.GetSQLTable(selStr, out outError); if (outError != null || pTable == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "查询角色类型表失败,原因:" + outError.Message); pSysDB.CloseDbConnection(); return; } if (pTable.Rows.Count == 0) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "该用户不存在!"); pSysDB.CloseDbConnection(); return; } txtComment.Text = pTable.Rows[0][3].ToString().Trim(); pSysDB.CloseDbConnection(); }
private void btnAddUser_Click(object sender, EventArgs e) { Exception exError = null; try { #region 进行界面控制 if (txtComment.Text.Length > 200) { ErrorHandle.ShowInform("提示", "备注内容太长!"); txtComment.Focus(); return; } if (txtTrueName.Text.IndexOf(" ") != -1) { errorProvider.SetError(txtTrueName, "用户名不能有空格"); return; } //验证 if (string.IsNullOrEmpty(this.txtTrueName.Text)) { errorProvider.SetError(txtTrueName, "用户真实名不能为空!"); return; } else if (string.IsNullOrEmpty(this.txtPassword.Text)) { errorProvider.SetError(txtPassword, "密码不能为空!"); return; } else if (this.comboSex.Text == "") { errorProvider.SetError(comboSex, "请选择用户角色!"); return; } else if (this.comboSex.Text == "请选择") { errorProvider.SetError(comboSex, "请选择性别!"); return; } else if (string.IsNullOrEmpty(this.txtPosition.Text)) { errorProvider.SetError(txtPosition, "姓名不能为空!"); return; } if (txtTrueName.Text == "Admin") { ErrorHandle.ShowInform("提示", "此用户已存在,请重新输入!"); txtTrueName.Focus(); return; } #endregion //l连接系统维护库 SysCommon.DataBase.SysTable pSysDB = null; ModDBOperate.ConnectDB(out pSysDB, out exError); if (exError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", exError.Message); return; } #region 首先要判断用户名不能重复 //用户名不能与超级管理员同名 string[] arr = ModuleData.v_AppConnStr.Split(';'); if (arr.Length != 3) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "连接字符串不正确!"); return; } if (txtTrueName.Text.Trim() == arr[1].Substring(arr[1].IndexOf('=') + 1)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "存在同名的用户!"); pSysDB.CloseDbConnection(); return; } //不能与数据库中的用户同名 string str = "select * from userbaseinfo where USERNAME='******'"; DataTable pUserTable = pSysDB.GetSQLTable(str, out exError); if (exError != null || pUserTable == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "查询用户基本信息表失败!"); pSysDB.CloseDbConnection(); return; } #endregion //判断是更新还是添加 if (_user != null) { // (修改用户) 判断是否存在同名用户 if (pUserTable.Rows.Count > 1) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "存在同名的用户!"); pSysDB.CloseDbConnection(); return; } #region 用户修改,1、需要修改用户基本信息表,2、需要修改用户角色关系表,3、更新用户登录信息 pSysDB.StartTransaction(); //更新用户信息 #region 更新用户信息表 //若用户的基本信息发生了变更,则更新用户基本信息表 int pUserID = _user.ID; //用户ID int pRoleTypeID = _user.RoleTypeID; string updateStr = ""; if (m_UserName != txtTrueName.Text.Trim() || m_Password != txtPassword.Text.Trim() || comboSex.Text.Trim() != m_Sex || txtPosition.Text.Trim() != m_Position || txtComment.Text.Trim() != m_Remark) { //只要其中有一项基本信息发生了变化,就更injiben信息表 updateStr = "update userbaseinfo set UserName='******', Password='******', Sex='" + comboSex.Text.Trim() + "', Job='" + txtPosition.Text.Trim() + "', Remark='" + txtComment.Text.Trim() + "' where UserID=" + pUserID; pSysDB.UpdateTable(updateStr, out exError); if (exError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "更新用户信息表失败!"); pSysDB.EndTransaction(false); pSysDB.CloseDbConnection(); return; } } #endregion if (cmbRole.Text.Trim() != m_OldRoleName) { //说明用户对应的角色也进行了更新 #region 更新用户角色关系表 if ((cmbRole.SelectedItem as ComboBoxItem).Value == null || (cmbRole.SelectedItem as ComboBoxItem).Value.ToString().Trim() == "") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取角色ID失败!"); pSysDB.EndTransaction(false); pSysDB.CloseDbConnection(); return; } int pRoleID = -1; //角色ID Convert.ToInt32((cmbRole.SelectedItem as ComboBoxItem).Value.ToString().Trim()); string mStr = "select * from rolebaseinfo where ROLENAME='" + cmbRole.Text.Trim() + "'"; DataTable tTable = pSysDB.GetSQLTable(mStr, out exError); if (exError != null || tTable == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "查询角色信息表失败!"); pSysDB.EndTransaction(false); pSysDB.CloseDbConnection(); return; } if (tTable.Rows.Count == 0) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取角色ID失败!"); pSysDB.EndTransaction(false); pSysDB.CloseDbConnection(); return; } pRoleID = Convert.ToInt32(tTable.Rows[0][0].ToString().Trim()); //首先查询用户角色关系表,看是否存在这个记录 //****************************************************************** //guozheng added 2011-3-24 string sSQL = "SELECT ROLEID FROM rolebaseinfo WHERE ROLETYPEID=" + _user.RoleTypeID; DataTable GetTable = pSysDB.GetSQLTable(sSQL, out exError); if (exError != null || GetTable == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "查询用户角色关系表失败!"); pSysDB.EndTransaction(false); pSysDB.CloseDbConnection(); return; } if (GetTable.Rows.Count < 0) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "没有找到该用户对应的角色信息"); return; } //****************************************************************** string tempStr = "select * from userrolerelationinfo where ROLEID=" + GetTable.Rows[0][0].ToString() + " and USERID=" + pUserID; DataTable temTable = pSysDB.GetSQLTable(tempStr, out exError); if (exError != null || temTable == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "查询用户角色关系表失败!"); pSysDB.EndTransaction(false); pSysDB.CloseDbConnection(); return; } if (temTable.Rows.Count == 0) { //若不存在,则插入关系记录 updateStr = "insert into userrolerelationinfo(USERID,ROLEID) values (" + pUserID + "," + pRoleID + ")"; } else { //若存在,则更新关系记录 updateStr = "update userrolerelationinfo set ROLEID=" + pRoleID + " where USERID=" + pUserID; } pSysDB.UpdateTable(updateStr, out exError); if (exError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "更新用户角色关系表失败!"); pSysDB.EndTransaction(false); pSysDB.CloseDbConnection(); return; } #endregion //获得角色类型 tempStr = "select * from rolebaseinfo where ROLEID=" + pRoleID; temTable = pSysDB.GetSQLTable(tempStr, out exError); if (exError != null || temTable == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "查询角色基本信息表失败!"); pSysDB.EndTransaction(false); pSysDB.CloseDbConnection(); return; } if (temTable.Rows.Count == 0) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "不存在该角色"); pSysDB.EndTransaction(false); pSysDB.CloseDbConnection(); return; } pRoleTypeID = Convert.ToInt32(temTable.Rows[0][2].ToString().Trim()); } pSysDB.EndTransaction(true); pSysDB.CloseDbConnection(); #region 更新用户登录信息 ModuleData.m_User = new User(); ModuleData.m_User.ID = pUserID; ModuleData.m_User.Name = txtTrueName.Text.Trim(); ModuleData.m_User.Password = txtPassword.Text.Trim(); ModuleData.m_User.Sex = comboSex.Text.Trim(); ModuleData.m_User.Position = txtPosition.Text.Trim(); ModuleData.m_User.Remark = txtComment.Text.Trim(); ModuleData.m_User.Role = cmbRole.Text.Trim(); ModuleData.m_User.RoleTypeID = pRoleTypeID; #endregion SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "修改用户信息成功!"); #endregion } else { //(新增用户)判断是否存在同名用户 if (pUserTable.Rows.Count > 0) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "存在同名的用户!"); pSysDB.CloseDbConnection(); return; } //添加用户信息 #region 添加用户,1、需要添加用户基本信息表,2、需要添加用户角色关系表 pSysDB.StartTransaction(); #region 获得用户ID int pUserID = -1; string seleStr = "select Max(UserID) from userbaseinfo"; DataTable tempTable = pSysDB.GetSQLTable(seleStr, out exError); if (exError != null || tempTable == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "查询用户信息表失败!"); pSysDB.CloseDbConnection(); return; } if (tempTable.Rows.Count == 0) { pUserID = 1; } else { if (tempTable.Rows[0][0].ToString().Trim() == "") { pUserID = 1; } else { pUserID = Convert.ToInt32(tempTable.Rows[0][0].ToString().Trim()) + 1; } } if (pUserID == -1) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取用户ID失败!"); return; } #endregion #region 更新用户基本信息表 string insertStr = "insert into userbaseinfo(UserID,UserName,Password,Sex,Job,Remark) values(" + pUserID + ",'" + txtTrueName.Text.Trim() + "','" + txtPassword.Text.Trim() + "','" + comboSex.Text.Trim() + "','" + txtPosition.Text.Trim() + "','" + txtComment.Text.Trim() + "')"; pSysDB.UpdateTable(insertStr, out exError); if (exError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "更新用户表信息失败!"); pSysDB.EndTransaction(false); pSysDB.CloseDbConnection(); return; } #endregion #region 更新用户角色表 //获得角色ID int pRoleID = -1; //角色ID if ((cmbRole.SelectedItem as ComboBoxItem).Value == null || (cmbRole.SelectedItem as ComboBoxItem).Value.ToString().Trim() == "") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取角色ID失败!"); pSysDB.EndTransaction(false); pSysDB.CloseDbConnection(); return; } pRoleID = Convert.ToInt32((cmbRole.SelectedItem as ComboBoxItem).Value.ToString().Trim()); //插入数据到角色关系表里面 string inseStr = "insert into userrolerelationinfo(UserID,RoleID) values(" + pUserID + "," + pRoleID + ")"; pSysDB.UpdateTable(inseStr, out exError); if (exError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "更新用户角色关系表失败!"); pSysDB.EndTransaction(false); pSysDB.CloseDbConnection(); return; } #endregion pSysDB.EndTransaction(true); pSysDB.CloseDbConnection(); SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示 ", "添加用户信息成功!"); #endregion } this.DialogResult = DialogResult.OK; } catch (Exception ex) { exError = ex; } }
/// <summary> /// chenyafei 20110311 add content:初始化界面 /// </summary> private void InitilComboBox() { Exception outError = null; #region 初始化性别列表框 ComboBoxItem item = new ComboBoxItem("男", 0); this.comboSex.Items.Add(item); item = new ComboBoxItem("女", 1); this.comboSex.Items.Add(item); this.comboSex.SelectedIndex = 0; #endregion #region 初始化角色列表框 //连接系统维护库 SysCommon.DataBase.SysTable pSysDB = null; ModDBOperate.ConnectDB(out pSysDB, out outError); if (outError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", outError.Message); m_BeSuccedd = false; return; } //查询角色基本信息表 string selStr = string.Empty; if (this._user == null) { selStr = "select * from rolebaseinfo WHERE rolebaseinfo.ROLETYPEID<>3"; //查询角色字符串,3为系统管理员角色,系统管理员角色不能添加 } else { //cyf 20110602 delete //if (this._user.RoleTypeID==EnumRoleType.系统管理员.GetHashCode()) // selStr = "select * from rolebaseinfo"; //else // selStr = "select * from rolebaseinfo WHERE rolebaseinfo.ROLETYPEID<>3"; //end } DataTable pTable = pSysDB.GetSQLTable(selStr, out outError); if (outError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "查询角色基本信息表失败,原因:" + outError.Message); m_BeSuccedd = false; pSysDB.CloseDbConnection(); return; } pSysDB.CloseDbConnection(); //遍历表格记录,将角色信息加载到ComboBox中 for (int i = 0; i < pTable.Rows.Count; i++) { string roleID = ""; //角色ID string roleName = ""; //角色名称 roleID = pTable.Rows[i][0].ToString().Trim(); roleName = pTable.Rows[i][1].ToString().Trim(); ComboBoxItem pItem = new ComboBoxItem(roleName, roleID); cmbRole.Items.Add(pItem); } if (cmbRole.Items.Count > 0) { cmbRole.SelectedIndex = 0; } #endregion }
private void buttonX2_Click(object sender, EventArgs e) { Exception eError = null; //等高线方向 string orient = cmbOrient.SelectedItem.ToString().Trim(); //错误日志连接信息 string logPath = txtLog.Text; if (logPath.Trim() == string.Empty) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "请选择日志输出路径!"); return; } if (File.Exists(logPath)) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "数据文件已存在!\n" + logPath); } #region 生成日志信息EXCEL格式 SysCommon.DataBase.SysDataBase pSysLog = new SysCommon.DataBase.SysDataBase(); pSysLog.SetDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + logPath + "; Extended Properties=Excel 8.0;", SysCommon.enumDBConType.OLEDB, SysCommon.enumDBType.ACCESS, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "日志信息表连接失败!"); return; } string strCreateTableSQL = @" CREATE TABLE "; strCreateTableSQL += @" 错误日志 "; strCreateTableSQL += @" ( "; strCreateTableSQL += @" 检查功能名 VARCHAR, "; strCreateTableSQL += @" 错误类型 VARCHAR, "; strCreateTableSQL += @" 错误描述 VARCHAR, "; strCreateTableSQL += @" 数据图层1 VARCHAR, "; strCreateTableSQL += @" 数据OID1 VARCHAR, "; strCreateTableSQL += @" 数据图层2 VARCHAR, "; strCreateTableSQL += @" 数据OID2 VARCHAR, "; strCreateTableSQL += @" 定位点X VARCHAR , "; strCreateTableSQL += @" 定位点Y VARCHAR , "; strCreateTableSQL += @" 检查时间 VARCHAR ,"; strCreateTableSQL += @" 数据文件路径 VARCHAR "; strCreateTableSQL += @" ) "; pSysLog.UpdateTable(strCreateTableSQL, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "插入表头出错!"); pSysLog.CloseDbConnection(); return; } #endregion DataCheckClass dataCheckCls = new DataCheckClass(_AppHk); //将日志表连接信息和表名保存起来 dataCheckCls.ErrDbCon = pSysLog.DbConn; dataCheckCls.ErrTableName = "错误日志"; #region 连接GIS数据检察配置表 ,并获取相关参数 SysCommon.DataBase.SysTable pSysTable = new SysCommon.DataBase.SysTable(); string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + TopologyCheckClass.GeoDataCheckParaPath; pSysTable.SetDbConnection(conStr, SysCommon.enumDBConType.OLEDB, SysCommon.enumDBType.ACCESS, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "GIS数据检查配置表连接失败!"); pSysLog.CloseDbConnection(); return; } //等高线图层名,参数ID为20 string pFeaClsName = GetParaValue(pSysTable, 20, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "读取数据减配置表失败。" + eError.Message); pSysLog.CloseDbConnection(); pSysTable.CloseDbConnection(); return; } //等高线要素类 IFeatureClass pFeaCls = GetLineFeaCls(pFeaClsName); if (pFeaCls == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "不存在等高线图层,图层名为:" + pFeaClsName); pSysLog.CloseDbConnection(); pSysTable.CloseDbConnection(); return; } //等高线高程字段名,参数ID23 string pFieldName = GetParaValue(pSysTable, 23, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "读取数据减配置表失败。" + eError.Message); pSysLog.CloseDbConnection(); pSysTable.CloseDbConnection(); return; } //等高线高程间距参数值,参数ID为21 string paraValue = GetParaValue(pSysTable, 21, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "读取数据减配置表失败。" + eError.Message); pSysLog.CloseDbConnection(); pSysTable.CloseDbConnection(); return; } double intevalValue = Convert.ToDouble(paraValue); //执行等高线高程值检查 dataCheckCls.LineIntervalCheck(pFeaCls, pFieldName, m_PolyLine, intevalValue, orient, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "等高线高程值检查失败。" + eError.Message); pSysLog.CloseDbConnection(); pSysTable.CloseDbConnection(); return; } #endregion pSysLog.CloseDbConnection(); pSysTable.CloseDbConnection(); this.Close(); }
public override void OnClick() { SysCommon.Error.frmInformation eerorFrm = new SysCommon.Error.frmInformation("是", "否", "删除数据将无法恢复,确定吗?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } //执行成果数据删除操作(在列表中选中要删除的数据项,进行删除) Exception ex = null; #region 获取连接信息 DevComponents.AdvTree.Node mDBNode = m_Hook.ProjectTree.SelectedNode; DevComponents.AdvTree.Node Deltreenode = null; string ipStr = ""; string ip = ""; string id = ""; string password = ""; string ConnStr = ""; int datatype = -1; SysCommon.DataBase.SysTable pSysDB = new SysCommon.DataBase.SysTable(); //属性库连接类 while (mDBNode.Parent != null) { mDBNode = mDBNode.Parent; } if (mDBNode.Name == "文件连接") { Deltreenode = mDBNode; System.Xml.XmlElement dbElem = mDBNode.Tag as System.Xml.XmlElement; if (dbElem == null) { return; } ipStr = dbElem.GetAttribute("MetaDBConn"); ip = dbElem.GetAttribute("服务器"); id = dbElem.GetAttribute("用户"); password = dbElem.GetAttribute("密码"); //ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ipStr + ";Persist Security Info=True";//元数据连接字符串 ConnStr = ipStr; pSysDB.SetDbConnection(ConnStr, SysCommon.enumDBConType.ORACLE, SysCommon.enumDBType.ORACLE, out ex); } else { return; } #endregion if (EnumTreeNodeType.DATAITEM.ToString() == m_Hook.ProjectTree.SelectedNode.DataKey.ToString()) { #region 在树节点上选择要删除的数据 if (m_Hook.ProjectTree.SelectedNode.Tag == null) { return; } if (m_Hook.ProjectTree.SelectedNode.Tag.ToString() == "") { return; } long dataID = int.Parse(m_Hook.ProjectTree.SelectedNode.Tag.ToString());//数据 string DataType = m_Hook.ProjectTree.SelectedNode.Parent.Tag.ToString();; try { datatype = Convert.ToInt32(DataType); } catch { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误提示!", "获取数据类型失败!"); return; } if (2 != datatype)////数据类型不为控制点控制点数据 { string FilePath = m_Hook.ProjectTree.SelectedNode.Name; string FileName = m_Hook.ProjectTree.SelectedNode.Text.Trim(); bool Delstate = ModDBOperator.DelDataItem(FilePath, FileName, ip, id, password, out ex); if (!Delstate) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "文件库中删除文件:" + FilePath + "/" + FileName + "失败!" + "\n请确认文件是否存在或是否为占用状态!"); return; } m_Hook.ProjectTree.SelectedNode.Remove(); ModDBOperator.DelDataItem(dataID, datatype, pSysDB, out ex); if (null != ex) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "元信息数据库中删除数据文件记录失败!"); return; } } else/////数据类型为控制点数据 { ModDBOperator.DelDataItem(dataID, datatype, pSysDB, out ex); if (null != ex) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "元信息数据库中删除数据文件记录失败!"); return; } m_Hook.ProjectTree.SelectedNode.Remove(); } #endregion } else if (m_Hook.DataInfoGrid.Rows.Count > 0) { #region 其他所有节点 DevComponents.AdvTree.Node Selnode = m_Hook.ProjectTree.SelectedNode; if (null == Selnode.DataKey) { return; } string ID = ""; long lid = -1; string FileName = ""; string FilePath = ""; string type = ""; FrmProcessBar frmbar = new FrmProcessBar(); frmbar.SetFrmProcessBarText("删除操作:"); frmbar.Show(); List <int> delrowlist = new List <int>(); if (EnumTreeNodeType.PRODUCTPYPE.ToString() == Selnode.DataKey.ToString()) { #region 中的是产品类型节点(标准、非标准、控制点数据) type = Selnode.Text; switch (type) { case "标准图幅": datatype = 0; break; case "非标准图幅": datatype = 1; break; case "控制点数据": datatype = 2; break; default: datatype = -1; break; } if (datatype == -1) { return; } frmbar.SetFrmProcessBarMax((long)m_Hook.DataInfoGrid.Rows.Count); for (int i = 0; i < m_Hook.DataInfoGrid.Rows.Count; i++) { frmbar.SetFrmProcessBarValue((long)i); Application.DoEvents(); if (false == m_Hook.DataInfoGrid.Rows[i].Selected) { continue; } try { ID = m_Hook.DataInfoGrid.Rows[i].Cells["ID"].FormattedValue.ToString().Trim(); if (string.IsNullOrEmpty(ID)) { continue; } lid = Convert.ToInt64(ID); FileName = m_Hook.DataInfoGrid.Rows[i].Cells["数据文件名"].FormattedValue.ToString().Trim(); FilePath = m_Hook.DataInfoGrid.Rows[i].Cells["存储位置"].FormattedValue.ToString().Trim(); } catch { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "数据文件:" + FileName + "删除失败,是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { continue; } else { frmbar.Close(); return; } } #region 在文件库中删除数据文件 //////////////////在文件库中删除数据文件//////////////////////////////// frmbar.SetFrmProcessBarText("正在删除文件:" + FileName); Application.DoEvents(); if (2 != datatype)////数据类型为控制点控制点数据不执行文件的删除操作 { bool Delstate = ModDBOperator.DelDataItem(FilePath, FileName, ip, id, password, out ex); if (!Delstate) { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "数据文件\n'" + FilePath + "/" + FileName + "'\n删除失败。\n" + "请确认文件是否存在或是否为占用状态" + "!\n是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { continue; } else { frmbar.Close(); return; } } } #endregion #region 在元数据表中删除成果信息 ///////////////////在元数据表中删除成果信息///////////////////////// ModDBOperator.DelDataItem(lid, datatype, pSysDB, out ex); if (null != ex) { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "数据文件\n'" + FileName + "'\n元信息删除失败。\n" + "请确认元信息库的连接信息。" + "!\n是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { continue; } else { frmbar.Close(); return; } } // m_Hook.DataInfoGrid.Rows.Remove(m_Hook.DataInfoGrid.Rows[i]); // i = i - 1; delrowlist.Add(i); #endregion #region 在树节点中删除文件节点 /////////////////////在树节点中删除文件节点/////////////////////////// ModDBOperator.DelNodeByNameAndText(Deltreenode, FilePath, FileName, out ex); if (null != ex) { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "树节点删除失败。原因为:\n" + ex.Message + "!\n是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() != System.Windows.Forms.DialogResult.OK) { frmbar.Close(); return; } //else // return; } #endregion } #endregion } else //除产品类型节点以外的所有节点 { frmbar.SetFrmProcessBarMax((long)m_Hook.DataInfoGrid.Rows.Count); for (int i = 0; i < m_Hook.DataInfoGrid.Rows.Count; i++) { #region 获取必要信息 if (false == m_Hook.DataInfoGrid.Rows[i].Selected) { continue; } frmbar.SetFrmProcessBarValue((long)i); int DataType = -1;//产品的类型(标准,非标准,属性) try { ID = m_Hook.DataInfoGrid.Rows[i].Cells["ID"].FormattedValue.ToString().Trim(); if (string.IsNullOrEmpty(ID)) { continue; } lid = Convert.ToInt64(ID); FileName = m_Hook.DataInfoGrid.Rows[i].Cells["数据文件名"].FormattedValue.ToString().Trim(); FilePath = m_Hook.DataInfoGrid.Rows[i].Cells["存储位置"].FormattedValue.ToString().Trim(); type = m_Hook.DataInfoGrid.Rows[i].Cells["数据类型"].FormattedValue.ToString().Trim(); if ("标准图幅数据" == type) { datatype = EnumDataType.标准图幅.GetHashCode(); } else if ("非标准图幅数据" == type) { datatype = EnumDataType.非标准图幅.GetHashCode(); } else if ("控制点数据" == type) { datatype = EnumDataType.控制点数据.GetHashCode(); } } catch { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "数据文件:" + FileName + "删除失败。原因为:数据文件的ID获取失败\n" + "是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { continue; } else { frmbar.Close(); return; } } #endregion #region 在元信息表中删除 frmbar.SetFrmProcessBarText("正在删除文件:" + FileName); if (ex != null) { ex = new Exception("连接元数据库失败!连接地址为:" + ConnStr); pSysDB.CloseDbConnection(); return; } if (lid != -1 && datatype != -1) { ModDBOperator.DelDataItem(lid, datatype, pSysDB, out ex); if (null != ex) { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "数据文件元信息删除失败。\n" + "请检查元信息库连接信息" + "!\n是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { continue; } else { frmbar.Close(); return; } } } #endregion #region 在文件库中删除 if (2 != datatype)////数据类型为控制点控制点数据则不进行文件的删除操作 { bool Delstate = ModDBOperator.DelDataItem(FilePath, FileName, ip, id, password, out ex); if (!Delstate) { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "数据文件\n'" + FilePath + "/" + FileName + "'\n删除失败。\n" + " 请确认文件是否存在或是否为占用状态。" + "\n是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { continue; } else { frmbar.Close(); return; } } } #endregion #region 记录DataGrid中要删除的行 delrowlist.Add(i); #endregion #region 在树节点中删除文件节点 ModDBOperator.DelNodeByNameAndText(Deltreenode, FilePath, FileName, out ex); if (null != ex) { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "树节点删除失败。原因为:\n" + ex.Message + "!\n是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { continue; } else { frmbar.Close(); return; } } #endregion } } /////数据列表中移除相应的行 if (null != delrowlist) { for (int j = 0; j < delrowlist.Count; j++) { m_Hook.DataInfoGrid.Rows.Remove(m_Hook.DataInfoGrid.Rows[delrowlist[j] - j]); } } frmbar.Close(); #endregion } #region 图层处理 if (ModData.v_AppFileDB.MapControl.LayerCount > 0 && datatype != 2) { IGroupLayer Glayer = null; for (int i = 0; i < ModData.v_AppFileDB.MapControl.LayerCount; i++) { ILayer getlayer = ModData.v_AppFileDB.MapControl.get_Layer(i); if (getlayer.Name == "项目范围图") { Glayer = getlayer as IGroupLayer; } } if (null != Glayer) { ICompositeLayer comlayer = Glayer as ICompositeLayer; string layername = null; switch (datatype) { case 0: layername = "MapFrame_"; break; case 1: layername = "Range_"; break; default: layername = "_"; break; } if (comlayer != null) { for (int i = 0; i < comlayer.Count; i++) { ILayer orglayer = comlayer.get_Layer(i); string lname = orglayer.Name; if (lname.Contains(layername)) { Glayer.Delete(orglayer); ModData.v_AppFileDB.TOCControl.Update(); ModData.v_AppFileDB.MapControl.ActiveView.Refresh(); } } } } } if (datatype == EnumDataType.控制点数据.GetHashCode()) { IGraphicsContainer pGra = ModData.v_AppFileDB.MapControl.Map as IGraphicsContainer; pGra.DeleteAllElements(); ModData.v_AppFileDB.MapControl.ActiveView.Refresh(); } #endregion //刷新时间列表框 ModDBOperator.LoadComboxTime(ConnStr, out ex); if (ex != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "加载时间列表框失败," + ex.Message); return; } }
public override void OnClick() { //FrmMathematicsCheck mFrmMathematicsCheck = new FrmMathematicsCheck(_AppHk, enumErrorType.线长度逻辑性); //mFrmMathematicsCheck.ShowDialog(); Exception eError = null; FrmLineLengthCheck pFrmLineLengthCheck = new FrmLineLengthCheck(); if (pFrmLineLengthCheck.ShowDialog() == DialogResult.OK) { #region 错误日志保存 //错误日志连接信息 string logPath = TopologyCheckClass.GeoLogPath + "Log" + System.DateTime.Today.Year.ToString() + System.DateTime.Today.Month.ToString() + System.DateTime.Today.Day.ToString() + System.DateTime.Now.Hour.ToString() + System.DateTime.Now.Minute.ToString() + System.DateTime.Now.Second.ToString() + ".xls";; if (File.Exists(logPath)) { if (SysCommon.Error.ErrorHandle.ShowFrmInformation("是", "否", "日志文件\n'" + logPath + "'\n已经存在,是否替换?")) { File.Delete(logPath); } else { return; } } //生成日志信息EXCEL格式 SysCommon.DataBase.SysDataBase pSysLog = new SysCommon.DataBase.SysDataBase(); pSysLog.SetDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + logPath + "; Extended Properties=Excel 8.0;", SysCommon.enumDBConType.OLEDB, SysCommon.enumDBType.ACCESS, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "日志信息表连接失败!"); return; } string strCreateTableSQL = @" CREATE TABLE "; strCreateTableSQL += @" 错误日志 "; strCreateTableSQL += @" ( "; strCreateTableSQL += @" 检查功能名 VARCHAR, "; strCreateTableSQL += @" 错误类型 VARCHAR, "; strCreateTableSQL += @" 错误描述 VARCHAR, "; strCreateTableSQL += @" 数据图层1 VARCHAR, "; strCreateTableSQL += @" 数据OID1 VARCHAR, "; strCreateTableSQL += @" 数据图层2 VARCHAR, "; strCreateTableSQL += @" 数据OID2 VARCHAR, "; strCreateTableSQL += @" 定位点X VARCHAR , "; strCreateTableSQL += @" 定位点Y VARCHAR , "; strCreateTableSQL += @" 检查时间 VARCHAR ,"; strCreateTableSQL += @" 数据文件路径 VARCHAR "; strCreateTableSQL += @" ) "; pSysLog.UpdateTable(strCreateTableSQL, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "插入表头出错!"); pSysLog.CloseDbConnection(); return; } DataCheckClass dataCheckCls = new DataCheckClass(_AppHk); //将日志表连接信息和表名保存起来 dataCheckCls.ErrDbCon = pSysLog.DbConn; dataCheckCls.ErrTableName = "错误日志"; #endregion #region 获得要检查的IFeatureClass的集合 //将Mapcontrol上所有的图层名保存起来 List <IFeatureClass> LstFeaClass = new List <IFeatureClass>(); for (int i = 0; i < _AppHk.MapControl.LayerCount; i++) { ILayer player = _AppHk.MapControl.get_Layer(i); if (player is IGroupLayer) { ICompositeLayer pComLayer = player as ICompositeLayer; for (int j = 0; j < pComLayer.Count; j++) { ILayer mLayer = pComLayer.get_Layer(j); IFeatureLayer mfeatureLayer = mLayer as IFeatureLayer; if (mfeatureLayer == null) { continue; } IFeatureClass pfeaCls = mfeatureLayer.FeatureClass; if (!LstFeaClass.Contains(pfeaCls)) { LstFeaClass.Add(pfeaCls); } } } else { IFeatureLayer pfeatureLayer = player as IFeatureLayer; if (pfeatureLayer == null) { continue; } IFeatureClass mFeaCls = pfeatureLayer.FeatureClass; if (!LstFeaClass.Contains(mFeaCls)) { LstFeaClass.Add(mFeaCls); } } } #endregion try { SysCommon.DataBase.SysTable pSysTable = new SysCommon.DataBase.SysTable(); string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + TopologyCheckClass.GeoDataCheckParaPath; pSysTable.SetDbConnection(conStr, SysCommon.enumDBConType.OLEDB, SysCommon.enumDBType.ACCESS, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "GIS数据检查配置表连接失败!"); pSysLog.CloseDbConnection(); return; } //分类代码字段名 string codeName = TopologyCheckClass.GetCodeName(pSysTable, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", eError.Message); pSysLog.CloseDbConnection(); pSysTable.CloseDbConnection(); return; } DataTable mTable = TopologyCheckClass.GetParaValueTable(pSysTable, 3, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", eError.Message); pSysLog.CloseDbConnection(); pSysTable.CloseDbConnection(); return; } if (mTable.Rows.Count == 0) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "未进行线长度检查配置!"); pSysLog.CloseDbConnection(); pSysTable.CloseDbConnection(); return; } //执行线长度逻辑性检查 double pmax = pFrmLineLengthCheck.MaxValue; double pmin = pFrmLineLengthCheck.MinValue; LineLogicCheck(dataCheckCls, LstFeaClass, mTable, codeName, pmin.ToString(), pmax.ToString(), out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "线长度逻辑性检查失败。" + eError.Message); pSysLog.CloseDbConnection(); pSysTable.CloseDbConnection(); return; } SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "数据检查完成!"); pSysLog.CloseDbConnection(); pSysTable.CloseDbConnection(); //隐藏进度条 dataCheckCls.ShowProgressBar(false); } catch (Exception ex) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", ex.Message); pSysLog.CloseDbConnection(); return; } } }
private void btnDelSel_Click(object sender, EventArgs e) { if (LstViewRole.CheckedItems.Count == 0) { return; } if (m_BeRole) { #region 除角色及其相关信息,1、删除角色用户关系表,2、删除角色表 if (SysCommon.Error.ErrorHandle.ShowFrmInformation("是", "否", "是否删除选中角色及其对应的所有用户?")) { //删除 SysCommon.DataBase.SysTable pSysDB = null; Exception outError = null; //连接数据库 ModDBOperate.ConnectDB(out pSysDB, out outError); if (outError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", outError.Message); return; } //开启事物 pSysDB.StartTransaction(); //遍历列表框,执行删除操作 for (int i = 0; i < LstViewRole.Items.Count; i++) { int pRoleID = -1;//角色ID //***********************************// //guozheng added if (pRoleID == 3) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "系统管理员角色:" + LstViewRole.Items[i].Text + " 不能删除"); continue; } ListViewItem pItem = new ListViewItem(); pItem = LstViewRole.Items[i]; if (!pItem.Checked) { continue; } pRoleID = Convert.ToInt32(pItem.Tag.ToString()); string delStr = ""; //删除字符串 //删除角色用户关系表 delStr = "delete from userrolerelationinfo where ROLEID=" + pRoleID; pSysDB.UpdateTable(delStr, out outError); if (outError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "删除用户角色关系表失败!"); pSysDB.EndTransaction(false); pSysDB.CloseDbConnection(); return; } //删除角色信息表 delStr = "delete from rolebaseinfo where ROLEID=" + pRoleID; pSysDB.UpdateTable(delStr, out outError); if (outError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "删除角色信息表失败!"); pSysDB.EndTransaction(false); pSysDB.CloseDbConnection(); return; } } pSysDB.EndTransaction(true); pSysDB.CloseDbConnection(); SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "删除成功!"); } #endregion } else { #region 除用户及其相关信息,1、删除角色用户关系表,2、删除用户基本信息表 if (SysCommon.Error.ErrorHandle.ShowFrmInformation("是", "否", "是否删除选中用户?")) { //删除 SysCommon.DataBase.SysTable pSysDB = null; Exception outError = null; //连接数据库 ModDBOperate.ConnectDB(out pSysDB, out outError); if (outError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", outError.Message); return; } //开启事物 pSysDB.StartTransaction(); //遍历列表框,执行删除操作 for (int i = 0; i < LstViewRole.Items.Count; i++) { int pUserID = -1;//角色ID ListViewItem pItem = new ListViewItem(); pItem = LstViewRole.Items[i]; if (!pItem.Checked) { continue; } pUserID = Convert.ToInt32(pItem.Tag.ToString()); string delStr = ""; //删除字符串 //删除角色用户关系表 delStr = "delete from userrolerelationinfo where USERID=" + pUserID; pSysDB.UpdateTable(delStr, out outError); if (outError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "删除用户角色关系表失败!"); pSysDB.EndTransaction(false); pSysDB.CloseDbConnection(); return; } //删除该用户的作业分配区域 delStr = "delete from UPDATEINFO where USERID=" + pUserID; pSysDB.UpdateTable(delStr, out outError); if (outError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "删除用户角色关系表失败!"); pSysDB.EndTransaction(false); pSysDB.CloseDbConnection(); return; } //删除角色信息表 delStr = "delete from userbaseinfo where USERID=" + pUserID; pSysDB.UpdateTable(delStr, out outError); if (outError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "删除角色信息表失败!"); pSysDB.EndTransaction(false); pSysDB.CloseDbConnection(); return; } } pSysDB.EndTransaction(true); pSysDB.CloseDbConnection(); SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "删除成功!"); } #endregion } this.Close(); }
public override void OnClick() { //执行等高线点线矛盾检查 //FrmMathematicsCheck mFrmMathematicsCheck = new FrmMathematicsCheck(_AppHk, enumErrorType.等高线点线矛盾); //mFrmMathematicsCheck.ShowDialog(); Exception eError = null; #region 错误日志保存 //错误日志连接信息 string logPath = TopologyCheckClass.GeoLogPath + "Log" + System.DateTime.Today.Year.ToString() + System.DateTime.Today.Month.ToString() + System.DateTime.Today.Day.ToString() + System.DateTime.Now.Hour.ToString() + System.DateTime.Now.Minute.ToString() + System.DateTime.Now.Second.ToString() + ".xls";; if (File.Exists(logPath)) { if (SysCommon.Error.ErrorHandle.ShowFrmInformation("是", "否", "日志文件\n'" + logPath + "'\n已经存在,是否替换?")) { File.Delete(logPath); } else { return; } } //生成日志信息EXCEL格式 SysCommon.DataBase.SysDataBase pSysLog = new SysCommon.DataBase.SysDataBase(); pSysLog.SetDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + logPath + "; Extended Properties=Excel 8.0;", SysCommon.enumDBConType.OLEDB, SysCommon.enumDBType.ACCESS, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "日志信息表连接失败!"); return; } string strCreateTableSQL = @" CREATE TABLE "; strCreateTableSQL += @" 错误日志 "; strCreateTableSQL += @" ( "; strCreateTableSQL += @" 检查功能名 VARCHAR, "; strCreateTableSQL += @" 错误类型 VARCHAR, "; strCreateTableSQL += @" 错误描述 VARCHAR, "; strCreateTableSQL += @" 数据图层1 VARCHAR, "; strCreateTableSQL += @" 数据OID1 VARCHAR, "; strCreateTableSQL += @" 数据图层2 VARCHAR, "; strCreateTableSQL += @" 数据OID2 VARCHAR, "; strCreateTableSQL += @" 定位点X VARCHAR , "; strCreateTableSQL += @" 定位点Y VARCHAR , "; strCreateTableSQL += @" 检查时间 VARCHAR ,"; strCreateTableSQL += @" 数据文件路径 VARCHAR "; strCreateTableSQL += @" ) "; pSysLog.UpdateTable(strCreateTableSQL, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "插入表头出错!"); pSysLog.CloseDbConnection(); return; } DataCheckClass dataCheckCls = new DataCheckClass(_AppHk); //将日志表连接信息和表名保存起来 dataCheckCls.ErrDbCon = pSysLog.DbConn; dataCheckCls.ErrTableName = "错误日志"; #endregion #region 获得要检查的IFeatureClass的集合 //将Mapcontrol上所有的图层名保存起来 List <IFeatureClass> LstFeaClass = new List <IFeatureClass>(); for (int i = 0; i < _AppHk.MapControl.LayerCount; i++) { ILayer player = _AppHk.MapControl.get_Layer(i); if (player is IGroupLayer) { ICompositeLayer pComLayer = player as ICompositeLayer; for (int j = 0; j < pComLayer.Count; j++) { ILayer mLayer = pComLayer.get_Layer(j); IFeatureLayer mfeatureLayer = mLayer as IFeatureLayer; if (mfeatureLayer == null) { continue; } IFeatureClass pfeaCls = mfeatureLayer.FeatureClass; if (!LstFeaClass.Contains(pfeaCls)) { LstFeaClass.Add(pfeaCls); } } } else { IFeatureLayer pfeatureLayer = player as IFeatureLayer; if (pfeatureLayer == null) { continue; } IFeatureClass mFeaCls = pfeatureLayer.FeatureClass; if (!LstFeaClass.Contains(mFeaCls)) { LstFeaClass.Add(mFeaCls); } } } #endregion try { SysCommon.DataBase.SysTable pSysTable = new SysCommon.DataBase.SysTable(); string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + TopologyCheckClass.GeoDataCheckParaPath; pSysTable.SetDbConnection(conStr, SysCommon.enumDBConType.OLEDB, SysCommon.enumDBType.ACCESS, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "GIS数据检查配置表连接失败!"); pSysLog.CloseDbConnection(); return; } //高程点图层,参数ID为19(还需要改进) string pointFeaclsname = TopologyCheckClass.GetParaValue(pSysTable, 19, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "读取数据减配置表失败。" + eError.Message); pSysLog.CloseDbConnection(); pSysTable.CloseDbConnection(); return; } //等高线图层,参数ID为20 string lineFeaclsname = TopologyCheckClass.GetParaValue(pSysTable, 20, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "读取数据减配置表失败。" + eError.Message); pSysLog.CloseDbConnection(); pSysTable.CloseDbConnection(); return; } //高程点高程字段名,参数ID为22 string pointFieldsname = TopologyCheckClass.GetParaValue(pSysTable, 22, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "读取数据减配置表失败。" + eError.Message); pSysLog.CloseDbConnection(); pSysTable.CloseDbConnection(); return; } //等高线高程字段名,参数ID为23 string lineFieldname = TopologyCheckClass.GetParaValue(pSysTable, 23, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "读取数据减配置表失败。" + eError.Message); pSysLog.CloseDbConnection(); pSysTable.CloseDbConnection(); return; } //等高线间距值,参数ID为21 string intervalValue = TopologyCheckClass.GetParaValue(pSysTable, 21, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "读取数据减配置表失败。" + eError.Message); pSysLog.CloseDbConnection(); pSysTable.CloseDbConnection(); return; } //高程点搜索半径,参数ID为38 string radiu = TopologyCheckClass.GetParaValue(pSysTable, 38, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "读取数据减配置表失败。" + eError.Message); pSysLog.CloseDbConnection(); pSysTable.CloseDbConnection(); return; } if (_AppHk.DataTree == null) { return; } _AppHk.DataTree.Nodes.Clear(); //创建处理树图 dataCheckCls.IntialTree(_AppHk.DataTree); //设置树节点颜色 dataCheckCls.setNodeColor(_AppHk.DataTree); _AppHk.DataTree.Tag = false; //创建树图节点(以图层名作为根结点) DevComponents.AdvTree.Node pNode = new DevComponents.AdvTree.Node(); pNode = (DevComponents.AdvTree.Node)dataCheckCls.CreateAdvTreeNode(_AppHk.DataTree.Nodes, pointFeaclsname, pointFeaclsname, _AppHk.DataTree.ImageList.Images[6], true);//图层名节点 //执行等高线点线矛盾检查 dataCheckCls.PointLineElevCheck(LstFeaClass, lineFeaclsname, lineFieldname, pointFeaclsname, pointFieldsname, Convert.ToDouble(intervalValue), out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "等高线点线矛盾检查失败!" + eError.Message); pSysLog.CloseDbConnection(); pSysTable.CloseDbConnection(); return; } //改变树图运行状态 dataCheckCls.ChangeTreeSelectNode(pNode, "完成图层" + pointFeaclsname + "等高线点线矛盾检查!", false); SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "数据检查完成!"); pSysLog.CloseDbConnection(); pSysTable.CloseDbConnection(); //隐藏进度条 dataCheckCls.ShowProgressBar(false); } catch (Exception ex) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", ex.Message); pSysLog.CloseDbConnection(); return; } }
public override void OnClick() { Exception eError = null; DevComponents.AdvTree.Node SelNode = m_Hook.ProjectTree.SelectedNode; long dataID = long.Parse(SelNode.Tag.ToString()); //数据ID //获得项目节点 DevComponents.AdvTree.Node proNode = SelNode; while (proNode.DataKey.ToString() != EnumTreeNodeType.PROJECT.ToString()) { proNode = proNode.Parent; } long projectID = long.Parse(proNode.Tag.ToString()); //项目ID //获得根节点,数据库节点 DevComponents.AdvTree.Node mDBNode = SelNode; while (mDBNode.Parent != null) { mDBNode = mDBNode.Parent; } //若不是数据库节点,就返回 if (mDBNode == null) { return; } if (mDBNode.DataKey == null) { return; } if (mDBNode.DataKey.ToString() == "") { return; } if (mDBNode.DataKey.ToString() != EnumTreeNodeType.DATABASE.ToString()) { return; } if (mDBNode.Name == "文件连接") { //进行定位操作 //连接数据库 XmlElement dbElem = mDBNode.Tag as XmlElement; if (dbElem == null) { return; } string ipStr = dbElem.GetAttribute("MetaDBConn"); // string ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ipStr + ";Persist Security Info=True";//元数据连接字符串 string ConnStr = ipStr; //设置元数据库连接 SysCommon.DataBase.SysTable pSysDB = new SysCommon.DataBase.SysTable(); pSysDB.SetDbConnection(ConnStr, SysCommon.enumDBConType.ORACLE, SysCommon.enumDBType.ORACLE, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "连接元数据库失败!连接地址为:" + ipStr); return; } string str = "select * from ProjectMDTable where ID=" + projectID; DataTable dt = pSysDB.GetSQLTable(str, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "查找项目元信息表出错!"); pSysDB.CloseDbConnection(); return; } if (dt.Rows.Count == 0) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "找不到ID为:" + projectID + "的项目元信息!"); pSysDB.CloseDbConnection(); return; } string RangeDBPath = dt.Rows[0]["图幅结合表"].ToString().Trim(); //图幅结合表 //查找数据对应的图幅的比例尺和图幅号 string str1 = ""; string mapNO = ""; //图幅号 long mapSale = 0; //图幅比例尺 string feaClsName = ""; //范围图层名 if (m_DataTypeID == 0) { //标准图幅 str1 = "select 图幅号,图幅比例尺 from StandardMapMDTable where ID=" + dataID; feaClsName = "MapFrame_"; } else if (m_DataTypeID == 1) { //非标准图幅 str1 = "select 块图号,块图比例尺 from NonstandardMapMDTable where ID=" + dataID; feaClsName = "Range_"; } DataTable tempDT = pSysDB.GetSQLTable(str1, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "查询数据表格出错!"); pSysDB.CloseDbConnection(); return; } if (tempDT.Rows.Count == 0) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "找不到数据ID为:" + dataID + "的数据元信息!"); pSysDB.CloseDbConnection(); return; } mapNO = tempDT.Rows[0][0].ToString().Trim(); if (tempDT.Rows[0][1].ToString().Trim() != "") { mapSale = long.Parse(tempDT.Rows[0][1].ToString().Trim()); } if (mapSale == 0) { return; //若没有填写比例尺信息则返回 } feaClsName += mapSale.ToString(); pSysDB.CloseDbConnection(); SysCommon.Gis.SysGisDataSet pSysDT = new SysCommon.Gis.SysGisDataSet(); pSysDT.SetWorkspace(RangeDBPath, SysCommon.enumWSType.PDB, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "连接范围库出错,连接地址为:\n" + RangeDBPath); return; } IFeatureClass rangeFeaCls = pSysDT.GetFeatureClass(feaClsName, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "查找范围图层出错,图层名为:\n" + feaClsName); return; } try { string whereStr = "MAP_NEWNO='" + mapNO + "'"; IQueryFilter pFilter = new QueryFilterClass(); pFilter.WhereClause = whereStr; IFeatureCursor pCursor = rangeFeaCls.Search(pFilter, false); if (pCursor == null) { return; } IFeature pFea = pCursor.NextFeature(); if (pFea != null) { //进行定位 ZoomToFeature(m_Hook.MapControl, pFea); } else { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "范围要素不存在!"); return; } //释放CURSOR System.Runtime.InteropServices.Marshal.ReleaseComObject(pCursor); } catch (Exception ex) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", ex.Message); return; } } }
/// <summary> /// 初始化角色类型列表框 /// </summary> private void intialForm() { SysCommon.DataBase.SysTable pSysDB = null; Exception outError = null; //连接数据库 ModDBOperate.ConnectDB(out pSysDB, out outError); if (outError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", outError.Message); m_beSucced = false; return; } #region 初始化角色类型列表 string selStr = ""; //初始化角色类型列表的字符串 selStr = "select * from roletypeinfo WHERE ROLETYPEID<> 3"; //查询角色类型表,3为系统管理员 DataTable pTable = pSysDB.GetSQLTable(selStr, out outError); if (outError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "查询角色基本信息表失败,原因:" + outError.Message); pSysDB.CloseDbConnection(); m_beSucced = false; return; } //遍历表格记录,将角色类型信息加载到ComboBox中 for (int j = 0; j < pTable.Rows.Count; j++) { string roleID = ""; //角色ID string roleName = ""; //角色类型名称 roleID = pTable.Rows[j][0].ToString().Trim(); roleName = pTable.Rows[j][2].ToString().Trim(); ComboBoxItem pItem = new ComboBoxItem(roleName, roleID); cmbGroupType.Items.Add(pItem); } if (cmbGroupType.Items.Count > 0) { cmbGroupType.SelectedIndex = 0; } #endregion if (m_BeUpdate) { #region 修改,初始化角色名列表框 string str = "select * from rolebaseinfo where roletypeid<>3"; //查询角色类型表 3为系统管理员,不能修改 DataTable RoleTable = pSysDB.GetSQLTable(str, out outError); if (outError != null || RoleTable == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "查询角色基本信息表失败!"); pSysDB.CloseDbConnection(); m_beSucced = false; return; } if (RoleTable.Rows.Count == 0) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "还未添加过角色,请检查"); pSysDB.CloseDbConnection(); m_beSucced = false; return; } for (int i = 0; i < RoleTable.Rows.Count; i++) { int pRoleID = -1; //角色ID string pRoleName = ""; //角色名称 int pRoleTypeID = -1; //角色类型ID pRoleID = Convert.ToInt32(RoleTable.Rows[i][0].ToString().Trim()); pRoleName = RoleTable.Rows[i][1].ToString().Trim(); pRoleTypeID = Convert.ToInt32(RoleTable.Rows[i][2].ToString().Trim()); ComboBoxItem pItem = new ComboBoxItem(pRoleName, pRoleID); cmbRoleName.Items.Add(pItem); } if (cmbRoleName.Items.Count > 0) { cmbRoleName.SelectedIndex = 0; } #endregion } //else //{ //} pSysDB.CloseDbConnection(); }
public override void OnClick() { Exception eError = null; SysCommon.DataBase.SysTable pSysDB = new SysCommon.DataBase.SysTable(); try { //设置查询条件后,执行查询操作 ///连接数据库 /// //string ipStr = v_DBNode.Text.Trim();//ip //if (ipStr == "") return; //string ipStr = "//" + ipStr + "//MetaDataBase//MetaDataBase.mdb";//元数据库路径 XmlElement dbElem = v_DBNode.Tag as XmlElement; if (dbElem == null) { return; } string ipStr = dbElem.GetAttribute("MetaDBConn"); //string ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ipStr + ";Persist Security Info=True";//元数据连接字符串 //pSysDB.SetDbConnection(ConnStr, SysCommon.enumDBConType.OLEDB, SysCommon.enumDBType.ACCESS, out eError); pSysDB.SetDbConnection(ipStr, SysCommon.enumDBConType.ORACLE, SysCommon.enumDBType.ORACLE, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "连接元数据库失败!"); pSysDB.CloseDbConnection(); return; } if (v_CondiStr == "") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "请设置查询条件!"); pSysDB.CloseDbConnection(); return; } DataTable resultDT = pSysDB.GetSQLTable(v_CondiStr, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "查询成果索引表出错!"); pSysDB.CloseDbConnection(); return; } ///将查询到的结果在界面上表现出来(查询结果包括数据信息和元信息) #region 将结果保存在DataTable中 DataTable tempDT = ModDBOperator.CreateDataInfoTable(); for (int i = 0; i < resultDT.Rows.Count; i++) { string dataID = ""; //数据ID string DataName = ""; //数据文件名 string projectID = ""; //项目ID string productID = ""; //产品ID string projectName = ""; //项目名称 string productName = ""; //产品名称 string scale = ""; //比例尺 string rangNO = ""; //范围号 string dataFormatID = ""; //数据格式ID string dataTypeID = ""; //数据类型ID string dataFormat = ""; //数据格式名 string dataType = ""; //数据类型名 //string saveTime = ""; //存储时间 string savePath = ""; //存储路径 string fromDate = ""; //生产日期 dataID = resultDT.Rows[i]["数据ID"].ToString().Trim(); projectID = resultDT.Rows[i]["项目ID"].ToString().Trim(); productID = resultDT.Rows[i]["产品ID"].ToString().Trim(); scale = resultDT.Rows[i]["比例尺分母"].ToString().Trim(); rangNO = resultDT.Rows[i]["范围号"].ToString().Trim(); dataFormatID = resultDT.Rows[i]["数据格式编号"].ToString().Trim(); dataTypeID = resultDT.Rows[i]["数据类型编号"].ToString().Trim(); //saveTime = resultDT.Rows[i]["存储时间"].ToString().Trim(); savePath = resultDT.Rows[i]["存储位置"].ToString().Trim(); fromDate = resultDT.Rows[i]["生产日期"].ToString().Trim(); projectName = ModDBOperator.GetProjectName(long.Parse(projectID), pSysDB, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取项目名称出错!"); pSysDB.CloseDbConnection(); return; } productName = ModDBOperator.GetProductName(long.Parse(productID), pSysDB, out eError); if (eError != null || productName == "") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取产品名称出错!"); pSysDB.CloseDbConnection(); return; } if (dataTypeID == "") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "为填写数据类型,请检查!"); pSysDB.CloseDbConnection(); return; } DataName = GetDataName(int.Parse(dataTypeID), long.Parse(dataID), pSysDB, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据文件名称出错!"); pSysDB.CloseDbConnection(); return; } switch (int.Parse(dataFormatID)) { case 0: dataFormat = "DLG"; break; case 1: dataFormat = "DEM"; break; case 2: dataFormat = "DOM"; break; case 3: dataFormat = "DRG"; break; } switch (int.Parse(dataTypeID)) { case 0: dataType = "标准图幅数据"; break; case 1: dataType = "非标准图幅数据"; break; case 2: dataType = "控制点数据"; break; } DataRow newRow = tempDT.NewRow(); newRow["ID"] = dataID; newRow["项目名称"] = projectName; newRow["产品名称"] = productName; newRow["数据文件名"] = DataName; newRow["数据类型"] = dataType; newRow["比例尺"] = scale; newRow["范围号"] = rangNO; newRow["存储位置"] = savePath; //newRow["存储时间"] = saveTime; newRow["生产日期"] = fromDate; newRow["项目ID"] = projectID.ToString(); newRow["产品ID"] = productID.ToString(); tempDT.Rows.Add(newRow); } #endregion #region 将DataTable与DataGrid进行绑定 //清空表格 if (m_Hook.DataInfoGrid.DataSource != null) { m_Hook.DataInfoGrid.DataSource = null; } //绑定 m_Hook.DataInfoGrid.DataSource = tempDT; m_Hook.DataInfoGrid.ReadOnly = true; m_Hook.DataInfoGrid.Visible = true; m_Hook.DataInfoGrid.SelectionMode = DataGridViewSelectionMode.FullRowSelect; for (int j = 0; j < m_Hook.DataInfoGrid.Columns.Count; j++) { //m_Hook.DataInfoGrid.Columns[j].Width = (m_Hook.DataInfoGrid.Width - 20) / m_Hook.DataInfoGrid.Columns.Count; m_Hook.DataInfoGrid.Columns[j].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells; } m_Hook.DataInfoGrid.RowHeadersWidth = 20; m_Hook.DataInfoGrid.Refresh(); pSysDB.CloseDbConnection(); #endregion } catch (Exception eR) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "未知错误:" + eR.Message); pSysDB.CloseDbConnection(); return; } }
/// <summary> /// 删除一个工程 /// </summary> /// <returns></returns> public bool DeleteProject(DevComponents.AdvTree.Node ProjectNode, string ConStr, long Projiectid , out string err) { Exception ex = null; err = ""; if (string.IsNullOrEmpty(this._ProName)) { err = "没有指定项目名称!"; return(false); } if (string.IsNullOrEmpty(ConStr)) { err = "没有指定元信息库连接信息!"; return(false); } int value = 0; FrmProcessBar DelBar = new FrmProcessBar(10); DelBar.Show(); DelBar.SetFrmProcessBarText("正在连接元信息库"); Application.DoEvents(); SysCommon.DataBase.SysTable pSysDB = new SysCommon.DataBase.SysTable(); //属性库连接类 pSysDB.SetDbConnection(ConStr, SysCommon.enumDBConType.ORACLE, SysCommon.enumDBType.ORACLE, out ex); if (ex != null) { err = "元信息库连接失败!连接地址为:" + ConStr; pSysDB.CloseDbConnection(); DelBar.Dispose(); DelBar.Close(); return(false); } long ProjectID = Projiectid; #region 除项目的所有产品 string Sql = "SELECT ID,产品名称,存储位置 FROM ProductMDTable WHERE 项目ID=" + ProjectID; DataTable GetTable = pSysDB.GetSQLTable(Sql, out ex); if (null != ex) { err = "获取项目的产品信息失败!"; pSysDB.CloseDbConnection(); DelBar.Dispose(); DelBar.Close(); return(false); } if (null != GetTable) { for (int i = 0; i < GetTable.Rows.Count; i++) { long ProducetId = -1; string ProductName = string.Empty; string ProductPath = string.Empty; ProducetId = long.Parse(GetTable.Rows[i][0].ToString()); ProductName = GetTable.Rows[i][1].ToString().Trim(); ProductPath = GetTable.Rows[i][2].ToString().Trim(); DelBar.SetFrmProcessBarValue(value); DelBar.SetFrmProcessBarText(" 正在删除产品:" + ProductName); value += 1; if (value == 10) { value = 0; } Application.DoEvents(); DevComponents.AdvTree.Node ProductNode = ModDBOperator.GetTreeNode(ProjectNode, ProductPath, ProductName, EnumTreeNodeType.PRODUCT.ToString(), ProducetId, out ex); if (null != ex) { err = "获取项目的产品:‘" + ProductName + "’树节点失败!"; pSysDB.CloseDbConnection(); DelBar.Dispose(); DelBar.Close(); return(false); } if (null != ProductNode) { if (!ModDBOperator.DelProduct(ProductNode, out ex)) { err = "删除项目的产品:‘" + ProductName + "’失败!"; pSysDB.CloseDbConnection(); DelBar.Dispose(); DelBar.Close(); return(false); } } } } #endregion #region 除项目的文件夹 DelBar.SetFrmProcessBarText("正在删除工程项目目录"); Application.DoEvents(); if (!ModDBOperator.DelDirtory(this._ftpIP, this._ftpUSER, this._ftpPassWord, this._ProName, out ex)) { err = "工程项目项目目录删除失败!"; pSysDB.CloseDbConnection(); DelBar.Dispose(); DelBar.Close(); return(false); } #endregion DelBar.Dispose(); DelBar.Close(); pSysDB.CloseDbConnection(); return(true); }
public override void OnClick() { Exception eError = null; FolderBrowserDialog pFolderBrowserDialog = new FolderBrowserDialog(); if (pFolderBrowserDialog.ShowDialog() == DialogResult.OK) { ///获得树图上选择的工程节点 #region 获得工程树图上的参数信息 ///获得树图上选择的工程节点 //cyf 20110626 modify DevComponents.AdvTree.Node pCurNode = m_Hook.ProjectTree.SelectedNode; //当前树节点,栅格数据节点 DevComponents.AdvTree.Node pDBProNode = m_Hook.ProjectTree.SelectedNode; //获得工程树图节点 while (pDBProNode.Parent != null) { pDBProNode = pDBProNode.Parent; } if (pDBProNode.DataKeyString != "project") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取工程树图节点失败!"); return; } //end //cyf 20110609 modify: //string pProjectname = pCurNode.Name; string pProjectname = pDBProNode.Text; //end System.Xml.XmlNode Projectnode = m_Hook.DBXmlDocument.SelectSingleNode("工程管理/工程[@名称='" + pProjectname + "']"); //cyf if (Projectnode == null) { return; } //end //cyf 20110626 modify:获取栅格数据图层的存储类型 //获得栅格数据库类型 //System.Xml.XmlElement DbTypeElem = Projectnode.SelectSingleNode(".//内容//栅格数据库") as System.Xml.XmlElement; //string dbType = DbTypeElem.GetAttribute("存储类型"); //栅格编目、栅格数据集 XmlElement pCurElem = null; //图层xml节点 try { pCurElem = pCurNode.Tag as XmlElement; } catch { } if (pCurElem == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取图层xml节点失败!"); return; } string dbType = pCurElem.GetAttribute("存储类型").Trim(); //栅格数据存储类型 string pDesRasterCollName = pCurElem.GetAttribute("名称").Trim(); //栅格数据名称 //获得栅格目录,栅格数据集名称 //System.Xml.XmlElement DbcataLogNameElem = Projectnode.SelectSingleNode(".//栅格数据库/连接信息/库体") as System.Xml.XmlElement; //if (DbcataLogNameElem == null) return; //string pDesRasterCollName = DbcataLogNameElem.GetAttribute("名称"); //栅格数据名称 //if (pDesRasterCollName == "") return; //end //获得连接信息 System.Xml.XmlElement DbConnElem = Projectnode.SelectSingleNode(".//栅格数据库/连接信息") as System.Xml.XmlElement; string pType = DbConnElem.GetAttribute("类型"); string pServer = DbConnElem.GetAttribute("服务器"); string pInstance = DbConnElem.GetAttribute("服务名"); string pDataBase = DbConnElem.GetAttribute("数据库"); string pUser = DbConnElem.GetAttribute("用户"); string pPassword = DbConnElem.GetAttribute("密码"); string pVersion = DbConnElem.GetAttribute("版本"); //cyf 20110609 add string pConnectInfo = ""; //连接信息字符串 pConnectInfo = pType + "," + pServer + "," + pInstance + "," + pDataBase + "," + pUser + "," + pPassword + "," + pVersion; //end #endregion #region 设置数据库连接信息 SysCommon.Gis.SysGisDataSet pSysDt = new SysCommon.Gis.SysGisDataSet(); if (pType.ToUpper() == "PDB") { pSysDt.SetWorkspace(pDataBase, SysCommon.enumWSType.PDB, out eError); } else if (pType.ToUpper() == "GDB") { pSysDt.SetWorkspace(pDataBase, SysCommon.enumWSType.GDB, out eError); } else if (pType.ToUpper() == "SDE") { pSysDt.SetWorkspace(pServer, pInstance, "", pUser, pPassword, pVersion, out eError); pDesRasterCollName = pUser + "." + pDesRasterCollName; } if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "连接数据库失败!"); return; } #endregion //cyf 20110609 add:读取栅格数据入库日志, #region 检查是否存在已经入库的数据 SysCommon.DataBase.SysTable pSysTable = null; Dictionary <string, string> DicbeInDb = new Dictionary <string, string>(); //用来已经入库的栅格数据的源路径和目标连接信息 if (File.Exists(ModData.RasterInDBLog)) { //若存在栅格数据入库日志,则将入库过的数据的路径保存起来 pSysTable = new SysCommon.DataBase.SysTable(); pSysTable.SetDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ModData.RasterInDBLog + ";Persist Security Info=True", SysCommon.enumDBConType.OLEDB, SysCommon.enumDBType.ACCESS, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "连接栅格入库日志表失败!"); return; } //获得栅格入库日志表 DataTable pTable = pSysTable.GetTable("rasterfileinfo", out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取栅格入库日志表失败!"); pSysTable.CloseDbConnection(); return; } for (int i = 0; i < pTable.Rows.Count; i++) { string pFileName = pTable.Rows[i][0].ToString(); string pDesPath = pTable.Rows[i][2].ToString(); if (!DicbeInDb.ContainsKey(pFileName)) { DicbeInDb.Add(pFileName, pDesPath); } } //关闭连接 pSysTable.CloseDbConnection(); //cyf 20110610 modify if (pTable.Rows.Count > 0) { //存在已经入库的数据 RasterErrInfoFrm pRasterErrInfoFrm = new RasterErrInfoFrm(pTable); if (pRasterErrInfoFrm.ShowDialog() != DialogResult.OK) { //若不继续入库,则返回 return; } } //end } #endregion //end //cyf 20110609 //连接栅格数据入库日志表 if (!File.Exists(ModData.RasterInDBLog)) { if (File.Exists(ModData.RasterInDBTemp)) { File.Copy(ModData.RasterInDBTemp, ModData.RasterInDBLog); } SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "没有找到日志表模板:" + ModData.RasterInDBTemp); return; } pSysTable = new SysCommon.DataBase.SysTable(); pSysTable.SetDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ModData.RasterInDBLog + ";Persist Security Info=True", SysCommon.enumDBConType.OLEDB, SysCommon.enumDBType.ACCESS, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "连接栅格入库日志表失败!"); return; } //获得文件夹下面所有的子文件 string pRootFile = pFolderBrowserDialog.SelectedPath;// 选择的文件夹路径 DirectoryInfo pDirectoryInfo = new DirectoryInfo(pRootFile); //FileInfo[] pFileInfoArr = pDirectoryInfo.GetFiles("*.tif", SearchOption.AllDirectories); FileInfo[] pFileInfoArr = pDirectoryInfo.GetFiles("*.*", SearchOption.AllDirectories); //添加进度条 if (pAppFormRef.ProgressBar != null) { pAppFormRef.ProgressBar.Visible = true; pAppFormRef.ProgressBar.Maximum = pFileInfoArr.Length; pAppFormRef.ProgressBar.Minimum = 0; pAppFormRef.ProgressBar.Value = 0; Application.DoEvents(); } //end for (int i = 0; i < pFileInfoArr.Length; i++) { FileInfo pFileInfo = pFileInfoArr[i]; string pFileName = pFileInfo.FullName; //文件名 if (!pFileName.ToLower().EndsWith("tif") && !pFileName.ToLower().EndsWith("img")) { //如果不是TIF文件和IMG文件则不参与检查 //进度条加1 if (pAppFormRef.ProgressBar != null) { pAppFormRef.ProgressBar.Value++; Application.DoEvents(); } continue; } //cyf 20110609 add:对入库过的数据进行判断和筛选 if (DicbeInDb.ContainsKey(pFileName)) { //已经进行入库 if (DicbeInDb[pFileName] == pConnectInfo) { //如果源的路径与目标的路径都相同,则说明已经入库了 //进度条加1 if (pAppFormRef.ProgressBar != null) { pAppFormRef.ProgressBar.Value++; Application.DoEvents(); } continue; } } //end //cyf 20110610 add:文字提示 if (pAppFormRef != null) { pAppFormRef.OperatorTips = "正在进行数据" + pFileName + "入库..."; Application.DoEvents(); } //end //cyf 20110610 adds string Starime = DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToLongTimeString(); //开始时间 //end //进行数据入库 string fileFullName = pFileName; if (dbType == "栅格数据集") { //栅格数据集入库 InputRasterDataset(pDesRasterCollName, fileFullName, pSysDt.WorkSpace, out eError); } else if (dbType == "栅格编目") { //栅格编目数据入库 InputRasterCatalogData(pDesRasterCollName, fileFullName, pSysDt.WorkSpace, out eError); } if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "栅格数据入库出错!\n" + eError.Message); return; } //若入库成功,则将入库成功的数据添加到栅格数据日志表中 //cyf 20110609 插入栅格数据日志表中 string insertStr = "insert into rasterfileinfo values('" + pFileName + "','" + Starime + "','" + DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToLongTimeString() + "','" + pConnectInfo + "')"; pSysTable.UpdateTable(insertStr, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "插入栅格入库日志表失败!"); continue; } //进度条加1 if (pAppFormRef.ProgressBar != null) { pAppFormRef.ProgressBar.Value++; Application.DoEvents(); } //end } //cyf 20110609 add: //关闭连接 pSysTable.CloseDbConnection(); //end //if (dbType == "栅格编目") //{ // InputRasterCatalogData(pDesRasterCollName, fileList, pSysDt.WorkSpace, out eError); //} SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "栅格数据入库完成!"); //cyf 20110609 add if (pAppFormRef.ProgressBar != null) { pAppFormRef.ProgressBar.Visible = false; //cyf 20110610 add:清空文字提示 pAppFormRef.OperatorTips = ""; //end } //end //cyf 20110610 add:栅格正常结束的日志 if (File.Exists(ModData.RasterInDBLog)) { File.Delete(ModData.RasterInDBLog); } //end } }
public override void OnClick() { Exception eError = null; OpenFileDialog OpenFile = new OpenFileDialog(); OpenFile.CheckFileExists = true; OpenFile.CheckPathExists = true; OpenFile.Title = "选择栅格数据"; OpenFile.Filter = "tif数据(*.tif)|*.tif|img数据(*.img)|*.img"; OpenFile.Multiselect = true; if (OpenFile.ShowDialog() == DialogResult.OK) { string[] fileArr = OpenFile.FileNames; ///获得树图上选择的工程节点 //cyf 20110626 modify DevComponents.AdvTree.Node pCurNode = m_Hook.ProjectTree.SelectedNode; //当前树节点,栅格数据节点 DevComponents.AdvTree.Node pDBProNode = m_Hook.ProjectTree.SelectedNode; //获得工程树图节点 while (pDBProNode.Parent != null) { pDBProNode = pDBProNode.Parent; } if (pDBProNode.DataKeyString != "project") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取工程树图节点失败!"); return; } //end //cyf 20110609 modify: //string pProjectname = pCurNode.Name; string pProjectname = pDBProNode.Text; //end System.Xml.XmlNode Projectnode = m_Hook.DBXmlDocument.SelectSingleNode("工程管理/工程[@名称='" + pProjectname + "']"); //cyf if (Projectnode == null) { return; } //end //cyf 20110626 modify:获取栅格数据图层的存储类型 //获得栅格数据库类型 //System.Xml.XmlElement DbTypeElem = Projectnode.SelectSingleNode(".//内容//栅格数据库") as System.Xml.XmlElement; //string dbType = DbTypeElem.GetAttribute("存储类型"); //栅格编目、栅格数据集 XmlElement pCurElem = null; //图层xml节点 try { pCurElem = pCurNode.Tag as XmlElement; } catch { } if (pCurElem == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取图层xml节点失败!"); return; } string dbType = pCurElem.GetAttribute("存储类型").Trim(); //栅格数据存储类型 string pDesRasterCollName = pCurElem.GetAttribute("名称").Trim(); //栅格数据名称 //获得栅格目录,栅格数据集名称 //System.Xml.XmlElement DbcataLogNameElem = Projectnode.SelectSingleNode(".//栅格数据库/连接信息/库体") as System.Xml.XmlElement; //if (DbcataLogNameElem == null) return; //string pDesRasterCollName = DbcataLogNameElem.GetAttribute("名称"); //栅格数据名称 //if (pDesRasterCollName == "") return; //end //获得连接信息 System.Xml.XmlElement DbConnElem = Projectnode.SelectSingleNode(".//栅格数据库/连接信息") as System.Xml.XmlElement; string pType = DbConnElem.GetAttribute("类型"); string pServer = DbConnElem.GetAttribute("服务器"); string pInstance = DbConnElem.GetAttribute("服务名"); string pDataBase = DbConnElem.GetAttribute("数据库"); string pUser = DbConnElem.GetAttribute("用户"); string pPassword = DbConnElem.GetAttribute("密码"); string pVersion = DbConnElem.GetAttribute("版本"); //cyf 20110609 add string pConnectInfo = ""; //连接信息字符串 pConnectInfo = pType + "|" + pServer + "|" + pInstance + "|" + pDataBase + "|" + pUser + "|" + pPassword + "|" + pVersion; //end //获得目标数据库的参数 //System.Xml.XmlElement DbParaElem = Projectnode.SelectSingleNode(".//栅格数据库/参数设置") as System.Xml.XmlElement; //string resampleTypeStr = DbParaElem.GetAttribute("重采样类型"); //string compressionTypeStr = DbParaElem.GetAttribute("压缩类型"); //string pyramid = DbParaElem.GetAttribute("金字塔"); //string tileH = DbParaElem.GetAttribute("瓦片高度"); //string tileW = DbParaElem.GetAttribute("瓦片宽度"); //string bandNum = DbParaElem.GetAttribute("波段"); //rstResamplingTypes resampleType = GetResampleTpe(resampleTypeStr); //esriRasterCompressionType compressionType = GetCompression(compressionTypeStr); //if (tileH == "") //{ // tileH = "128"; //} //if (tileW == "") //{ // tileW = "128"; //} //if (pyramid == "") //{ // pyramid = "6"; //} //设置数据库连接信息 SysCommon.Gis.SysGisDataSet pSysDt = new SysCommon.Gis.SysGisDataSet(); if (pType.ToUpper() == "PDB") { pSysDt.SetWorkspace(pDataBase, SysCommon.enumWSType.PDB, out eError); } else if (pType.ToUpper() == "GDB") { pSysDt.SetWorkspace(pDataBase, SysCommon.enumWSType.GDB, out eError); } else if (pType.ToUpper() == "SDE") { pSysDt.SetWorkspace(pServer, pInstance, "", pUser, pPassword, pVersion, out eError); pDesRasterCollName = pUser + "." + pDesRasterCollName; } if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "连接数据库失败!"); return; } //Thread aThread = null; //cyf 20110609 add:读取栅格数据入库日志,检查是否存在已经入库的数据 SysCommon.DataBase.SysTable pSysTable = null; Dictionary <string, string> DicbeInDb = new Dictionary <string, string>(); //用来已经入库的栅格数据的源路径和目标连接信息 if (File.Exists(ModData.RasterInDBLog)) { //若存在栅格数据入库日志,则将入库过的数据的路径保存起来 pSysTable = new SysCommon.DataBase.SysTable(); pSysTable.SetDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ModData.RasterInDBLog + ";Persist Security Info=True", SysCommon.enumDBConType.OLEDB, SysCommon.enumDBType.ACCESS, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "连接栅格入库日志表失败!"); return; } //获得栅格入库日志表 DataTable pTable = pSysTable.GetTable("rasterfileinfo", out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取栅格入库日志表失败!"); pSysTable.CloseDbConnection(); return; } for (int i = 0; i < pTable.Rows.Count; i++) { string pFileName = pTable.Rows[i][0].ToString(); string pDesPath = pTable.Rows[i][3].ToString(); if (!DicbeInDb.ContainsKey(pFileName)) { DicbeInDb.Add(pFileName, pDesPath); } } //关闭连接 pSysTable.CloseDbConnection(); //cyf 20110610 modify if (pTable.Rows.Count > 0) { //存在已经入库的数据 RasterErrInfoFrm pRasterErrInfoFrm = new RasterErrInfoFrm(pTable); if (pRasterErrInfoFrm.ShowDialog() != DialogResult.OK) { //若不继续入库,则返回 return; } } //end } //end ///进行数据入库 //cyf 20110609 //连接栅格数据入库日志表 if (!File.Exists(ModData.RasterInDBLog)) { if (File.Exists(ModData.RasterInDBTemp)) { File.Copy(ModData.RasterInDBTemp, ModData.RasterInDBLog); } SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "没有找到日志表模板:" + ModData.RasterInDBTemp); return; } pSysTable = new SysCommon.DataBase.SysTable(); pSysTable.SetDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ModData.RasterInDBLog + ";Persist Security Info=True", SysCommon.enumDBConType.OLEDB, SysCommon.enumDBType.ACCESS, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "连接栅格入库日志表失败!"); return; } //添加进度条 if (pAppFormRef.ProgressBar != null) { pAppFormRef.ProgressBar.Visible = true; pAppFormRef.ProgressBar.Maximum = fileArr.Length; pAppFormRef.ProgressBar.Minimum = 0; pAppFormRef.ProgressBar.Value = 0; Application.DoEvents(); } //end //List<string> fileList = new List<string>(); //要进行入库的文件名 for (int i = 0; i < fileArr.Length; i++) { //if (!fileList.Contains(fileArr[i])) //{ // fileList.Add(fileArr[i]); //} //cyf 20110609 add:对入库过的数据进行判断和筛选 if (DicbeInDb.ContainsKey(fileArr[i])) { //已经进行入库 if (DicbeInDb[fileArr[i]] == pConnectInfo) { //如果源的路径与目标的路径都相同,则说明已经入库了 //进度条加1 if (pAppFormRef.ProgressBar != null) { pAppFormRef.ProgressBar.Value++; Application.DoEvents(); } continue; } } //end //cyf 20110610 add:文字提示 if (pAppFormRef != null) { pAppFormRef.OperatorTips = "正在进行数据" + fileArr[i] + "入库..."; Application.DoEvents(); } //end //cyf 20110610 adds string Starime = DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToLongTimeString(); //开始时间 //end string fileFullName = fileArr[i]; if (dbType == "栅格数据集") { //栅格数据集入库 InputRasterDataset(pDesRasterCollName, fileFullName, pSysDt.WorkSpace, out eError); } else if (dbType == "栅格编目") { //栅格编目数据入库 InputRasterCatalogData(pDesRasterCollName, fileFullName, pSysDt.WorkSpace, out eError); } if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "栅格数据入库出错!\n" + eError.Message); return; } //若入库成功后,更新则将入库成功的数据添加到栅格数据日志表中 //cyf 20110609 插入栅格数据日志表中 string insertStr = "insert into rasterfileinfo values('" + fileArr[i] + "','" + Starime + "','" + DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToLongTimeString() + "','" + pConnectInfo + "')"; pSysTable.UpdateTable(insertStr, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "插入栅格入库日志表失败!"); continue; } //进度条加1 if (pAppFormRef.ProgressBar != null) { pAppFormRef.ProgressBar.Value++; Application.DoEvents(); } //end } //cyf 20110609 add: //关闭连接 pSysTable.CloseDbConnection(); //end //if (dbType == "栅格编目") //{ // InputRasterCatalogData(pDesRasterCollName, fileList, pSysDt.WorkSpace, out eError); //} SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "栅格数据入库完成!"); //cyf 20110609 add if (pAppFormRef.ProgressBar != null) { pAppFormRef.ProgressBar.Visible = false; //cyf 20110610 add:清空文字提示 pAppFormRef.OperatorTips = ""; //end } //end //cyf 20110610 add:栅格正常结束的日志 if (File.Exists(ModData.RasterInDBLog)) { //File.Delete(ModData.RasterInDBLog); } //end } }