private void btnAdd_Click(object sender, EventArgs e)
        {
            Transaction trans = new Transaction();
            int currentTransCount = this.transPrivateCopy.Transactions.Count;

            if (currentTransCount == 0)
            {
                trans.TransStep = 1;
                trans.TransTableName = "TransTableName1";
            }
            else
            {
                trans.TransStep = this.transPrivateCopy.Transactions[currentTransCount - 1].TransStep + 1;
                trans.TransTableName = "TransTableName" + trans.TransStep;
            }
            this.transPrivateCopy.Transactions.Add(trans);

            TablePanel tp = new TablePanel(trans, this.DesignerHost, this);
            tp.Location = new Point(this.srcTablePanel.Location.X + this.srcTablePanel.Width + 100 - 5 * currentTransCount,
                this.srcTablePanel.Location.Y + currentTransCount * (30 + 10 + 60));

            // Event to Select or Move TransTable
            tp.MouseMove += new MouseEventHandler(tp_MouseMove);
            tp.MouseDown += new MouseEventHandler(tp_MouseDown);
            tp.MouseUp += new MouseEventHandler(tp_MouseUp);

            this.pnlTableView.Controls.Add(tp);
            this.TransTablePanels.Add(tp);

            this.srcTablePanel.ResizePanel();
            this.pnlTableView.Refresh();
        }
예제 #2
0
 public TransSQLBuilder(Transaction transaction, DataRow srcRow, DataTable srcSchema, String writeBackSQLPart)
 {
     _transaction = transaction;
     _srcRow = srcRow;
     _srcSchema = srcSchema;
     _writeSQLBackWherePart = writeBackSQLPart;
     type = DBUtils.GetDatabaseType((transaction.Owner as InfoTransaction).UpdateComp.conn);
 }
 public InfoTransactionEditorTTransactionDialog(Transaction trans, IDesignerHost host, string srctablename)
 {
     transaction = trans;
     DesignerHost = host;
     uctran = (this.transaction.Owner as InfoTransaction).UpdateComp;
     _conn = FindConnection(uctran);
     InitializeComponent();
     this.SrcTableName = srctablename;
 }
 public InfoTransactionEditorKeyFieldsDialog(Transaction trans, UpdateComponent uc, string destablename, string srctablename)
 {
     transaction = trans;
     uctran = uc;
     _conn = FindConnection(uctran);
     strDesTable = destablename;
     strSrcTable = srctablename;
     InitializeComponent();
 }
예제 #5
0
 public TransSQLBuilder(Object[] clientInfos, Transaction transaction, DataRow srcRow, DataTable srcSchema, String writeBackSQLPart)
     : this(transaction, srcRow, srcSchema, writeBackSQLPart)
 {
 }
