以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  表达式列生成的自动编号,赋给同一行另一字符列时,不能随之时时变化(已解决)用代码少走弯路  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=86440)

--  作者:ericotaku
--  发布时间:2016/6/17 12:58:00
--  表达式列生成的自动编号,赋给同一行另一字符列时,不能随之时时变化(已解决)用代码少走弯路
我按帮助“美化自动编号”,在表中设置了一个表达式列[编号表达式]
表达式为
\'WXMX\' + SubString(\'000000\', 1, 6 - Len(Convert([_Identify],\'System.String\'))) + Convert([_Identify], \'System.String\')

我是用的外部数据表,表的过滤条件设置成了 [_Identify] Is Null

表的DataRowAdded代码为
For Each r As Row In Tables("表").Rows
    r("编号") = r("编号表达式")
Next

当我新增行的时候
列[编号表达式]的值为WXMX000000,列[编号]的值根据DataRowAdded的代码也是WXMX000000
问题一:为什么会是000000呢?我看帮助上写:“新增行的_Identify列的内容是临时性的”,那这个临时性的值会是全0吗?

当我保存后,
列[编号表达式]的值变化,看帮助应该是因为“_Identify列会重新生成一个永久性的值”
那这时候,列[编号]却不跟着变。。。


我是想让编号列随着编号表达式列变化而变化,而现在只有在新增行的时候才可以
我把代码
For Each r As Row In Tables("表").Rows
    r("编号") = r("编号表达式")
Next

放在DataColChanged,AfterEdit中,也没效果。
放在CurrentChange中,会有效果,不过得点击单元格。也不是我要的效果。

问题二:怎么能让[编号]跟着[编号表达式]一起变啊?代码应该怎么写,放在哪里呢?
[此贴子已经被作者于2016/6/17 15:38:37编辑过]

--  作者:大红袍
--  发布时间:2016/6/17 14:40:00
--  

 你为什么要这样?一定要两列?直接一列完事

 

 DataRowAdded事件

 

e.DataRow.Save

e.DataRows("编号") = "WXMX” & Format(e.DataRow("_Identify"), "000000")


--  作者:ericotaku
--  发布时间:2016/6/17 15:38:00
--  

厄,是啊。。。我想多了图片点击可在新窗口打开查看 

当时寻思表达式列不能做关联列,又不想用Identify列。

还是用代码的好处多多啊