private void btnAdd_Click(object sender, EventArgs e)
        {
            List<string> lstSrcColumn = new List<string>();
            List<string> lstDesColumn = new List<string>();

            InfoTransactionTransKeyFieldsAddDialog ittkfad = new InfoTransactionTransKeyFieldsAddDialog();

            if (strSrcTable != string.Empty && _conn != null)
            {
                if (uctran != null && uctran.SelectCmd != null)
                {
                    ittkfad.cmbSrcField.Items.AddRange(uctran.SelectCmd.GetFields());
                }
            }

            if (strDesTable != string.Empty && _conn != null)
            {
                try
                {
                    lstDesColumn = AddColumn(strDesTable);
                }
                catch
                {
                    MessageBox.Show(string.Format("Transtable :{0} \ndoesn't exist", strDesTable));
                    return;
                }
                foreach (string strColumn in lstDesColumn)
                {
                    ittkfad.cmbDesField.Items.Add(strColumn);
                }
            }

            ittkfad.cbxWhereMode.Items.Add("WhereOnly");
            ittkfad.cbxWhereMode.Items.Add("InsertOnly");
            ittkfad.cbxWhereMode.Items.Add("Both");
            ittkfad.cbxWhereMode.SelectedIndex = 2;

            if (ittkfad.ShowDialog() == DialogResult.OK)
            {
                TransKeyField tkf = new TransKeyField();
                tkf.DesField = ittkfad.cmbDesField.Text;
                tkf.SrcField = ittkfad.cmbSrcField.Text;
                tkf.SrcGetValue = ittkfad.txtSrcGetValue.Text;
                switch (ittkfad.cbxWhereMode.SelectedIndex)
                {
                    case 0:
                        tkf.WhereMode = WhereMode.WhereOnly;
                        break;

                    case 1:
                        tkf.WhereMode = WhereMode.InsertOnly;
                        break;

                    case 2:
                        tkf.WhereMode = WhereMode.Both;
                        break;
                }
                this.transPrivateCopy.TransKeyFields.Add(tkf);
                this.lbDesField.Items.Add(tkf.DesField);
                this.lbScrField.Items.Add(tkf.SrcField);
                this.lbRelation.Items.Add(tkf.DesField + " = " + tkf.SrcField);
            }
        }
        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 (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);
            }
        }
        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;
        }