在一个大DataTable的基础上去除重复数据,分别创建2个小DataTable,省去多次数据库连接,提高效率,加快程序运行
2015-08-08 00:38
771 查看
DataTable tab = new DataTable();
tab = DBUtil.GetDataSet(strCmd, "TESTA.V_YHJ_VIP_WX_XSMX").Tables[0];
创建一个小表:
DataView view = new DataView(tab);
DataTable orderTable = view.ToTable(true, "ORDERDATE", "MEMBER_CODE", "INV_NUM", "ZJE", "ZFJE", "SELL_QTY", "SHOP_CODE");
在基于orderTable 的str_Inv_Num ,生成更小的一个表
for (int i = 0; i < orderTable.Rows.Count; i++)
{
for (int j = 0; j < orderTable.Columns.Count; j++)
{
if (j == 0)
{
str_INV_DATE = orderTable.Rows[i][j].ToString().Trim();
//shop_code = tab.Rows[i][j].ToString();
}
if (j == 1)
str_MemberCode = orderTable.Rows[i][j].ToString().Trim();
if (j == 2)
{
str_Inv_Num = orderTable.Rows[i][j].ToString().Trim();
subInv_Num = str_Inv_Num;
}
if (j == 3)
Inv_Totalamt = Convert.ToInt32(orderTable.Rows[i][j].ToString().Trim());
if (j == 4)
str_INV_AMT = Convert.ToInt32(orderTable.Rows[i][j].ToString().Trim());
if (j == 5)
int_Sell_Qty = Convert.ToInt32(orderTable.Rows[i][j].ToString().Trim());
if (j == 6)
str_Shop_Code = tab.Rows[i][j].ToString().Trim();
}
if (str_old_Inv_Num.Trim()!=str_Inv_Num.Trim()) //去除某个会员有2个以上单据,并且每个单据有多件销售货品时的重复记录。目前第一个单号的第一件货品,就会把货品信息都列出来,如果一个单子有多件货品,不加此句就会出现重复数据。导致结果不对。
{
view.RowFilter = "INV_NUM='" + str_Inv_Num+"'";
orderDetailTable = view.ToTable(true, "INV_NUM", "SKU", "C_SHORT_DE", "SELL_QTY", "SERIAL_NO");
List<CofflineOrderDetail> lCofflineOrderDetail = DBUtil.GetList<CofflineOrderDetail>(orderDetailTable);//返回泛型列表
//OracleAccess.logger.Debug(" CAL_getOfflineOrder 子 table :" + str_vip.ToString() + DateTime.Now.ToLongDateString() + DateTime.Now.ToLongTimeString() +
// "," + str_INV_DATE + "," + str_MemberCode + "," + str_Inv_Num + "," + Inv_Totalamt + "," + str_INV_AMT + "," + int_Sell_Qty + "," + str_Shop_Code +
// DBUtil.ToJson(subtab));
listorder.Add(new COfflineOrder(str_INV_DATE, str_MemberCode, str_Inv_Num, Inv_Totalamt, str_INV_AMT, str_Shop_Code, int_Sell_Qty, lCofflineOrderDetail));
view.RowFilter = "";
str_old_Inv_Num = str_Inv_Num;
}
}
tab = DBUtil.GetDataSet(strCmd, "TESTA.V_YHJ_VIP_WX_XSMX").Tables[0];
创建一个小表:
DataView view = new DataView(tab);
DataTable orderTable = view.ToTable(true, "ORDERDATE", "MEMBER_CODE", "INV_NUM", "ZJE", "ZFJE", "SELL_QTY", "SHOP_CODE");
在基于orderTable 的str_Inv_Num ,生成更小的一个表
for (int i = 0; i < orderTable.Rows.Count; i++)
{
for (int j = 0; j < orderTable.Columns.Count; j++)
{
if (j == 0)
{
str_INV_DATE = orderTable.Rows[i][j].ToString().Trim();
//shop_code = tab.Rows[i][j].ToString();
}
if (j == 1)
str_MemberCode = orderTable.Rows[i][j].ToString().Trim();
if (j == 2)
{
str_Inv_Num = orderTable.Rows[i][j].ToString().Trim();
subInv_Num = str_Inv_Num;
}
if (j == 3)
Inv_Totalamt = Convert.ToInt32(orderTable.Rows[i][j].ToString().Trim());
if (j == 4)
str_INV_AMT = Convert.ToInt32(orderTable.Rows[i][j].ToString().Trim());
if (j == 5)
int_Sell_Qty = Convert.ToInt32(orderTable.Rows[i][j].ToString().Trim());
if (j == 6)
str_Shop_Code = tab.Rows[i][j].ToString().Trim();
}
if (str_old_Inv_Num.Trim()!=str_Inv_Num.Trim()) //去除某个会员有2个以上单据,并且每个单据有多件销售货品时的重复记录。目前第一个单号的第一件货品,就会把货品信息都列出来,如果一个单子有多件货品,不加此句就会出现重复数据。导致结果不对。
{
view.RowFilter = "INV_NUM='" + str_Inv_Num+"'";
orderDetailTable = view.ToTable(true, "INV_NUM", "SKU", "C_SHORT_DE", "SELL_QTY", "SERIAL_NO");
List<CofflineOrderDetail> lCofflineOrderDetail = DBUtil.GetList<CofflineOrderDetail>(orderDetailTable);//返回泛型列表
//OracleAccess.logger.Debug(" CAL_getOfflineOrder 子 table :" + str_vip.ToString() + DateTime.Now.ToLongDateString() + DateTime.Now.ToLongTimeString() +
// "," + str_INV_DATE + "," + str_MemberCode + "," + str_Inv_Num + "," + Inv_Totalamt + "," + str_INV_AMT + "," + int_Sell_Qty + "," + str_Shop_Code +
// DBUtil.ToJson(subtab));
listorder.Add(new COfflineOrder(str_INV_DATE, str_MemberCode, str_Inv_Num, Inv_Totalamt, str_INV_AMT, str_Shop_Code, int_Sell_Qty, lCofflineOrderDetail));
view.RowFilter = "";
str_old_Inv_Num = str_Inv_Num;
}
}
相关文章推荐
- 过滤淘宝网弹出窗口
- dedecms采集过滤常用代码集合
- C#实现Datatable排序的方法
- C#敏感词过滤实现方法
- C#从DataTable获取数据的方法
- 使用位运算实现网页中的过滤、筛选功能实例
- Windows Powershell过滤管道结果
- c# 如何将RadioButton与DataTable数据进行绑定
- C#使用DataSet Datatable更新数据库的三种实现方法
- C# DataTable的详细用法分享
- php下过滤HTML代码的函数
- C#检测是否有危险字符的SQL字符串过滤方法
- C#中DataTable排序、检索、合并等操作实例
- C#中datatable序列化与反序列化实例分析
- C#中DataTable删除行的方法分析
- C# datatable 不能通过已删除的行访问该行的信息处理方法
- DataSet与DataTable的区别示例介绍
- C#获取变更过的DataTable记录的实现方法
- asp 过滤非法字符函数
- C#中csv文件与DataTable互相导入处理实例解析