以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求教:如何让数据不点击 重置 菜单按钮就生成?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=49544)

--  作者:悦颜
--  发布时间:2014/4/19 20:34:00
--  求教:如何让数据不点击 重置 菜单按钮就生成?

建立了关联表"订单" (父表)和"订单产品"(子表),通过 [合同号] 建立联系.企图通过计算与 (父表)"订单" 相同[合同号]的子表"订单产品"的产品[金额],赋值给父表"订单" [合计金额]的值.并将[合计金额]的值,转换成大写英文货币形式.尝试写了下面的代码,功能 能实现,但父表有两个以上的合同时,需要点击菜单栏的 重置 按钮. [合计金额] 的值才能上去. 我想,一定有更简便的,一旦"订单产品"的产品[金额]栏有值,父表[合计金额]的值就自动跳上的,所以,那位大侠看到了,请指点一下,帮我解决一下这个问题.  致谢!

 

Dim dt As DataRow = e.DataRow
Select Case e.DataCol.name
    Case "合计金额","大写金额"
        dt("大写金额") = EUMoney(dt("合计金额"))
       
        Dim Su As Double = Tables("订单产品").Compute("Sum(金额)","[合同号] = \'" & dt("合同号") & "\'")
       
        dt("合计金额") = Su
End Select


--  作者:有点甜
--  发布时间:2014/4/20 11:27:00
--  

 呃,看了下,你的代码是不是应该这样写?

 

 如果,你的金额列是表达式列的话,还需要看这里 http://www.foxtable.com/help/topics/2381.htm

 

 

Dim dt As DataRow = e.DataRow
Select Case e.DataCol.name
    Case "金额"

 

        dt("大写金额") = EUMoney(dt("合计金额"))
        Dim Su As Double = Tables("订单产品").Compute("Sum(金额)","[合同号] = \'" & dt("合同号") & "\'")        
        dt("合计金额") = Su


End Select

 


--  作者:悦颜
--  发布时间:2014/4/21 6:36:00
--  

 

上次在你的提醒下,我金额列也用了代码

 

Dim je As DataRow = e.DataRow
Select Case e.DataCol.name
    Case "数量","单价","英文货币","金额"
        je("金额") = je("数量") * je("单价")
        je("英文货币") = EUMoney(je("金额"))
       
End Select

 

在子表,datacolchanged 的事件里。


--  作者:有点甜
--  发布时间:2014/4/21 9:18:00
--  
 问题解决了吗?如果还没解决,上传一个例子说明实际问题。
--  作者:悦颜
--  发布时间:2014/4/21 20:51:00
--  

可能没例子,不直观。



图片点击可在新窗口打开查看此主题相关图片如下:aa.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2014-4-21 21:04:35编辑过]

--  作者:有点甜
--  发布时间:2014/4/21 20:57:00
--  

 看了一下,你的 合计金额列 是表达式?, 金额列 也是表达式?

 

 所以代码应该这样写

 

Dim je As DataRow = e.DataRow
Select Case e.DataCol.name
    Case "数量","单价"
        je("英文货币") = EUMoney(je("金额"))

        Dim fdr As Datarow = je.GetParentRow("订单")

        If fdr isnot Nothing Then
            fdr("大写金额") = EUMoney(fdt("合计金额"))        
        End If
End Select

[此贴子已经被作者于2014-4-21 20:57:25编辑过]

--  作者:悦颜
--  发布时间:2014/4/21 21:02:00
--  

求值:

父表<订单> 的 [合计金额] 根据子表的相同 [合同号] SUM [金额] 取值。不需再点击 菜单栏  重置 按钮.

 

虽然上面的代码也能将就着用, 但就是想要更好点的,因为想到了.所以惦记着, 请帮我想想招儿~~ 谢谢啦~~图片点击可在新窗口打开查看


--  作者:悦颜
--  发布时间:2014/4/21 21:10:00
--  

不,都是代码,没有表达式,

大写金额根据合计金额来的,你这个取值都倒过来了. 先求合计金额,再转大写货币.


--  作者:悦颜
--  发布时间:2014/4/21 21:31:00
--  

我想不出,帮我写写吧。。。图片点击可在新窗口打开查看


--  作者:有点甜
--  发布时间:2014/4/21 21:41:00
--  

 没有表达式?那就这样写

 

Dim je As DataRow = e.DataRow
Select Case e.DataCol.name
    Case "数量","单价","金额"

        je("金额") = je("数量") * je("单价")
        je("英文货币") = EUMoney(je("金额"))       

        Dim fdr As Datarow = je.GetParentRow("订单")

        If fdr isnot Nothing Then
             Dim Su As Double = Tables("订单产品").Compute("Sum(金额)","[合同号] = \'" & fdr("合同号") & "\'")                        

             fdr("合计金额") = Su 
             fdr("大写金额") = EUMoney(fdr("合计金额"))
        End If
End Select

[此贴子已经被作者于2014-4-21 21:42:05编辑过]