关于 datatable already belongs to this dataset的问题

zheninchangjiang 2010-03-17 06:21:40
DataSet ds = new DataSet("ds");
ds.Tables.Add(dt); //DT为过程中定义的表,所以不用copy
ds.Tables.Add(dtjob.Copy()); //dtjob是窗体类下定义的表,
ds.Tables.Add(dtpsource.Copy());//此句出错,dtpsource和dtjob同时定义,在同一个初始化过程中初始化,均属于不同的dataset
ds.Tables.Add(dtosource.Copy());

看上面的错误的语句实在是不得解,为什么为出错在那儿
错误信息为:
a datatable named 'table' already belongs to this dataset.
...全文
914 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zheninchangjiang 2010-03-18
  • 打赏
  • 举报
回复
最终结果如下:
DataTable dt1;
DataTable dt2;
DataTable dt3;
dt1 = dtjob.Copy() ;
dt1.TableName = "dt1";
dt2 = dtpsource.Copy();
dt2.TableName = "dt2";
dt3 = dtosource.Copy();
dt3.TableName = "dt3";
DataSet ds = new DataSet("ds");
ds.Tables.Add(dt);
ds.Tables.Add(dt1);
ds.Tables.Add(dt2);
ds.Tables.Add(dt3);

真的是要服了,关键是不知道为什么,因为我以前曾有过这样的代码
DataSet ds = new DataSet();
DataTable maintable = new DataTable();
DataTable resulttable = new DataTable();
DataTable deletedtable = new DataTable();
DataTable detailtable = new DataTable();
ds.Tables.Add(maintable);
ds.Tables.Add(detailtable);
ds.Tables.Add(resulttable);
ds.Tables.Add(deletedtable);
zheninchangjiang 2010-03-18
  • 打赏
  • 举报
回复
问题啊
即时窗口中的测试:

ds.Tables[1].Rows.Count
0
ds.Tables["dt1"].Rows.Count
0
dtjob.Rows.Count
zheninchangjiang 2010-03-18
  • 打赏
  • 举报
回复
最终结果是这样:
DataTable dt1 = new DataTable("dt1");
DataTable dt2 = new DataTable("dt2");
DataTable dt3 = new DataTable("dt3");
dt1 = dtjob.Copy();
dt2 = dtpsource.Copy();
dt3 = dtosource.Copy();
DataSet ds = new DataSet("ds");
ds.Tables.Add(dt);
ds.Tables.Add("dt1");
ds.Tables.Add("dt2");
ds.Tables.Add("dt3");
谢谢大家
一品梅 2010-03-17
  • 打赏
  • 举报
回复
DataTable dtjob;
dtjob = table.Copy();
ds.Tables.Add('dtjob');
一品梅 2010-03-17
  • 打赏
  • 举报
回复
少个参数,补上。
mayonglong 2010-03-17
  • 打赏
  • 举报
回复
debug一下就清楚了,估计是重名了~
zheninchangjiang 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xzjxylophone 的回复:]

dtpsource和dtjob同时定义!!

有可能错误的原因:
C# code

DataTable dtjob = new DataTable("table");
DataTable dtpsource = new DataTable("table");
/*
* Init dtjob and dtpsou……
[/Quote]
dtjob和dtpsource及dtosource是同一变量级别,我也就郁闷了,即使是同一个表,copy应该会生成新的对象ID,怎么就会那样了呢,更何况dtjob和dtpsource根本就不是同一对象
xzjxylophone 2010-03-17
  • 打赏
  • 举报
回复
dtpsource和dtjob同时定义!!

有可能错误的原因:

DataTable dtjob = new DataTable("table");
DataTable dtpsource = new DataTable("table");
/*
* Init dtjob and dtpsource
*
* */
DataSet ds = new DataSet("ds");
ds.Tables.Add(dtjob.Copy());
ds.Tables.Add(dtpsource.Copy());//It is wrong, because there doesn't
//have same table name when they in a dataset



或者 其他的名称同名了。
yongyinmg 2010-03-17
  • 打赏
  • 举报
回复
每个datatable起个别名~

111,076

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