以文本方式查看主题

-  易表在线答疑  (http://egrid2000.com/dvbbs/index.asp)
--  用户社区  (http://egrid2000.com/dvbbs/list.asp?boardid=2)
----  列名不同的表合并问题  (http://egrid2000.com/dvbbs/dispbbs.asp?boardid=2&id=1242)

--  作者:swg-1954
--  发布时间:2012/3/11 13:51:00
--  列名不同的表合并问题
这个公式不能把它表的内容合并复制过来。SetLabel("  ","稍等---") And AppendFor("抄表明细采集数据库","ID,A,B,抄表顺序号,抄表段编号,用户编号,用户名称,电能表标识,示数类型,M,打印次数,上次抄见示数,本次抄见示数,本次抄见电量,重算电量,差数,U,上次抄见电量,平均电量,综合倍率,用电类别,PG,抄见位数,用电地址,E,上次抄表日期,本次抄表日期,XZ,h,F,yy,fty,C","ID,A,B,抄表顺序,抄表段编号,用户编号,用户名称,电能表资产编号,示数类型,M,打印次数,上次示数,本次示数,本次抄见电量,重算电量,差数,U,上次抄见电量,前三月平均电量,综合倍率,用电类别,PG,表位数,用电地址,E,上次抄表时间,本次抄表日期,XZ,h,F,yy,fty,C",rows) And SetLabel("  ","OK!")
这个公式不能把本表复制合并过去。SetLabel("  ","稍等---") And AppendFor("采集数据库","ID,A,B,抄表顺序,抄表段编号,用户编号,用户名称,电能表资产编号,示数类型,M,打印次数,上次示数,本次示数,本次抄见电量,重算电量,差数,U,上次抄见电量,前三月平均电量,综合倍率,用电类别,PG,表位数,用电地址,E,上次抄表时间,本次抄表日期,XZ,h,F,yy,fty,C","ID,A,B,抄表顺序号,抄表段编号,用户编号,用户名称,电能表标识,示数类型,M,打印次数,上次抄见示数,本次抄见示数,本次抄见电量,重算电量,差数,U,上次抄见电量,平均电量,综合倍率,用电类别,PG,抄见位数,用电地址,E,上次抄表日期,本次抄表日期,XZ,h,F,yy,fty,C",rows) And SetLabel("  ","OK!")
因为有几列列名不同,但列内容相同想合并一起,又不要修改列名。特请教!

-=-=-=- 以下内容由 swg-19542012年03月11日 01:54pm 时添加 -=-=-=-
呵呵。第二个是这个函数CopyRows

-=-=-=- 以下内容由 swg-19542012年03月11日 01:57pm 时添加 -=-=-=-
呵呵。第二个是这个函数Copyfor
--  作者:wjq1072
--  发布时间:2012/3/11 14:09:00
--  
将操作的主表放在第一位置,可将后面多表的数据合并到主表(后面各表都必须有姓名列作为参考列)
在主表(名称为“合并表”)设置窗口按钮公式:
ClearGrid(Grid) And Eval(mid(Rept(" And DeleteCol(Grid,2)",Cols-1),5)) And Eval("AddCol(Grid,"""+Substitute(Eval("ListCols("""+Substitute(Substitute(ListGrids(),"合并表|",""),"|",""")+""|""+ListCols(""")+""")"),"|",""",0, True ) And AddCol(Grid,""")+""",0, True )") And Eval("AppendRows("""+Substitute(Substitute(ListGrids(),"合并表|",""),"|",""") And AppendRows(""")+""")") And DelReptRows(Grid,"姓名") And DelFor(Grid,"姓名","=","") And MoveCol("姓名",1) And Eval("Eval(""EvalFor(Grid,""""""+Substitute(Substitute(Substitute(Eval(""Substitute(""""|@|#|"""",""""|"""",""""""+Substitute(Substitute(ListCols(Grid),""姓名|"",""""),""|"","""""")+""""|""""+Substitute(""""|@|#|"""",""""|"""","""""")+"""""")""),""@"","""""",""""FindText("""""""""+Substitute(Substitute(Substitute(ListGrids(),"合并表|",""),"|","/"),"/",""""""""",""""""""""),""#"","""""""""",""""""""姓名"""""""",""""""""="""""""",[姓名])"""",""""""),""|"","""""",""""="""","""""""") And EvalFor(Grid,"""""")+"""""",""""="""","""""""")"") And Eval(""EvalFor(Grid,""""""+Substitute(Substitute(Substitute(Eval(""Substitute(""""|@|#|"""",""""|"""",""""""+Substitute(Substitute(ListCols(Grid),""姓名|"",""""),""|"","""""")+""""|""""+Substitute(""""|@|#|"""",""""|"""","""""")+"""""")""),""@"","""""",""""FindText(""""""""")+""""""""",""""""""""),""#"","""""""""",""""""""姓名"""""""",""""""""="""""""",[姓名])"""","""""&
--  作者:swg-1954
--  发布时间:2012/3/11 14:34:00
--  
egd文件下载
--  作者:wjq1072
--  发布时间:2012/3/11 15:22:00
--  
egd文件下载

-=-=-=- 以下内容由 wjq10722012年03月11日 03:32pm 时添加 -=-=-=-
你的两个表列数不一样,33、32
--  作者:swg-1954
--  发布时间:2012/3/11 16:50:00
--  
粗心那,有一表中少一列,造成公式无法运行。谢谢总版主。
--  作者:wjq1072
--  发布时间:2012/3/11 17:28:00
--  
一、可以设置两个表达式变量:(两个表的列数一样,用这个方法不容易出错!)
1、[%采集数据库%]
表达式:Substitute(ListCols("采集数据库"),"|",",")

2、[%抄表明细采集数据库%]
表达式:Substitute(ListCols("抄表明细采集数据库"),"|",",")

二、在“采集数据库”表窗口按钮设置公式:(运算好像快一些)
ClearGrid("采集数据库") And Eval("AppendFor(""抄表明细采集数据库"","""+[%抄表明细采集数据库%]+""","""+[%采集数据库%]+""")") And DelRow("采集数据库",1)

三、在“抄表明细采集数据库”表窗口按钮设置公式:(运算好像慢一些)
ClearGrid("采集数据库") And Eval("CopyFor(""采集数据库"","""+[%采集数据库%]+""","""+[%抄表明细采集数据库%]+""")") And DelRow("采集数据库",1)


--  作者:swg-1954
--  发布时间:2012/3/11 21:47:00
--  
谢谢 wjq1072 总版主,这个真好,也不易出错了,运行快多了。再次谢谢