以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]网络条件下的编号 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=61532) |
||||
-- 作者:chnfo -- 发布时间:2014/12/14 10:49:00 -- [求助]网络条件下的编号 使用场景:局域网使用,用ACCESS做数据库。但多个局域网使用的数据最终要合并到一个数据库里。 这时候,使用_identify来做主键关联各个表显然是不行的,因为合并各个局域网的数据之后,_identify会自动增长,最后数据可能就乱套了。 但如果使用网络环境下的复杂编号,我觉得速度太慢,增加一个单表的数据300行,耗时接近2.5分钟,这个有点难以忍受————如果是导入另一个局域网的使用数据,估计导一天都不一定搞得定(因为表比较多,数据量比较大,很多表会有上万甚至十万行)。 但据程版讲,如果只是用自动编号生成方法,可能导致编号重复。 我做了一个例子,不知道用这种方法能不能既提高速度,又避免编号重复。还请各位狐神指导。 又在论坛上扒了一圈,发现飞飞大侠提供的终极解决方案,可惜不知它怎么用。
说是三步走,但这些代码应当放在哪里呢? 急求大神指导。 能不能做个实例………………
|
||||
-- 作者:有点甜 -- 发布时间:2014/12/14 10:54:00 -- 跟你的一点关系都没有。
不是跟你说了么,每个局域网的给它赋值一个局域网名。比如局域网1、局域网2、局域网3
Id列,就用 局域网1加上_Identify的值。
那么,最后合并,得到的Id列肯定是不同的啊 |
||||
-- 作者:chnfo -- 发布时间:2014/12/14 11:18:00 -- 直接在datarowadding中写成: e.datarow("ID") = "局域网编号“ & e.datarow("_identify")? 就算是把它放在datacolchanged中也不行啊。也会出现重复的ID 我这样试过了,会出来一个问题: 如果我在表中执行了删除行操作,然后再到ACCESS中执行了“压缩和修复数据库”操作,再来增加数据,就会出现重复的ID啊。就算是同一个PID,也会出现相同的ID 示例中的PID就相当于局域网编号。 这里A表中出现了两行“KKK11” 难道问题出在再到ACCESS中执行了“压缩和修复数据库”操作这里吗?
[此贴子已经被作者于2014-12-14 11:27:25编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2014/12/14 11:38:00 -- 1、在DataRowAdded加入代码 e.DataRow.Save
2、save之后,才会生成_Identify,然后再给Id列赋值。 |
||||
-- 作者:chnfo -- 发布时间:2014/12/14 12:10:00 -- 甜兄再麻烦看一下。现在改了之后,应当可以了。 但做了几次ACCESS的修复和压缩数据库之后,出现一个奇怪的问题,就是A表的ID=kkk484和kkk485,关联的B表明明有数据,为什么不显示呢?
[此贴子已经被作者于2014-12-14 12:11:37编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2014/12/14 12:15:00 -- 因为表B你指加载10行
http://www.foxtable.com/help/topics/1813.htm
|
||||
-- 作者:chnfo -- 发布时间:2014/12/14 12:21:00 -- 晕死。原来如此。疏忽了 [此贴子已经被作者于2014-12-14 12:21:04编辑过]
|