以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]控件写入数据问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=91629) |
-- 作者:viking -- 发布时间:2016/10/14 23:19:00 -- [求助]控件写入数据问题 做了一个类似简单的利润计算 Dim ddbh As String = e.DataRow("订单编号") Select Case e.DataCol.Name Case "收入","支出" Dim sr As Double Dim zc As Double Dim ye As Double sr = e.DataTable.Compute("sum(收入)","[订单编号] = \'" & ddbh & "\'") zc = e.DataTable.Compute("sum(支出)","[订单编号] = \'" & ddbh & "\'") ye = sr - zc MessageBox.Show(ddbh) MessageBox.Show(sr) MessageBox.Show(zc) MessageBox.Show(ye) Dim ddlr As DataRow = DataTables("订单").Find("[订单编号] = \'" & ddbh & "\'") ddlr("利润") = ye End Select 代码应该没什么问题,直接在表中修改收入和支出,运算没有问题,但是做了个窗口,控件TextBox绑定到收入或者支出列,在TextBox控件中写数值,代码执行计算有问题,好像是当前的值不参与计算,只是计算保存之前的数值,怎么解决?为什么会这个样子?
|
-- 作者:有点蓝 -- 发布时间:2016/10/15 9:49:00 -- 控件要离开焦点,输入的内容才会更新到表格 |
-- 作者:viking -- 发布时间:2016/10/15 14:22:00 -- 即使是离开控件后更新到表格,最终的到ddlr("利润") = ye这个结果也应该是正确的啊? 实际得到的结果是,新修改的这个数值没有参与计算 代码写到了:DataColChanged 里面
[此贴子已经被作者于2016/10/15 14:23:15编辑过]
|
-- 作者:有点蓝 -- 发布时间:2016/10/15 14:39:00 -- 上传例子测试 |
-- 作者:viking -- 发布时间:2016/10/15 14:56:00 -- 做了个例子,没有问题,不上传了, 但是项目中的问题还是不行,和项目的sql环境有关系? sql 订单[_Identify] Is Null 订单明细[_Identify] Is Null 有关系吗? 已经同步加载了订单表和子表的订单明细表的数据了 感觉问题不是出在这里,直接订单明细表中修改 计算正确 在窗口中修改数据 计算错误(不计算本行数值)
[此贴子已经被作者于2016/10/15 14:59:55编辑过]
|
-- 作者:viking -- 发布时间:2016/10/15 15:02:00 -- 订单表中AfterLoad 这个问题? [此贴子已经被作者于2016/10/15 15:02:34编辑过]
|
-- 作者:viking -- 发布时间:2016/10/15 15:24:00 -- 好像是窗口加载问题, 如果目前打开的窗口只加载了当前一行,和这个有影响吗? 打开窗口修改数值,只计算当前行的数值
|
-- 作者:有点蓝 -- 发布时间:2016/10/15 15:38:00 -- 窗口表是什么类型,怎么加载的? |
-- 作者:viking -- 发布时间:2016/10/15 15:45:00 -- 模式窗口, If Forms("收款").Opened Then Tables("订单明细").Cols("收付款负责").Caption = "收款_负责" Tables("订单明细").Cols("收付款日期").Caption = "收款_日期" Tables("订单明细").BuildHeader() DataTables("订单明细").LoadOrder = "[摘要日期]" DataTables("订单明细").LoadFilter = "[公司编码] = \'" & _UserGsbm & "\' and [收付款负责] is null and [收支方式] = \'现金收入\' or [公司编码] = \'" & _UserGsbm & "\' and [收付款负责] is null and [收支方式] = \'汇款收入\'" DataTables("订单明细").Load End If 这个窗口打开时,估计只加载了这一行数据
|
-- 作者:viking -- 发布时间:2016/10/15 15:46:00 -- 所以只计算这一行? |