首页 新闻 会员 周边 捐助

兩個Table 之间怎么交换值???

0
悬赏园豆:10 [已解决问题] 解决于 2012-01-16 18:41

        private void TBReplace(DataTable a_tbProcDt, DataTable a_tbProcDetail)
{
foreach (DataRow l_dr in a_tbProcDetail.Rows)
{
if (a_tbProcDt.Select(" tano = '" + l_dr["tano"] + "' and dtno = '" + l_dr["dtno"] + "' ").Length == 0) //New
{
a_tbProcDt.Rows.Add(l_dr);
}
else //Mofify
{
a_tbProcDt.BeginLoadData();
a_tbProcDt.LoadDataRow(l_dr.ItemArray, false);
a_tbProcDt.EndLoadData();
}
}
}



 解释:这个函数的目的,是把第二个表中的值给第一个表,如果第一个表没有第二个表中的数据,就给第一个表加一行,如果已经有了,就修改第一个表中的值

问题: 执行完这个函数以后,a_tbProcDt这个表中的值没有发生改变???

难道非要一个单元格一个单元格的赋值???

c#
maanshancss的主页 maanshancss | 菜鸟二级 | 园豆:303
提问于:2012-01-16 15:08
< >
分享
最佳答案
0

如果是同一个对象,可以直接赋值对象啊,也可以一次赋值一行,实际上也就是赋值一个对象。

收获园豆:4
悟行 | 专家六级 |园豆:12559 | 2012-01-16 15:58
   l_drTest[2] = l_dr[2].ToString().Trim().Equals("") ? 0 : double.Parse(l_dr[2].ToString().Trim());

我現在是一個字段一個字段賦值的,一行直接賦值(l_drTest =l_drTest)沒有 用

maanshancss | 园豆:303 (菜鸟二级) | 2012-01-16 16:03

@maanshancss: l_drTest =l_drTest,看对象都相同,这个肯定是有问题的。

悟行 | 园豆:12559 (专家六级) | 2012-01-16 17:23

@Wellbeing: (l_drTest =l_dr) 

maanshancss | 园豆:303 (菜鸟二级) | 2012-01-16 18:32

@maanshancss: 

        private void TBReplace(DataTable a_tbProcDt, DataTable a_tbProcDetail)
        {
            foreach (DataRow l_dr in a_tbProcDetail.Rows)
            {
                if (a_tbProcDt.Select(" tano = '" + l_dr["tano"] + "' and dtno  = '" + l_dr["dtno"] + "' ").Length == 0) //New
                {
                    a_tbProcDt.ImportRow(l_dr);
                }
                else  //Mofify
                {
                    a_tbProcDt.BeginLoadData();
                    DataRow l_drTest = a_tbProcDt.Select(" tano = '" + l_dr["tano"] + "' and dtno  = '" + l_dr["dtno"] + "' ")[0];
                    l_drTest[2] = l_dr[2].ToString().Trim().Equals("") ? 0 : double.Parse(l_dr[2].ToString().Trim());
                    l_drTest[3] = l_dr[3].ToString().Trim().Equals("") ? 0 : double.Parse(l_dr[3].ToString().Trim());
                    l_drTest[4] = l_dr[4].ToString().Trim().Equals("") ? 0.000 : double.Parse(l_dr[4].ToString().Trim());
                    l_drTest[5] = l_dr[5].ToString().Trim().Equals("") ? 0.000 : double.Parse(l_dr[5].ToString().Trim());
                    l_drTest[6] = l_dr[6].ToString().Trim();
                    a_tbProcDt.EndLoadData();
                }
            }
        }

maanshancss | 园豆:303 (菜鸟二级) | 2012-02-08 08:23
其他回答(2)
1

DataRow 不能属于 两个表啊,难道没有错误提示?

第一处改为a_tbProcDt.Rows.Add(l_dr.ItemArray)行不?;
收获园豆:2
ChatinCode | 园豆:2272 (老鸟四级) | 2012-01-16 15:45

那個是打錯了, ImportRow 新增沒有用到

支持(0) 反对(0) maanshancss | 园豆:303 (菜鸟二级) | 2012-01-16 15:54
0

如果是批量复制,可以用SqlBulkCopy

收获园豆:4
lonely_rain | 园豆:752 (小虾三级) | 2012-01-16 17:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册