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(); }
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(); }
public TransSQLBuilder(Object[] clientInfos, Transaction transaction, DataRow srcRow, DataTable srcSchema, String writeBackSQLPart) : this(transaction, srcRow, srcSchema, writeBackSQLPart) { }
// 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; }
private List<TransKeyField> GetWhereColumnsList(Transaction transaction, DataTable transTableSchema) { return GetTransKeyFieldsList(transaction, transTableSchema, WhereMode.InsertOnly); }
/// <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; }
public InfoTransactionBeforeTransEventArgs(Transaction trans) : base() { _Transaction = trans; }
private String CreateUpdateTransSQL(List<TransField> updateColumnsList, List<TransKeyField> whereColumnsList, IDbConnection connection, Transaction transaction) { return CreateUpdateTransSQL(updateColumnsList, whereColumnsList, connection, transaction, false, false); }
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; }
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"; } }
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); } }
// 得到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; }
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; }
// 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; }