以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  窗口引用数据出错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=108762)

--  作者:whx007
--  发布时间:2017/10/28 17:42:00
--  窗口引用数据出错
窗口中有折扣(TextBox3)和实付现金(TextBox9)两个控件,希望输入折扣值后实付现金相应变化。
实付现金通过销售明细表的datacolchanged来获得数值,代码如下:
Dim Filter As String = "订单号 = \'" & e.DataRow("订单号") & "\'"
e.Form.Controls("TextBox9").Text =  DataTables("销售明细表").Compute("sum(金额)",Filter) - e.Form.Controls("TextBox3").value
折扣(TextBox3)Valuechanged代码如下:
Dim Filter As String = "订单号 = \'" & Tables("销售订单.销售明细表").current("订单号") & "\'"
e.Form.Controls("TextBox9").value =  Tables("销售订单.销售明细表").Compute("sum(金额)",Filter) -cint(e.Form.Controls("TextBox3").value)
折扣的初始值设置为0
现在问题是:例如:折扣默认值为0时实付现金值350(为当前订单的销售明细金额之和),当输入折扣值如50时,实付现金数值为显示为-50。不知道问题出在哪。请帮忙分析一下,谢谢!
[此贴子已经被作者于2017/10/28 17:58:18编辑过]

--  作者:whx007
--  发布时间:2017/10/29 15:58:00
--  
没有人能帮忙解答一下吗
--  作者:有点甜
--  发布时间:2017/10/29 21:48:00
--  

datacolchanged事件

 

If e.DataCol.name = "订单号" AndAlso forms("窗口1").opened Then
    Dim Filter As String = "订单号 = \'" & e.DataRow("订单号") & "\'"
    Forms("窗口1").Controls("TextBox9").Text =  DataTables("销售明细表").Compute("sum(金额)",Filter) - val(Forms("窗口1").Controls("TextBox3").Text)
End If

 

TextChanged事件

 

Dim Filter As String = "订单号 = \'" & Tables("销售订单.销售明细表").current("订单号") & "\'"
Forms("窗口1").Controls("TextBox9").value =  Tables("销售明细表").Compute("sum(金额)",Filter) - val(Forms("窗口1").Controls("TextBox3").Text)

 

[此贴子已经被作者于2017/10/29 21:48:31编辑过]

--  作者:whx007
--  发布时间:2017/10/30 4:52:00
--  
谢谢版主。按照你的代码改后问题依旧。而且第一次获得的数据更不对了,我觉得代码也没有问题,不知道哪里的问题。
图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:无标题2.png
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2017/10/30 8:40:00
--  

datacolchanged事件

 

If e.DataCol.name = "订单号" AndAlso forms("窗口1").opened Then
    Forms("窗口1").Controls("TextBox9").Text =  Tables("销售订单.销售明细表").Compute("sum(金额)") - val(Forms("窗口1").Controls("TextBox3").Text)
End If

 

TextChanged事件

 
Forms("窗口1").Controls("TextBox9").value =  Tables("销售订单.销售明细表").Compute("sum(金额)") - val(Forms("窗口1").Controls("TextBox3").Text)


--  作者:whx007
--  发布时间:2017/10/30 16:27:00
--  
1、现在能正常计算了,输入折扣值的时候实付现金会相应变化。
2、但实付现金的值是上一个订单明细的总金额,不是当前正在开的销售单。
是不是以下问题造成的:
最下面的表我绑定的是销售明细表,不是销售订单.销售明细表子表。设计的时候考虑的是先有明细后再生成的订单。
--  作者:有点甜
--  发布时间:2017/10/30 16:42:00
--  

你可以不绑定,直接赋值就好了。

 

timertick事件 http://www.foxtable.com/webhelp/scr/1301.htm

 

Forms("窗口1").Controls("TextBox8").value =  Tables("销售订单.销售明细表").Compute("sum(金额)")


--  作者:whx007
--  发布时间:2017/10/30 17:20:00
--  
可能我没有表达清楚:

图片点击可在新窗口打开查看此主题相关图片如下:无标题3.png
图片点击可在新窗口打开查看
1、我希望在我添加完产品明细后,实付现金控件获得的值是销售明细表的金额列合计值。比如:销售明细的合计金额是498,此时实付现金值为498。
2、输入相应的折扣值后,实付现金值相应变化。比如:实付现金值为498时,当折扣值输入8的时候,实付现金值变为490.
3、点击保存生成客户订单。

--  作者:有点甜
--  发布时间:2017/10/30 17:21:00
--  

 就是7楼代码。

 

 不会做上传具体的项目说明。


--  作者:whx007
--  发布时间:2017/10/30 17:38:00
--  
我按照7楼做了:
1、打开了计时器true
2、设置timertick事件代码:Forms("销售主界面").Controls("TextBox9").value = Tables("销售订单.销售明细表").Compute("sum(金额)")

图片点击可在新窗口打开查看此主题相关图片如下:无标题4.png
图片点击可在新窗口打开查看