以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助] 代码计算的值,想手动更改?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=146037)

--  作者:CHSTONE
--  发布时间:2020/2/14 18:11:00
--  [求助] 代码计算的值,想手动更改?
各位大神老师:

\'以下代码是计算单价及金额的,在表事件DataColChanged中:

Select  Case e.DataCol.Name
    Case "材料费","加工项目_切割费","加工项目_折弯费","数量","单价"
        dr("单价") = dr("材料费")+dr("加工项目_切割费")+dr("加工项目_折弯费")
        dr("金额") = dr("单价")*dr("数量")
End Select

以上代码已经正确计算出单价及金额,但是在表中,单价列就不能更改了,如果我想在表中手动更改单价列,该如何弄?

请指教!

--  作者:有点蓝
--  发布时间:2020/2/14 20:11:00
--  
判断一下,如果单价有值,就不再计算

Select  Case e.DataCol.Name
    Case "材料费","加工项目_切割费","加工项目_折弯费"
if dr.isnull("单价") then
        dr("单价") = dr("材料费")+dr("加工项目_切割费")+dr("加工项目_折弯费")
end if
    Case "数量","单价"
        dr("金额") = dr("单价")*dr("数量")
End Select

--  作者:CHSTONE
--  发布时间:2020/2/14 20:31:00
--  
有点蓝老师:
你好!
你上面的这种代码不行,我发贴之前我就试过.而且我还试过其它几种表事情都不行.(代码都是不错的,但就是不能执行).
本身单价是根据其它几种列值变化而来的(dr("单价") = dr("材料费")+dr("加工项目_切割费")+dr("加工项目_折弯费")),因此单价列初值本身就是空的,但当几列内容输入进去之后,单价列的值就被自动算了出来.   但有时候自动算的值达不到要求,这时候想手动修改(在表中直接输入),这时候单价列就无法进行编辑状态,我也查过的,单价列的ALLOWEDIT 状态是TRUE.
这个问题如何破,请指教.
TKS!

CHS



--  作者:有点蓝
--  发布时间:2020/2/14 21:09:00
--  
请上传具体实例说明
--  作者:CHSTONE
--  发布时间:2020/2/14 22:34:00
--  
有点蓝老师:
附件已上传.
以下代码是计算单价及金额的,在表事件DataColChanged中:  记价表   中的.

Select  Case e.DataCol.Name
    Case "材料费","加工项目_切割费","加工项目_折弯费","数量","单价"
        dr("单价") = dr("材料费")+dr("加工项目_切割费")+dr("加工项目_折弯费")
        dr("金额") = dr("单价")*dr("数量")
End Select

以上代码已经正确计算出单价及金额,但是在表中,单价列就不能更改了,如果我想在表中手动更改单价列,该如何弄?
(当然其中的材料费,加工项目切割费等有一些需要计算的字段都是通代码写在表,记价表事件DataColChanged中了)
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:记价表20200211-代码正确.table


请指教!


--  作者:有点蓝
--  发布时间:2020/2/14 23:05:00
--  
单价列是表达式列,当然改不了,转换为数据列即可:http://www.foxtable.com/webhelp/topics/2494.htm
--  作者:CHSTONE
--  发布时间:2020/2/14 23:12:00
--  
对的,难道其它代码计算的可以更改呢.
谢谢蓝老师!


--  作者:CHSTONE
--  发布时间:2020/2/14 23:26:00
--  
蓝老师,还是不能修改呦.

其它代码计算的几个列数值是可以更改的.

麻烦明天老师再帮我看看.谢谢!

--  作者:有点蓝
--  发布时间:2020/2/15 8:37:00
--  
我测试没有问题,确定已经转换为数据列了?到表结构里看看

或者2楼的代码把if dr.isnull("单价") then判断去掉试试

--  作者:CHSTONE
--  发布时间:2020/2/15 9:56:00
--  
2楼的代码把if dr.isnull("单价") then判断已经去掉,并且确定单价列是数据列,而且鼠标可以进去,之后也可以新值输入数值,但鼠标离开的同时,数值又立即变成了表达式计算的数值,也就是没有更改成功.
(当然其中的材料费,加工项目切割费等有一些需要计算的字段都是通代码写在表,记价表事件DataColChanged中了,而且是可以在表里面直接可以更改的)