ds.Tables.Add(table);
ds.Tables.Add(table1);
我调试了一下,发现两个DataTable变量参数的名字是一样的,都是“tmp”,所以才会出现“名为 tmp 的 DataTable 已属于此 DataSet”的错误提示,那么只要将两个DataTable变量的名字设成不一样的问题不就解决了!!
DataTable table = GetDataTable();
table.TableName = "table";
DataTable table1 = GetDataTable3();
table1.TableName = "table1";
DataSet ds = new DataSet();
ds.Tables.Add(table);
ds.Tables.Add(table1);
有如此说法,再检查自己的代码,并无重复添加 表的可能。另大多数时候不报错直接加载,说明用户写法应该没有多大问题,那么问题在哪里,官方是不是要检查一下自己的底层程序。
是否是官方生成正式表之前,有一个临时表生成,而这个临时表未指定一个具体的名称,所以在网速可以的局域网内部生成,这个临时表会及时销毁而不报错,如果局域网状态不好了,影响了临时表的生成销毁或数据加载,则导致某“临时表”处理不正常,所以偶尔报这个错误。 但如果是 广域网使用,又碰上电信网与移动网的数据交接成见,所以生成临时表,加载数据就表现非常慢了(保存数据5条以内也有明显的非常慢 的感觉),这时就100%报错了。
DataTable 已属于此 DataSet。
以上全属于 一 FT高级版用户的 臆想,想来只有如此解释 才能解释 同样的代码在局域网状态下,较少(不是完全不报)报这个错误,而在广域路网关使用时必然100%报错的现象。
具体真像如何,希望FT官方能好好查一下这个问题,论坛上搜索 就知道不少用户出现了这一个问题,但官方一直没有正面解答这一问题,都不了了之。
看看官方源码中是否存在 以下代码中红色标示部份的代码缺失原因。
DataTable table = GetDataTable();
table.TableName = "table";
DataTable table1 = GetDataTable3();
table1.TableName = "table1";
DataSet ds = new DataSet();
ds.Tables.Add(table);
更奇怪的是,当网速非常慢时,动态加载表结构时,所有的表均提示错误,但长时间等待之后,系统也正常进入了,该加载的数据也加载了。
问题是为何报错? 报错之后的结果还正常? 底层代码执行顺序不可控?