数据导入之前与导入之后的对比
2009-04-01 19:11
106 查看
场景描述:
在信息的变更过程中,比如计划的变更,表单基本信息的变更等,希望可以在一个列表中展现出该行数据是新增的,还是被删除的,还是被修改过的。在本文中,信息变更之前存在数据表A中,变更之后数据存放在表B中。如果不仔细思考的话,一般情况下,大家会通过拿出两个表的数据,每个表的每行记录都跟另一个表的所有记录做对比,来判断该记录是新增的,还是被删除的,还是被修改过的,下面介绍一种简单的方式。
sql描述:
lastbeachhead
在信息的变更过程中,比如计划的变更,表单基本信息的变更等,希望可以在一个列表中展现出该行数据是新增的,还是被删除的,还是被修改过的。在本文中,信息变更之前存在数据表A中,变更之后数据存放在表B中。如果不仔细思考的话,一般情况下,大家会通过拿出两个表的数据,每个表的每行记录都跟另一个表的所有记录做对比,来判断该记录是新增的,还是被删除的,还是被修改过的,下面介绍一种简单的方式。
sql描述:
protected void gvChangeProjectList_RowDataBound(object sender,GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { DataRowView drv = e.Row.DataItem as DataRowView; int columns = drv.DataView.Table.Columns.Count; if (drv["Status"].ToString() == "Added") { e.Row.Attributes.Add("title", "新建"); e.Row.BackColor = Color.FromArgb(0x66, 0xcc, 0xff); } else if (drv["Status"].ToString() == "Deleted") { e.Row.Attributes.Add("title", "删除"); e.Row.BackColor = Color.FromArgb(0xff, 0x66, 0x33); } else { for (int i = 要对比的第一个列; i < 要对比的最后一个列; i++) { TableCell tableCell = e.Row.Cells[i - 1]; //数据源中的列比列表中的列序号大1 bool equal = false; int org = i + 要对比的列数; if (drv[i] == DBNull.Value && drv[org] == DBNull.Value) { equal = true; } else if (drv[i] == DBNull.Value || drv[org] == DBNull.Value) { equal = false; } else { if (drv[i].GetType() == typeof(string)) { equal = (string)(drv[i]) == (string)(drv[org]); } else if ( drv[i].GetType() == typeof(short) || drv[i].GetType() == typeof(int) ) { equal = ( drv[i].ToString().Trim() == drv[org].ToString().Trim() ); } else if (drv[i].GetType() == typeof(DateTime)) { equal = ((DateTime)(drv[i])).ToString("yyyy-MM-dd") == ((DateTime)(drv[org])).ToString("yyyy-MM-dd"); } else if (drv[i].GetType() == typeof(bool)) { equal = (bool)(drv[i]) == (bool)(drv[org]); } } if (!equal) { string result = string.Empty; if (drv[org].GetType() == typeof(DateTime)) { result = string.Format("修改前数据: {0}", drv[org] == DBNull.Value ? string.Empty : ((DateTime)drv[org]).ToString("yyyy-MM-dd")); } else { result = string.Format("修改前数据: {0}", drv[org]); } tableCell.ToolTip = result; tableCell.BackColor = Color.Yellow; } } } } }
lastbeachhead
相关文章推荐
- logstash5.0版本之后导入es数据指定ik分词器详解
- 很多人在进行数据迁移时,希望把数据导入不同于原系统的表空间,在导入之后却往往发现,数据被导入了原表空间
- 我调用一个API得到数组之后想把这些数组的数据导入数据库当中。
- myisam 和 innodb的导入数据的时间对比
- Python实战(6)单线程和多线程导入mysql数据对比测试
- oracle 10g数据泵和导入导出性能对比(一)
- ArcSDE 10.0安装之后,ArcCatolog导入数据失败【000732】
- oracle 10g数据泵和导入导出性能对比(六)
- Python实战(6)单线程和多线程导入mysql数据对比测试
- sqlserver数据导入mysql七: 对mysql和sqlsever同一张表中的数据进行统计对比
- ArcGIS Engine中导入数据的几种方式及其效率对比
- MySQL和PostgreSQL 导入数据对比
- MySQL两种原生数据导入方式对比, 及使用
- sqlserver数据导入mysql七: 对mysql和sqlsever同一张表中的数据进行统计对比
- [导入]xml与access数据读取对比测试
- oracle技术之oracle 10g数据泵和导入导出性能对比(五)
- 【R和Python对比】数据导入和初步整理
- Timesten在大量数据导入、更新之后需要更新统计信息
- 【原创】MySQL和PostgreSQL 导入数据对比
- 对比数据泵与原始导入导出工具(一)