我的datatable 的select 语句是连接 2 个表,但是我只想更新其中一个,可以实现吗?
------------------------------------------------------------------------------------
我取记录时,要连接两个表 a 和 b, 其中a表,是需要用户编辑并更新的表,可是b表只是为了取字段(在这里是通过与a表关联取到员工的部门信息,因为a表没有存贮员工的部门编码,我要通过员工编号关联到b表的部门编码),
我不想对b表进行更新,只想更新a表中的部分字段,但是更新时,提示:
对于多个基表不支持动态SQL生成我估计就是因为,我的 select 语句中连接了两个表的原因
但是我的本意是只更新一个表呀,
我能不能设定哪些字段可以更新呢?
以下是我的函数代码,大家参考一下,也好明白我的问题        //查询公积金(返回结果集允许编辑)
        public int GetGjjRecord(string yf, string bm, out DataTable datatable1,out SqlDataAdapter da)
        {
            string strsql = "select a.autoid,a.月份,b.部门,a.公积金编号,a.编号,a.姓名,a.序号,a.存取方式编码,a.存取方式名称,a.存入,a.支取,a.公积金,a.备注,a.制单人,a.制单人姓名,a.审核人,a.审核人姓名,a.制单时间,a.审核时间 ";
            strsql += "from 公积金明细 a left join gzda b on (a.编号=b.编号) where a.记录标志 <> 0 and a.月份='"+yf +"' ";
            
            if (bm=="**")
            {
                strsql+=" order by b.部门,a.编号";
            }
            else if (bm == "##")
            {
                strsql += "and isnull(b.部门,'')='' order by b.部门,a.编号";
            }
            else
            {
                strsql += "and b.部门='" + bm + "' order by b.部门,a.编号";
            }            dt = new DataTable();
            da = new SqlDataAdapter(strsql, mydb.conn);
            scb = new SqlCommandBuilder(da);
            da.Fill(dt);
            datatable1 = dt;
            
            return 0;
        }

解决方案 »

  1.   

    我不想对b表进行更新,只想更新a表中的部分字段----------------------------------------------你这个是 查询啊,哪里有 更新???
    查询语句虽然很恶心,但没注意到哪里有问题。在  dt = new DataTable();  前面加个断点。 看看 strsql  最后生成的 字符串,拿去数据库中 执行一下,看看对不对。
      

  2.   


    将数据更新后,再利用DataSet做更新(要有主键)可使用如"Select * From TableA where 0=1",表名宜与数据库中的表名一致然后对数据源修改后再更新
      

  3.   

    这是就是查询语句呀,查询生成的表,放到datagridview中,然后用户修改表格中的单元格,
    然后点下更新按钮,更新到后台数据库。我已经试了,如果  select 语句中只有一个表,完全没有问题可以更新成功,但是如果有两个表,就无法更新,
    原因就是更新语句不能用sqlcommandbuilder 类来构造,自动构造不出来,提示:对于多个基表不支持动态SQL生成
    所以我想手动构造 更新语句,不知如何构造