using System;
using BP.DA;
using BP.En;
using BP.Sys;
namespace BP.WF.DTS
{
///
/// 修复数据库 的摘要说明
///
public class RepariDB : Method
{
///
/// 不带有参数的方法
///
public RepariDB()
{
this.Title = "修复数据库";
this.Help = "把最新的版本的与当前的数据表结构,做一个自动修复, 修复内容:缺少列,缺少列注释,列注释不完整或者有变化。";
this.Help += "
因为表单设计器的错误,丢失了字段,通过它也可以自动修复。";
}
///
/// 设置执行变量
///
///
public override void Init()
{
//this.Warning = "您确定要执行吗?";
//HisAttrs.AddTBString("P1", null, "原密码", true, false, 0, 10, 10);
//HisAttrs.AddTBString("P2", null, "新密码", true, false, 0, 10, 10);
//HisAttrs.AddTBString("P3", null, "确认", true, false, 0, 10, 10);
}
///
/// 当前的操纵员是否可以执行这个方法
///
public override bool IsCanDo
{
get
{
return true;
}
}
///
/// 执行
///
/// 返回执行结果
public override object Do()
{
string rpt =BP.Pub.PubClass.DBRpt(DBCheckLevel.High);
//// 手动升级. 2011-07-08 补充节点字段分组.
//string sql = "DELETE FROM Sys_EnCfg WHERE No='BP.WF.Template.NodeSheet'";
//DBAccess.RunSQL(sql);
//sql = "INSERT INTO Sys_EnCfg(No,GroupTitle) VALUES ('BP.WF.Template.NodeSheet','NodeID=基本配置@WarningHour=考核属性@SendLab=功能按钮标签与状态')";
//DBAccess.RunSQL(sql);
// 修复因bug丢失的字段.
MapDatas mds = new MapDatas();
mds.RetrieveAll();
foreach (MapData md in mds)
{
string nodeid = md.No.Replace("ND","");
try
{
BP.WF.Node nd = new Node(int.Parse(nodeid));
nd.RepareMap(nd.HisFlow);
continue;
}
catch(Exception ex)
{
}
MapAttr attr = new MapAttr();
if (attr.IsExit(MapAttrAttr.KeyOfEn, "OID", MapAttrAttr.FK_MapData, md.No) == false)
{
attr.setFK_MapData(md.No);
attr.setKeyOfEn("OID");
attr.setName("OID");
attr.setMyDataType(DataType.AppInt);
attr.setUIContralType(UIContralType.TB);
attr.setLGType(FieldTypeS.Normal);
attr.setUIVisible(false);
attr.setUIIsEnable(false);
attr.DefVal = "0";
attr.HisEditType = BP.En.EditType.Readonly;
attr.Insert();
}
}
return "执行成功...";
}
}
}