Exemple #1
0
        /// <summary>
        /// 取得欄位值,若不存在該欄位或為 DbNull 值,則傳回預設值。
        /// </summary>
        /// <param name="row">資料列。</param>
        /// <param name="fieldName">欄位名稱。</param>
        /// <param name="defaultValue">預設值。</param>
        public static object GetFieldValue(DataRow row, string fieldName, object defaultValue)
        {
            object oFieldValue;

            // 若資料列為 Null 則傳回預設值
            if (BaseFunc.IsNull(row))
            {
                return(defaultValue);
            }
            // 若不存在該欄位,則傳回預設值
            if (!HasField(row, fieldName))
            {
                return(defaultValue);
            }

            oFieldValue = row[fieldName];

            if (BaseFunc.IsNullOrDBNull(oFieldValue))
            {
                return(defaultValue);  // 若欄位值為 DbNull 值,則傳回預設值
            }
            else
            {
                return(oFieldValue);
            }
        }
Exemple #2
0
        /// <summary>
        /// 由來源資料列異動目前資料列,目的資料列存在相同欄位,且不在排除欄位中時才會進行異動。
        /// </summary>
        /// <param name="sourceRow">來源資料列。</param>
        /// <param name="destRow">目的資料列。</param>
        /// <param name="excludeFields">排除欄位</param>
        public static void UpdateRow(DataRow sourceRow, DataRow destRow, params string[] excludeFields)
        {
            DataTable oSoruceTable;
            DataTable oDestTable;

            if (BaseFunc.IsEmpty(sourceRow))
            {
                return;
            }
            if (BaseFunc.IsEmpty(destRow))
            {
                return;
            }

            oSoruceTable = sourceRow.Table;
            oDestTable   = destRow.Table;

            foreach (DataColumn oColumn in oSoruceTable.Columns)
            {
                //確認該欄位是否存在於排除欄位中
                var matchExcludeFields = from excludeField in excludeFields
                                         where StrFunc.SameText(excludeField, oColumn.ColumnName)
                                         select excludeField;

                if (matchExcludeFields.ToList().Count == 0 && oDestTable.Columns.Contains(oColumn.ColumnName) &&
                    !BaseFunc.IsNullOrDBNull(sourceRow[oColumn.ColumnName]))
                {
                    destRow[oColumn.ColumnName] = sourceRow[oColumn.ColumnName];
                }
            }
        }
Exemple #3
0
        /// <summary>
        /// 對目的資料表新增資料列,有相同欄位時才會塞值。
        /// </summary>
        /// <param name="destDataTable">目的資料表。</param>
        /// <param name="sourceRow">來源資料列。</param>
        /// <param name="allowNull">是否允許Null值</param>
        public static void AddRow(DataTable destDataTable, DataRow sourceRow, bool allowNull = true)
        {
            DataRow oNewRow;
            string  sColumnName;

            if (BaseFunc.IsNull(destDataTable))
            {
                return;
            }
            if (BaseFunc.IsEmpty(sourceRow))
            {
                return;
            }

            oNewRow = destDataTable.NewRow();
            foreach (DataColumn column in destDataTable.Columns)
            {
                sColumnName = column.ColumnName;
                if (sourceRow.Table.Columns.Contains(sColumnName))
                {
                    var value = sourceRow[sColumnName];
                    if (allowNull || !BaseFunc.IsNullOrDBNull(value))
                    {
                        oNewRow[sColumnName] = value;
                    }
                }
            }
            destDataTable.Rows.Add(oNewRow);
        }
Exemple #4
0
        /// <summary>
        /// 由來源資料列異動目前資料列,目的資料列存在相同欄位時才會進行異動。
        /// </summary>
        /// <param name="sourceRow">來源資料列。</param>
        /// <param name="destRow">目的資料列。</param>
        /// <param name="allowNull">是否允許Null值</param>
        public static void UpdateRow(DataRow sourceRow, DataRow destRow, bool allowNull = true)
        {
            DataTable oSoruceTable;
            DataTable oDestTable;

            if (BaseFunc.IsEmpty(sourceRow))
            {
                return;
            }
            if (BaseFunc.IsEmpty(destRow))
            {
                return;
            }

            oSoruceTable = sourceRow.Table;
            oDestTable   = destRow.Table;

            foreach (DataColumn oColumn in oSoruceTable.Columns)
            {
                if (oDestTable.Columns.Contains(oColumn.ColumnName) &&
                    (allowNull || !BaseFunc.IsNullOrDBNull(sourceRow[oColumn.ColumnName])))
                {
                    destRow[oColumn.ColumnName] = sourceRow[oColumn.ColumnName];
                }
            }
        }
Exemple #5
0
        /// <summary>
        /// 取得無 DbNull 的欄位值。
        /// </summary>
        /// <param name="row">資料列。</param>
        /// <param name="fieldName">欄位值。</param>
        public static object GetFieldValueNotDbNull(DataRow row, string fieldName)
        {
            object oFieldValue;

            oFieldValue = row[fieldName];
            if (BaseFunc.IsNullOrDBNull(oFieldValue))
            {
                return(GetDefaultValue(row.Table.Columns[fieldName].DataType, EDateTimeDefault.MinValue));
            }
            else
            {
                return(oFieldValue);
            }
        }