예제 #6
0
        // Get the writeback columns.
        /// <summary>
        /// 
        /// </summary>
        /// <param name="transaction"></param>
        /// <param name="transTableSchema"></param>
        /// <param name="queryDataSet"></param>
        /// <returns></returns>
        private List<TransField> GetWriteBackColumnsList(Transaction transaction, DataTable transTableSchema, DataSet queryDataSet)
        {
            if (transaction == null)
                return null;

            //// --------------------------------------------------------------------------------------
            //// need the wherepart.
            //List<TransKeyField> includedInWhereColumns = GetIncludedInWhereColumns(transaction, transTableSchema);
            //String wherePart = GenerateWherePart(includedInWhereColumns);
            String transTableName = transaction.TransTableName;
            //// --------------------------------------------------------------------------------------

            List<TransField> writeBackColumnsList = new List<TransField>();
            TransFieldCollection transFieldsList = transaction.TransFields;

            foreach (TransField f in transFieldsList)
            {
                if (f.UpdateMode != UpdateMode.WriteBack)
                    continue;

                String desField = f.DesField;
                String srcField = f.SrcField;

                if (!IsInSchema(desField, transTableSchema))
                {
                    String message = SysMsg.GetSystemMessage(((transaction.Owner as InfoTransaction).OwnerComp as DataModule).Language, "Srvtools", "InfoTransaction", "msg_TransFieldDesExistInTable");
                    throw new ArgumentException(String.Format(message, _transaction.Name, f.DesField, desField, transTableSchema));
                }

                if (!IsInSchema(srcField, _srcSchema))
                {
                    String message = SysMsg.GetSystemMessage(((transaction.Owner as InfoTransaction).OwnerComp as DataModule).Language, "Srvtools", "InfoTransaction", "msg_TransFieldSrcExistInTable");
                    throw new ArgumentException(String.Format(message, _transaction.Name, f.DesField, srcField, _srcTableName));
                }

                String desFieldType = GetFieldType(desField, transTableSchema);
                String srcFieldType = GetFieldType(srcField, _srcSchema);

                String srcFieldTypeName = "";

                if (type == ClientType.ctMsSql || type == ClientType.ctOleDB)
                {
                    srcFieldTypeName = GetFieldTypeName(srcField, _srcSchema);
                }

                if (desFieldType != srcFieldType)
                {
                    String message = SysMsg.GetSystemMessage(((transaction.Owner as InfoTransaction).OwnerComp as DataModule).Language, "Srvtools", "InfoTransaction", "msg_TransFieldDesAndSrcNotSameType");
                    throw new ArgumentException(String.Format(message, new Object[] { _transaction.Name, f.DesField, desField, srcField }));
                }
                // throw new Exception("The " + desField + " and " + srcField + " are not same type.");

                Object srcFieldValue = null;
                srcFieldValue = _srcRow[srcField, DataRowVersion.Current];

                Object desFieldValue = null;
                AutoNumber a = null;
                foreach (AutoNumber au in _autoNumberList)
                {
                    if (string.Compare(f.DesField, au.TargetColumn, true) == 0)//IgnoreCase
                    {
                        a = au; break;
                    }
                }

                if (a != null)
                { desFieldValue = a.Number; }
                else
                {
                    if (queryDataSet == null || queryDataSet.Tables.Count == 0 || queryDataSet.Tables[0].Rows.Count == 0)
                    {
                        return null;
                    }
                    else
                    {
                        desFieldValue = queryDataSet.Tables[0].Rows[0][desField];
                    }
                }

                f.FieldType = srcFieldType;
                f.FieldTypeName = srcFieldTypeName == null ? "" : srcFieldTypeName;
                f.SrcValue = srcFieldValue;
                f.DesValue = desFieldValue;

                writeBackColumnsList.Add(f);
            }

            return writeBackColumnsList;
        }
예제 #7
0
 private List<TransKeyField> GetWhereColumnsList(Transaction transaction, DataTable transTableSchema)
 {
     return GetTransKeyFieldsList(transaction, transTableSchema, WhereMode.InsertOnly);
 }
