/// <summary>
        /// 与业务表数据同步
        /// </summary>
        /// <returns></returns>
        public string DTSBTable_Save()
        {
            Flow flow = new Flow(this.FK_Flow);

            BP.WF.Template.FlowDTSWay dtsWay = (BP.WF.Template.FlowDTSWay) this.GetRequestValInt("RB_DTSWay");

            flow.DTSWay = dtsWay;
            if (flow.DTSWay == FlowDTSWay.None)
            {
                flow.Update();
                return("保存成功.");
            }

            flow.DTSDBSrc  = this.GetRequestVal("DDL_DBSrc");
            flow.DTSBTable = this.GetRequestVal("DDL_Table");

            DTSField field = (DTSField)this.GetRequestValInt("DTSField");

            if (field == 0)
            {
                field = DTSField.SameNames;
            }
            flow.DTSField = field;

            SFDBSrc s = new SFDBSrc("local");

            if (field == DTSField.SameNames)
            {
                DataTable dt = s.GetColumns(flow.PTable);

                s = new SFDBSrc(flow.DTSDBSrc);                // this.src);
                DataTable ywDt = s.GetColumns(flow.DTSBTable); // this.ywTableName);

                string str   = "";
                string ywStr = "";
                foreach (DataRow ywDr in ywDt.Rows)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        if (ywDr["No"].ToString().ToUpper() == dr["No"].ToString().ToUpper())
                        {
                            if (dr["No"].ToString().ToUpper() == "OID")
                            {
                                flow.DTSBTablePK = "OID";
                            }
                            str   += dr["No"].ToString() + ",";
                            ywStr += ywDr["No"].ToString() + ",";
                        }
                    }
                }

                if (!DataType.IsNullOrEmpty(str))
                {
                    flow.DTSFields = str.TrimEnd(',') + "@" + ywStr.TrimEnd(',');
                }
                else
                {
                    PubClass.Alert("未检测到业务主表【" + flow.PTable + "】与表【" + flow.DTSBTable + "】有相同的字段名.");
                    return("");//不执行保存
                }
            }
            else//按设置的字段匹配   检查在
            {
                try
                {
                    s = new SFDBSrc("local");
                    string str = flow.DTSFields;

                    string[] arr = str.Split('@');


                    string sql = "SELECT " + arr[0] + " FROM " + flow.PTable;

                    s.RunSQL(sql);

                    s = new SFDBSrc(flow.DTSDBSrc);

                    sql = "SELECT " + arr[1] + ", " + flow.DTSBTablePK
                          + " FROM " + flow.DTSBTable;

                    s.RunSQL(sql);
                }
                catch
                {
                    //PubClass.Alert(ex.Message);
                    PubClass.Alert("设置的字段有误.【" + flow.DTSFields + "】");
                    return("");//不执行保存
                }
            }
            flow.Update();
            return(flow.ToJson());
        }
Beispiel #2
0
        /// <summary>
        /// 保存数据同步
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void BtnSave_Click(object sender, EventArgs e)
        {
            Flow flow = new Flow(this.FK_Flow);

            #region   步
            if (this.RB_DTSWay0.Checked)
            {
                flow.DTSWay = FlowDTSWay.None;
            }
            #endregion

            #region  步
            if (this.RB_DTSWay1.Checked)
            {
                flow.DTSDBSrc  = this.DDL_DBSrc.SelectedValue;
                flow.DTSBTable = this.DDL_Table.SelectedValue;

                DTSField field = DTSField.SameNames;

                if (this.RB_DTSField1.Checked)
                {
                    field = DTSField.SpecField;
                }

                flow.DTSField = field;

                FlowDTSTime time = FlowDTSTime.AllNodeSend;

                if (this.RB_DTSTime1.Checked)
                {
                    time = FlowDTSTime.SpecNodeSend;
                }

                if (this.RB_DTSTime2.Checked)
                {
                    time = FlowDTSTime.WhenFlowOver;
                }

                if (time == FlowDTSTime.SpecNodeSend)
                {
                    string specNodes = this.HiddenField.Value.TrimEnd(',');
                    if (string.IsNullOrEmpty(specNodes))
                    {
                        PubClass.Alert("没有设置要同步的节点");
                        return;
                    }
                    else
                    {
                        flow.DTSSpecNodes = specNodes.TrimEnd(',');
                    }
                }

                flow.DTSTime = time;
                flow.DTSWay  = FlowDTSWay.Syn;

                #region 字段名相同
                SFDBSrc s = new SFDBSrc("local");
                if (field == DTSField.SameNames)
                {
                    DataTable dt = s.GetColumns(flow.PTable);

                    s = new SFDBSrc(this.DDL_DBSrc.SelectedValue);               // this.src);
                    DataTable ywDt = s.GetColumns(this.DDL_Table.SelectedValue); // this.ywTableName);

                    string str   = "";
                    string ywStr = "";
                    foreach (DataRow ywDr in ywDt.Rows)
                    {
                        foreach (DataRow dr in dt.Rows)
                        {
                            if (ywDr["No"].ToString().ToUpper() == dr["No"].ToString().ToUpper())
                            {
                                if (dr["No"].ToString().ToUpper() == "OID")
                                {
                                    flow.DTSBTablePK = "OID";
                                }
                                str   += dr["No"].ToString() + ",";
                                ywStr += ywDr["No"].ToString() + ",";
                            }
                        }
                    }

                    if (!string.IsNullOrEmpty(str))
                    {
                        flow.DTSFields = str.TrimEnd(',') + "@" + ywStr.TrimEnd(',');
                    }
                    else
                    {
                        PubClass.Alert("未检测到业务主表【" + flow.PTable + "】与表【" + this.DDL_Table.SelectedValue + "】有相同的字段名.");
                        return;//不执行保存
                    }
                }
                else//按设置的字段匹配   检查在
                {
                    try
                    {
                        s = new SFDBSrc("local");
                        string str = flow.DTSFields;

                        string[] arr = str.Split('@');


                        string sql = "SELECT " + arr[0] + " FROM " + flow.PTable;

                        s.RunSQL(sql);

                        s = new SFDBSrc(this.DDL_DBSrc.SelectedValue);

                        sql = "SELECT " + arr[1] + ", " + flow.DTSBTablePK
                              + " FROM " + flow.DTSBTable;

                        s.RunSQL(sql);
                    }
                    catch
                    {
                        //PubClass.Alert(ex.Message);
                        PubClass.Alert("设置的字段有误.【" + flow.DTSFields + "】");
                        return;//不执行保存
                    }
                }
                #endregion
            }
            #endregion

            flow.Update();
        }