以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]代码问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=17606)

--  作者:tamama52
--  发布时间:2012/3/18 11:44:00
--  [求助]代码问题

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:仓管版本1.0.zip

我在大板入库表的datacolchanged里写了一段

If e.DataCol.name="片数"
If e.DataRow("片数")=0 Then
e.DataRow("状态")="结"
End If
End If

希望当表达式片数即库存片数为0时,自动把编号的状态改为[结]

可是貌似无法实现,请大侠帮我看看,项目已上传


--  作者:czy
--  发布时间:2012/3/18 11:53:00
--  

直接下面这样好了

 


    If e.DataRow("片数")=0 Then
        e.DataRow("状态")="结"
    End If

 

片数是表达式列,不能做为变动列来判断的


--  作者:tamama52
--  发布时间:2012/3/18 12:00:00
--  
原来如此,谢谢
--  作者:tamama52
--  发布时间:2012/3/19 17:01:00
--  
这个还是写在datacolchanged里么?我发现貌似还是不会变动,要通过重置列才会变动
--  作者:狐狸爸爸
--  发布时间:2012/3/19 17:10:00
--  

你不如将状态这一列改为表达式列,表达式为:

 

iif(片数 = 0, \'节\', Null)


--  作者:tamama52
--  发布时间:2012/3/20 9:14:00
--  

额,狐爸,如果还是要用代码的话,这段代码应该写到哪里呢?


--  作者:狐狸爸爸
--  发布时间:2012/3/20 9:25:00
--  

还是DataColChanged事件,但是表达式列不会触发DataColChange事件,解决方法参考:

http://www.foxtable.com/help/topics/2381.htm

 


--  作者:tamama52
--  发布时间:2012/3/20 9:54:00
--  

额,我是入库片数-出库片数(关联出库表后合计)=库存片数(表达式) 然后希望自动根据库存片数调整入库状态

 

看了看帮助,发现我影响库存片数的列也是表达式,那这种情况该怎么办呢


--  作者:狐狸爸爸
--  发布时间:2012/3/20 10:08:00
--  

继续向上追寻,找出源头。

 

如果D有C决定,C由B决定,B有A决定,C和B是表达式,那么D的计算代码应该这样写:

 

Select Case e.DataCol.Name

     Case “A”

        计算D的代码

End Select


--  作者:tamama52
--  发布时间:2012/3/20 10:28:00
--  

额,狐爸,可有个问题,B不由A决定

是这样的,我们这部分的产品主要是跟着编号走,同编号下可能有多次出库,所以我是这样做的

A(入库表中编号的入库片数)-B(关联出库表,同编号的出库片数的合计)=C(表达式算出库存片数)

然后当C库存片数<A入库片数时,D状态=售,C库存片数=0时,D状态=结

A其实是固定值,不会变更,那如何决定D的状态呢