예제 #8
0
        /// <summary>
        /// 得到Update的列集合。
        /// </summary>
        /// <param name="transaction"></param>
        /// <param name="transTableSchema"></param>
        /// <returns></returns>
        private List<TransField> GetUpdateColumnsList(Transaction transaction, DataTable transTableSchema)
        {
            if (transaction == null)
                return null;

            // --------------------------------------------------------------------------------------
            // need the wherepart.
            List<TransKeyField> whereColumnsList = GetWhereColumnsList(transaction, transTableSchema);
            String wherePart = CreateWherePart(whereColumnsList);
            String transTableName = transaction.TransTableName;
            // --------------------------------------------------------------------------------------

            List<TransField> canUpdateColumnsList = new List<TransField>();
            TransFieldCollection transFieldsList = transaction.TransFields;

            foreach (TransField f in transFieldsList)
            {
                if (f.UpdateMode == UpdateMode.Disable)
                    continue;

                String desField = f.DesField;
                String srcField = f.SrcField;

                if (srcField == null || srcField.Length == 0)
                {
                    // if (_srcRow.RowState == DataRowState.Added && f.SrcGetValue != null && f.SrcGetValue.Length != 0)
                    if (f.SrcGetValue != null && f.SrcGetValue.Length != 0)
                    {
                        if (!IsInSchema(desField, transTableSchema))
                        {
                            String message = SysMsg.GetSystemMessage(((transaction.Owner as InfoTransaction).OwnerComp as DataModule).Language, "Srvtools", "InfoTransaction", "msg_TransFieldDesExistInTable");
                            throw new ArgumentException(String.Format(message, _transaction.Name, f.DesField, desField, transTableSchema));
                        }

                        f.FieldType = GetFieldType(desField, transTableSchema);

                        if (type == ClientType.ctMsSql || type == ClientType.ctOleDB)
                        {
                            f.FieldTypeName = GetFieldTypeName(desField, transTableSchema);
                        }

                        if (_srcRow.RowState == DataRowState.Added)
                        {
                            f.DesValue = null;
                        }
                        else
                        {
                            f.DesValue = GetFieldDefaultValue(f);
                        }

                        if (_srcRow.RowState == DataRowState.Deleted)
                        {
                            f.SrcValue = null;
                        }
                        else
                        {
                            f.SrcValue = GetFieldDefaultValue(f);
                        }
                    }
                    else
                    {
                        continue;
                    }
                }
                else
                {
                    if (f.UpdateMode == UpdateMode.WriteBack)
                    {
                        continue;
                    }

                    if (!IsInSchema(desField, transTableSchema))
                    {
                        String message = SysMsg.GetSystemMessage(((transaction.Owner as InfoTransaction).OwnerComp as DataModule).Language, "Srvtools", "InfoTransaction", "msg_TransFieldDesExistInTable");
                        throw new ArgumentException(String.Format(message, _transaction.Name, f.DesField, desField, transTableSchema));
                    }

                    if (!IsInSchema(srcField, _srcSchema))
                    {
                        String message = SysMsg.GetSystemMessage(((transaction.Owner as InfoTransaction).OwnerComp as DataModule).Language, "Srvtools", "InfoTransaction", "msg_TransFieldSrcExistInTable");
                        throw new ArgumentException(String.Format(message, _transaction.Name, f.DesField, srcField, _srcTableName));
                    }

                    String desFieldType = GetFieldType(desField, transTableSchema);
                    String srcFieldType = GetFieldType(srcField, _srcSchema);
                    String srcFieldTypeName = "";

                    //if (((object[])(_clientInfos[0]))[2] != null && ((object[])(_clientInfos[0]))[2].ToString() != "")
                    //{
                    //    object[] param = new object[1];
                    //    param[0] = ((object[])(_clientInfos[0]))[2].ToString();
                    //    object[] myRet = CliUtils.CallMethod("GLModule", "GetDataBaseType", param);
                    //    if (myRet != null && myRet[0].ToString() == "0")
                    //        type = myRet[1].ToString();

                    if (type == ClientType.ctMsSql)
                    {
                        srcFieldTypeName = GetFieldTypeName(srcField, _srcSchema);
                    }
                    else if (type == ClientType.ctOracle)
                    {
                    }
                    else if (type == ClientType.ctOleDB)
                    {
                        srcFieldTypeName = GetFieldTypeName(srcField, _srcSchema);
                    }
                    else if (type == ClientType.ctODBC)
                    {
                        //srcFieldTypeName = GetFieldTypeName(srcField, _srcSchema);
                    }
                    else if (type == ClientType.ctMySql)
                    {
                        //srcFieldTypeName = GetFieldTypeName(srcField, _srcSchema);
                    }
                    else if (type == ClientType.ctInformix)
                    {
                        //srcFieldTypeName = GetFieldTypeName(srcField, _srcSchema);
                    }
                    //}

                    if (desFieldType != srcFieldType)
                    {
                        String message = SysMsg.GetSystemMessage(((transaction.Owner as InfoTransaction).OwnerComp as DataModule).Language, "Srvtools", "InfoTransaction", "msg_TransFieldDesAndSrcNotSameType");
                        //modified by lily 2007/5/24 string.Format少了一个参数
                        throw new ArgumentException(String.Format(message, new Object[] { _transaction.Name, f.DesField, desField, srcField }));
                    }

                    if (type == ClientType.ctMsSql)
                    {
                        if (IsReadOnly(desField, transTableSchema))
                            f.ReadOnly = true;
                        else
                            f.ReadOnly = false;
                    }
                    else if (type == ClientType.ctOracle)
                    {
                    }
                    else if (type == ClientType.ctOleDB)
                    {
                        if (IsReadOnly(desField, transTableSchema))
                            f.ReadOnly = true;
                        else
                            f.ReadOnly = false;
                    }
                    else if (type == ClientType.ctODBC)
                    {
                        if (IsReadOnly(desField, transTableSchema))
                            f.ReadOnly = true;
                        else
                            f.ReadOnly = false;
                    }
                    else if (type == ClientType.ctMySql)
                    {
                        if (IsReadOnly(desField, transTableSchema))
                            f.ReadOnly = true;
                        else
                            f.ReadOnly = false;
                    }
                    else if (type == ClientType.ctInformix)
                    {
                        if (IsReadOnly(desField, transTableSchema))
                            f.ReadOnly = true;
                        else
                            f.ReadOnly = false;
                    }
                    //}

                    if (_srcRow.RowState == DataRowState.Added)
                    {
                        f.DesValue = null;
                    }
                    else
                    {
                        f.DesValue = _srcRow[srcField, DataRowVersion.Original];
                    }

                    if (_srcRow.RowState == DataRowState.Deleted)
                    {
                        //Replace方式取null,其他方式取原值。
                        if (f.UpdateMode == UpdateMode.Replace)
                        {
                            f.SrcValue = _srcRow[srcField, DataRowVersion.Original];
                        }
                        else
                        {
                            f.SrcValue = null;
                        }
                    }
                    else
                    {
                        f.SrcValue = _srcRow[srcField, DataRowVersion.Current];
                    }

                    f.FieldType = srcFieldType;
                    f.FieldTypeName = srcFieldTypeName == null ? "" : srcFieldTypeName;
                }

                canUpdateColumnsList.Add(f);
            }

            return canUpdateColumnsList;
        }
