/// <summary> /// enables the user to Copy Data Between structure Types. /// </summary> /// <param name="toRow"></param> /// <param name="FromRow"></param> /// <param name="_MTT"></param> public void CopyRowDataTo(DataRow FromRow, DataRow toRow, eMergeTableType _MTT) { foreach(VTable_FieldDef o in TBL_Fields) { if (_MTT == eMergeTableType.ImportSpec) { if (o.IsImportField) { toRow[o.FName] = FromRow[o.FImportName]; } } else { toRow[o.FName] = FromRow[o.FName]; } } }
public DataTable GetEmptyMergeTable(eMergeTableType _MTT) { DataTable aTable = new DataTable(); aTable.Clear(); aTable.Columns.Clear(); foreach (VTable_FieldDef o in TBL_Fields) { if (_MTT == eMergeTableType.ImportSpec) { if (o.IsImportField) aTable.Columns.Add(new DataColumn(o.FImportName, Type.GetType(o.FType))); } else { aTable.Columns.Add(new DataColumn(o.FName, Type.GetType(o.FType))); } } return aTable; }
/// <summary> /// gets row filter segment using FName /// </summary> /// <param name="o"></param> /// <param name="aRow"></param> /// <returns></returns> public string BuildRowFilterArg(VTable_FieldDef o, DataRow aRow, eMergeTableType _MTT) { string FilterArg = ""; if (_MTT == eMergeTableType.ImportSpec) { if (!aRow.IsNull(o.FImportName)) { switch (o.FType) { case "System.String": { FilterArg += o.FName + " = '" + aRow[o.FImportName] + "' "; break; } case "System.Double": case "System.Int32": { FilterArg += o.FName + " = " + aRow[o.FImportName] + " "; break; } case "System.DateTime": { FilterArg += o.FName + " = #" + ((DateTime)aRow[o.FImportName]).ToLongDateString() + "# "; break; } } } else { FilterArg += o.FName + " is NULL "; } } else { if (!aRow.IsNull(o.FName)) { switch (o.FType) { case "System.String": { FilterArg += o.FName + " = '" + aRow[o.FName] + "' "; break; } case "System.Double": case "System.Int32": { FilterArg += o.FName + " = " + aRow[o.FName] + " "; break; } case "System.DateTime": { FilterArg += o.FName + " = #" + ((DateTime)aRow[o.FName]).ToLongDateString() + "# "; break; } } } else { FilterArg += o.FName + " is NULL "; } } return FilterArg; }
public string BuildRowFilterArgfromKey(ArrayList List, DataRow aRow, eMergeTableType _MTT) { string FilterArg = ""; bool First = true; foreach(VTable_FieldDef o in List) { if (First) { First = false; } else { FilterArg += " and " ; } FilterArg += BuildRowFilterArg(o,aRow,_MTT); } return FilterArg; }
/// <summary> /// Copy Import Fields from merge row to new Row /// </summary> /// <param name="aRow"></param> protected void MergeNewDataRow(DataRow aRow, eMergeTableType _MTT) { DataRow myRow = Table.NewRow(); foreach(VTable_FieldDef o in TBL_Fields) { if (_MTT == eMergeTableType.ImportSpec) { if (o.IsImportField) { myRow[o.FName] = aRow[o.FImportName]; } } else { myRow[o.FName] = aRow[o.FName]; } } VersionCtrl_CreateRow(myRow); Table.Rows.Add(myRow); }
/// <summary> /// No test for Is same /// </summary> /// <param name="aRow"></param> /// <param name="_MTT"></param> /// <returns></returns> protected bool RejectMasterRow(DataRow aRow, eMergeTableType _MTT) { if (_EnableVC) { CheckView.RowFilter = BuildRowFilterArgfromKey(GetMergeKeyFields(), aRow, _MTT) + " and VC_State = 'Approved'"; } else { CheckView.RowFilter = BuildRowFilterArgfromKey(GetMergeKeyFields(), aRow, _MTT); } if(CheckView.Count >= 1) { // if(!IsRowSame(aRow, CheckView[0].Row,_MTT)) // { VersionCtrl_RejectRow(CheckView[0].Row); return true; // } // return false; } // No row found to compaire, hence must be different return true; }
/// <summary> /// Test Import Row for Differences /// </summary> /// <param name="myRow"></param> /// <param name="aRow"></param> /// <returns></returns> protected bool IsRowSame(DataRow myRow, DataRow aRow, eMergeTableType _MTT) { Int32 ScoreTotal = 0; Int32 Score = 0; foreach(VTable_FieldDef o in TBL_Fields) { if (_MTT == eMergeTableType.ImportSpec) { if (o.IsImportField) { ScoreTotal++; if (myRow[o.FImportName].ToString().Trim().ToUpper() == aRow[o.FName].ToString().Trim().ToUpper()) { Score++; } } } else { ScoreTotal++; if (myRow[o.FName].ToString().Trim().ToUpper() == aRow[o.FName].ToString().Trim().ToUpper()) { Score++; } } } return ScoreTotal == Score; }
public void RenameCSVFields(DataTable CSVTable, eMergeTableType _MTT) { foreach(VTable_FieldDef o in TBL_Fields) { if ((o.CSVPosition >= 0)&& (o.CSVPosition <= CSVTable.Columns.Count -1)) { if (_MTT == eMergeTableType.ImportSpec) { CSVTable.Columns[o.CSVPosition].ColumnName = o.FImportName; } else { CSVTable.Columns[o.CSVPosition].ColumnName = o.FName; } } } }
public int Merge_RejectfromMasterTable(DataTable aTable, eMergeTableType _MTT) { dteBlockVCChange = DateTime.Now; // ensures that the newmerge items get a Recent TS int MergeCount = 0; foreach(DataRow aRow in aTable.Rows) { if (RejectMasterRow(aRow,_MTT)) { MergeCount ++; } } return MergeCount; }
public int MergeDataTableintoMasterTable(DataTable aTable, eMergeTableType _MTT) { dteBlockVCChange = DateTime.Now; // ensures that the newmerge items get a Recent TS int MergeCount = 0; foreach(DataRow aRow in aTable.Rows) { // this version applies a test to check if row is same if (RejectExistingMasterRow(aRow,_MTT)) { MergeNewDataRow(aRow,_MTT); MergeCount ++; } } return MergeCount; }
/// <summary> /// Returns a Merge Formated Table /// </summary> /// <param name="filename"></param> /// <param name="_MTT"></param> /// <returns></returns> public DataTable ImportASCII_CSV(string csvfile, eMergeTableType _MTT) { DataTable merge = GetEmptyMergeTable(_MTT); DataTable raw = CSVtoDataTable.CovertCSVtoDataTable(csvfile, System.Text.Encoding.UTF8, true); RenameCSVFields(raw, _MTT); DataRow n; foreach(DataRow R in raw.Rows) { n = merge.NewRow(); #region convert CSV Import fields as string to RealType foreach(DataColumn dc in merge.Columns) { if (!R.IsNull(dc.ColumnName)) { try { switch (dc.DataType.ToString()) { case "System.DateTime": { n[dc.ColumnName] = DateUtils.DDMMMCCYY2DTE(R[dc.ColumnName].ToString().Trim()); break; } case "System.Int32": { n[dc.ColumnName] = Convert.ToInt32(R[dc.ColumnName].ToString().Trim()); break; } case "System.Double": { n[dc.ColumnName] = Convert.ToDouble(R[dc.ColumnName].ToString().Trim()); break; } case "System.Boolean": { n[dc.ColumnName] = Convert.ToBoolean(R[dc.ColumnName].ToString().Trim()); break; } case "System.String": default: { n[dc.ColumnName] = R[dc.ColumnName].ToString().Trim(); break; } } } catch { if (OnLogError != null ) { OnLogError(this, new RptEventArgs("Data Error col["+dc.ColumnName+"]: " + Convert2CSV(R.ItemArray))); } n[dc.ColumnName] = Convert.DBNull; } } else { n[dc.ColumnName] = Convert.DBNull; } } #endregion merge.Rows.Add(n); } return merge; }