예제 #1
0
 /// <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];
         }
     }
 }
예제 #2
0
        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;
        }
예제 #3
0
        /// <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;
        }
예제 #4
0
        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;
        }
예제 #5
0
        /// <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);
        }
예제 #6
0
 /// <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;
 }
예제 #7
0
        /// <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;
        }
예제 #8
0
        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;
                    }
                }

            }
        }
예제 #9
0
        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;
        }
예제 #10
0
        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;
        }
예제 #11
0
        /// <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;
        }