예제 #9
0
 public InfoTransactionBeforeTransEventArgs(Transaction trans)
     : base()
 {
     _Transaction = trans;
 }
예제 #10
0
 private String CreateUpdateTransSQL(List<TransField> updateColumnsList, List<TransKeyField> whereColumnsList, IDbConnection connection,
     Transaction transaction)
 {
     return CreateUpdateTransSQL(updateColumnsList, whereColumnsList, connection, transaction, false, false);
 }
예제 #11
0
        private String CreateUpdateTransSQL(List<TransField> updateColumnsList, List<TransKeyField> whereColumnsList, IDbConnection connection,
            Transaction transaction, Boolean b, Boolean c)
        {
            String wherePart = CreateWherePart(whereColumnsList, b, c);
            String updateColumnPart = CreateUpdatePart(updateColumnsList, connection, b, c);

            if (updateColumnPart.Length == 0)
                return "";

            String updateSQL = "update " + TransTableName(transaction.TransTableName) + " set " + updateColumnPart + " where " + wherePart;

            return updateSQL;
        }
예제 #12
0
        public TablePanel(Transaction trans, IDesignerHost host, Form frm)
        {
            this.transaction = trans;
            DesignerHost = host;
            this.BackColor = Color.Pink;
            frminfotransaction = frm;
            this.Controls.Add(rtbfield);
            this.rtbfield.WordWrap = false;
            this.rtbfield.Text = "";
            this.rtbfield.ReadOnly = true;
            intPannelWidth = InitialPanelWidth();

            foreach (TransField field in this.transaction.TransFields)
            {
                this.rtbfield.Text += field.DesField + UpdateModeToString(field.UpdateMode) + field.SrcField + "\n";
            }
        }
