以文本方式查看主题

-  易表在线答疑  (http://www.egrid2000.com/dvbbs/index.asp)
--  用户社区  (http://www.egrid2000.com/dvbbs/list.asp?boardid=2)
----  请教:一个表自动删除多余的列,仅留前4列,如何写公式 (无内容)  (http://www.egrid2000.com/dvbbs/dispbbs.asp?boardid=2&id=6020)

--  作者:liuliu
--  发布时间:2007/1/16 11:39:00
--  请教:一个表自动删除多余的列,仅留前4列,如何写公式 (无内容)
正文为空!
--  作者:yangming
--  发布时间:2007/1/16 12:17:00
--  
参看下面的函数


Delfor
删除指定表中符合条件的行。

语法:
DelFor(Grid,CompareCol,CompareMode,CompareValue,......)

Grid         指定表,可以用表名表示,也可以用位置表示。
CompareCol   进行比较的列,可以用列名称表示,也可以用位置表示。
CompareMode  比较方式,包括=、>、<、>=、<=、<>、Like、Instr共8种比较方式。
CompareValue 比较值

可以设置多个比较条件,从第二个参数开始,每三个参数组成一个比较条件。如果比较方式选择的是Instr,则进行包含查询;如果比较方式选择"Like",则可以在比较值中使用通配符进行类似查询。

例如:
DelFor("订单表","结账","=",-1)
删除订单表中已经结帐的记录。


--  作者:czy
--  发布时间:2007/1/16 12:23:00
--  
Eval(Mid(Rept(" And DeleteCol(Grid,4)",cols-4),4))
--  作者:liuliu
--  发布时间:2007/1/16 14:25:00
--  
" And DeleteCol(Grid,4)"为什么要用and,最后一个4什么意思,麻烦讲解一下,谢谢
--  作者:czy
--  发布时间:2007/1/16 14:50:00
--  
看公式不能这样看的,要看整体才行,把下面的公式放到公式生成器中执行一下,或许比我解释更易理解。


Mid(Rept(" And DeleteCol(Grid,4)",cols-4),4)


--  作者:liuliu
--  发布时间:2007/1/16 15:50:00
--  
eval(Mid(Rept(" And AddCol(Grid,[%月份%],2,True)",Number([%月份%])),Number([%月份%])))请问这样增加列,不执行,请赐教
--  作者:czy
--  发布时间:2007/1/16 16:01:00
--  
呵呵,你这样的公式能起什么作用,即使能增加列也只能增加一列,因为AddCol是不能生成同标题的列名称的。

如果想让楼上的公式有效可以这样:(当然这个公式也只能生成一列)
Eval(Mid(Rept(" And AddCol(Grid,[%月份%],2,True)",Number([%月份%])),5))


--  作者:liuliu
--  发布时间:2007/1/16 16:40:00
--  
见笑了。想从1到[%月份%]生成月份个列,每列名分别为1月...2月,给写个公式吧
--  作者:czy
--  发布时间:2007/1/16 17:15:00
--  
可以不用变量的。

Eval("AddCol(Grid,"""+Substitute("1月|2月|3月|4月|5月|6月|7月|8月|9月|10月|11月|12月","|",""",0,True) And AddCol(Grid,""")+""",0,True)")


--  作者:liuliu
--  发布时间:2007/1/16 18:56:00
--  
请费心,编个变量的,因为,主要想实现,当选择月份变量后,只增加月份变量个列,如选6月,只生成6列,分别为1月.2月....6月。 拜托了