예제 #13
0
        private void SetInfoTransactionPrivateCopy()
        {
            transPrivateCopy = new InfoTransaction();

            // transPrivateCopy.Timing = transaction.Timing;

            foreach (Transaction trans in transaction.Transactions)
            {
                Transaction t = new Transaction();
                t.AutoNumber = trans.AutoNumber;
                t.Name = trans.Name;

                foreach (TransField field in trans.TransFields)
                {
                    TransField tf = new TransField();
                    tf.DesField = field.DesField;
                    tf.DesValue = field.DesValue;
                    tf.FieldType = field.FieldType;
                    tf.SrcField = field.SrcField;
                    tf.SrcGetValue = field.SrcGetValue;
                    tf.SrcValue = field.SrcValue;
                    tf.UpdateMode = field.UpdateMode;

                    t.TransFields.Add(tf);
                }

                foreach (TransKeyField keyField in trans.TransKeyFields)
                {
                    TransKeyField tkf = new TransKeyField();
                    tkf.DesField = keyField.DesField;
                    tkf.FieldType = keyField.FieldType;
                    tkf.SrcField = keyField.SrcField;
                    tkf.SrcGetValue = keyField.SrcGetValue;
                    tkf.SrcValue = keyField.SrcValue;
                    tkf.WhereMode = keyField.WhereMode;

                    t.TransKeyFields.Add(tkf);
                }
                t.TransMode = trans.TransMode;
                t.TransStep = trans.TransStep;
                t.TransTableName = trans.TransTableName;
                t.WhenDelete = trans.WhenDelete;
                t.WhenInsert = trans.WhenInsert;
                t.WhenUpdate = trans.WhenUpdate;

                transPrivateCopy.Transactions.Add(t);
            }

            transPrivateCopy.UpdateComp = transaction.UpdateComp;
        }
        private void SetTransactionPrivateCopy()
        {
            transPrivateCopy = new Transaction();

            foreach (TransField field in transaction.TransFields)
            {
                TransField tf = new TransField();
                tf.DesField = field.DesField;
                tf.DesValue = field.DesValue;
                tf.FieldType = field.FieldType;
                tf.SrcField = field.SrcField;
                tf.SrcGetValue = field.SrcGetValue;
                tf.SrcValue = field.SrcValue;
                tf.UpdateMode = field.UpdateMode;

                transPrivateCopy.TransFields.Add(tf);
            }
        }
        private void SetTransactionPrivateCopy()
        {
            transPrivateCopy = new Transaction();

            foreach (TransKeyField keyField in transaction.TransKeyFields)
            {
                TransKeyField tkf = new TransKeyField();
                tkf.DesField = keyField.DesField;
                tkf.FieldType = keyField.FieldType;
                tkf.SrcField = keyField.SrcField;
                tkf.SrcGetValue = keyField.SrcGetValue;
                tkf.SrcValue = keyField.SrcValue;
                tkf.WhereMode = keyField.WhereMode;

                transPrivateCopy.TransKeyFields.Add(tkf);
            }
        }
예제 #16
0
        // 得到TransKeyFields是否改变。
        private List<TransKeyField> GetChangedTransKeyFields(Transaction transaction, DataTable transTableSchema)
        {
            if (transaction == null)
                return null;

            List<TransKeyField> changedKFColumnList = new List<TransKeyField>();
            TransKeyFieldCollection transKeyFieldsList = transaction.TransKeyFields;

            foreach (TransKeyField kF in transKeyFieldsList)
            {
                String desField = kF.DesField;
                String srcField = string.Empty;
                if (string.IsNullOrEmpty(kF.SrcGetValue))
                {
                    srcField = kF.SrcField;
                    if (!IsInSchema(srcField, _srcSchema))
                    {
                        String message = SysMsg.GetSystemMessage(((transaction.Owner as InfoTransaction).OwnerComp as DataModule).Language, "Srvtools", "InfoTransaction", "msg_TransFieldSrcExistInTable");
                        throw new ArgumentException(String.Format(message, _transaction.Name, kF.DesField, srcField, _srcTableName));
                    }
                    String desFieldType = GetFieldType(desField, transTableSchema);
                    String srcFieldType = GetFieldType(srcField, _srcSchema);

                    if (desFieldType != srcFieldType)
                    {
                        String message = SysMsg.GetSystemMessage(((transaction.Owner as InfoTransaction).OwnerComp as DataModule).Language, "Srvtools", "InfoTransaction", "msg_TransFieldDesAndSrcNotSameType");
                        throw new ArgumentException(String.Format(message, new Object[] { _transaction.Name, kF.DesField, desField }));
                    }
                }

                if (!IsInSchema(desField, transTableSchema))
                {
                    String message = SysMsg.GetSystemMessage(((transaction.Owner as InfoTransaction).OwnerComp as DataModule).Language, "Srvtools", "InfoTransaction", "msg_TransFieldDesExistInTable");
                    throw new ArgumentException(String.Format(message, _transaction.Name, kF.DesField, desField, transTableSchema));
                }

                if (kF.DesValue == null && kF.SrcValue == null)
                {
                    changedKFColumnList.Add(kF);
                }
                else if (kF.DesValue != null && kF.SrcValue != null && kF.DesValue.ToString() != kF.SrcValue.ToString())
                {
                    //string type = "";

                    //if (((object[])(_clientInfos[0]))[2] != null && ((object[])(_clientInfos[0]))[2].ToString() != "")
                    //{
                    //    object[] param = new object[1];
                    //    param[0] = ((object[])(_clientInfos[0]))[2].ToString();
                    //    object[] myRet = CliUtils.CallMethod("GLModule", "GetDataBaseType", param);
                    //    if (myRet != null && myRet[0].ToString() == "0")
                    //        type = myRet[1].ToString();

                    if (type != ClientType.ctOracle)
                    {
                        if (IsReadOnly(desField, transTableSchema))
                        {
                            String message = SysMsg.GetSystemMessage(((transaction.Owner as InfoTransaction).OwnerComp as DataModule).Language, "Srvtools", "InfoTransaction", "msg_TransFieldDesIsReadOnly");
                            throw new ArgumentException(String.Format(message, new Object[] { _transaction.Name, kF.DesField, desField }));
                        }
                    }
                    //}

                    changedKFColumnList.Add(kF);
                }
            }
            return changedKFColumnList;
        }
예제 #17
0
        private List<TransKeyField> GetTransKeyFieldsList(Transaction transaction, DataTable transTableSchema,
            WhereMode noWhereMode)
        {
            if (transaction == null)
                return null;

            List<TransKeyField> transKeyFieldsList = new List<TransKeyField>();
            TransKeyFieldCollection transKFList = transaction.TransKeyFields;

            foreach (TransKeyField kF in transKFList)
            {
                String desField = kF.DesField;
                String srcField = kF.SrcField;

                if (kF.WhereMode != noWhereMode)
                {
                    if (srcField == null || srcField.Length == 0)
                    {
                        // if (_srcRow.RowState == DataRowState.Added && kF.SrcGetValue != null && kF.SrcGetValue.Length != 0)
                        if (kF.SrcGetValue != null && kF.SrcGetValue.Length != 0)
                        {
                            if (!IsInSchema(desField, transTableSchema))
                            {
                                String message = SysMsg.GetSystemMessage(((transaction.Owner as InfoTransaction).OwnerComp as DataModule).Language, "Srvtools", "InfoTransaction", "msg_TransFieldDesExistInTable");
                                throw new ArgumentException(String.Format(message, _transaction.Name, kF.DesField, desField, transTableSchema));
                            }

                            kF.FieldType = GetFieldType(desField, transTableSchema);

                            if (type == ClientType.ctMsSql || type == ClientType.ctOleDB)
                            {
                                kF.FieldTypeName = GetFieldTypeName(desField, transTableSchema);
                            }

                            if (_srcRow.RowState == DataRowState.Added)
                            {
                                kF.DesValue = null;
                            }
                            else
                            {
                                if (kF.DesValue == null)
                                {
                                    kF.DesValue = GetFieldDefaultValue(kF);
                                }
                            }

                            if (_srcRow.RowState == DataRowState.Deleted)
                            {
                                kF.SrcValue = null;
                            }
                            else
                            {
                                if (kF.SrcValue == null)
                                {
                                    kF.SrcValue = GetFieldDefaultValue(kF);
                                }
                            }
                        }
                        else
                        {
                            continue;
                        }
                    }
                    else
                    {
                        if (!IsInSchema(desField, transTableSchema))
                        {
                            String message = SysMsg.GetSystemMessage(((transaction.Owner as InfoTransaction).OwnerComp as DataModule).Language, "Srvtools", "InfoTransaction", "msg_TransKeyFieldDesExistInTable");
                            throw new ArgumentException(String.Format(message, _transaction.Name, kF.DesField, desField, transTableSchema));
                        }

                        if (!IsInSchema(srcField, _srcSchema))
                        {
                            String message = SysMsg.GetSystemMessage(((transaction.Owner as InfoTransaction).OwnerComp as DataModule).Language, "Srvtools", "InfoTransaction", "msg_TransKeyFieldSrcExistInTable");
                            throw new ArgumentException(String.Format(message, _transaction.Name, kF.DesField, srcField, _srcTableName));
                        }

                        //if (!IsInSchema(desField, transTableSchema))
                        //    throw new Exception("The " + desField + " is not " + transaction.TransTableName + "'s column.");

                        //if (!IsInSchema(srcField, _srcSchema))
                        //    throw new Exception("The " + srcField + " is not " + _srcTableName + "'s column.");

                        String desFieldType = GetFieldType(desField, transTableSchema);
                        String srcFieldType = GetFieldType(srcField, _srcSchema);
                        String srcFieldTypeName = "";

                        if (type == ClientType.ctMsSql || type == ClientType.ctOleDB)
                        {
                            srcFieldTypeName = GetFieldTypeName(srcField, _srcSchema);
                        }

                        if (desFieldType != srcFieldType)
                        {
                            // throw new Exception("The " + desField + " and " + srcField + " are not same type.");
                            String message = SysMsg.GetSystemMessage(((transaction.Owner as InfoTransaction).OwnerComp as DataModule).Language, "Srvtools", "InfoTransaction", "msg_TransKeyFieldDesAndSrcNotSameType");
                            throw new ArgumentException(String.Format(message, new Object[] { _transaction.Name, kF.DesField, desField, srcField }));
                        }

                        if (kF.WhereMode == WhereMode.Both || kF.WhereMode == WhereMode.InsertOnly)
                        {

                            if (type != ClientType.ctOracle)
                            {
                                if (IsReadOnly(desField, transTableSchema))
                                    kF.ReadOnly = true;
                                else
                                    kF.ReadOnly = false;
                            }
                        }

                        if (kF.WhereMode == WhereMode.WhereOnly)
                        {
                            if (!IsIncludedInWhereClause(desField, transTableSchema))
                            {
                                throw new Exception("The " + desField + " column has a error.");
                            }
                        }

                        if (_srcRow.RowState == DataRowState.Added)
                        {
                            kF.DesValue = null;
                        }
                        else
                        {
                            kF.DesValue = _srcRow[srcField, DataRowVersion.Original];
                        }

                        if (_srcRow.RowState == DataRowState.Deleted)
                        {
                            kF.SrcValue = null;
                        }
                        else
                        {
                            kF.SrcValue = _srcRow[srcField, DataRowVersion.Current];
                        }

                        kF.FieldType = srcFieldType;
                        kF.FieldTypeName = srcFieldTypeName == null ? "" : srcFieldTypeName;
                    }

                    transKeyFieldsList.Add(kF);
                }
            }

            return transKeyFieldsList;
        }
예제 #18
0
 // Get transstep order rule.
 private Int32 GetTransStepRule(Transaction transaction1, Transaction transaction2)
 {
     if (transaction1.TransStep >= transaction2.TransStep)
     {
         return transaction1.TransStep;
     }
     else
     {
         return transaction2.TransStep;
     }
 }
        private void SetTransactionPrivateCopy()
        {
            transPrivateCopy = new Transaction();

            transPrivateCopy.AutoNumber = transaction.AutoNumber;
            transPrivateCopy.Name = transaction.Name;

            foreach (TransField field in transaction.TransFields)
            {
                TransField tf = new TransField();
                tf.DesField = field.DesField;
                tf.DesValue = field.DesValue;
                tf.FieldType = field.FieldType;
                tf.SrcField = field.SrcField;
                tf.SrcGetValue = field.SrcGetValue;
                tf.SrcValue = field.SrcValue;
                tf.UpdateMode = field.UpdateMode;

                transPrivateCopy.TransFields.Add(tf);
            }

            foreach (TransKeyField keyField in transaction.TransKeyFields)
            {
                TransKeyField tkf = new TransKeyField();
                tkf.DesField = keyField.DesField;
                tkf.FieldType = keyField.FieldType;
                tkf.SrcField = keyField.SrcField;
                tkf.SrcGetValue = keyField.SrcGetValue;
                tkf.SrcValue = keyField.SrcValue;
                tkf.WhereMode = keyField.WhereMode;

                transPrivateCopy.TransKeyFields.Add(tkf);
            }
            transPrivateCopy.TransMode = transaction.TransMode;
            transPrivateCopy.TransStep = transaction.TransStep;
            transPrivateCopy.TransTableName = transaction.TransTableName;
            //new add by ccm
            transPrivateCopy.WhenInsert = transaction.WhenInsert;
            transPrivateCopy.WhenUpdate = transaction.WhenUpdate;
            transPrivateCopy.WhenDelete = transaction.WhenDelete;
        }