Foxtable(狐表)用户栏目专家坐堂 → [求助]请教自动计算代码


  共有10170人关注过本帖树形打印复制链接

主题:[求助]请教自动计算代码

帅哥哟,离线,有人找我吗?
yanzhen2010
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:212 积分:1564 威望:0 精华:0 注册:2011/7/20 21:00:00
[求助]请教自动计算代码  发帖心情 Post By:2011/8/20 19:24:00 [只看该作者]

费用结算表数据除了数量外,均为从医嘱表
批量添加,添加后“数量”不能自动计算。
求助数量列计算代码。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:住院收费.rar

[此贴子已经被作者于2011-8-20 19:27:52编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
布莱克朱
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:623 积分:3897 威望:0 精华:0 注册:2011/8/3 22:13:00
  发帖心情 Post By:2011/8/20 20:41:00 [只看该作者]

没有找到医嘱表呀

 回到顶部
帅哥哟,离线,有人找我吗?
yanzhen2010
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:212 积分:1564 威望:0 精华:0 注册:2011/7/20 21:00:00
  发帖心情 Post By:2011/8/20 20:47:00 [只看该作者]

是长期医嘱和临时医嘱表

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/8/20 21:46:00 [只看该作者]

你表述问题很精简, 可惜我没有看懂。

 回到顶部
帅哥哟,离线,有人找我吗?
yanzhen2010
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:212 积分:1564 威望:0 精华:0 注册:2011/7/20 21:00:00
  发帖心情 Post By:2011/8/20 22:23:00 [只看该作者]

老师不妨打开文件看看“费用结算”表,合计列代码没问题,就是数量列不能同时自动计算。数量=合计/单价

“费用结算”表数据使用filler函数从长期医嘱和临时医嘱表提取来的,合计列代码:
If e.DataCol.Name = "拼音码" Then
    e.DataRow("合计") = DataTables("长期医嘱").Compute("Sum(合计)","[拼音码] = '" & e.NewValue & "'And [住院号] = '"& e.DataRow("住院号") &"'")+ DataTables("临时医嘱").Compute("Sum(合计)","[拼音码] = '" & e.NewValue & "'And [住院号] = '"& e.DataRow("住院号") &"'")   
End If

现在想通过“合计”计算数量,但不知代码写在何处才会起作用?
[此贴子已经被作者于2011-8-20 22:29:46编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/8/20 22:29:00 [只看该作者]

If e.DataCol.Name = "拼音码" Then
    e.DataRow("合计") = DataTables("长期医嘱").Compute("Sum(合计)","[拼音码] = '" & e.NewValue & "'And [住院号] = '"& e.DataRow("住院号") &"'")+ DataTables("临时医嘱").Compute("Sum(合计)","[拼音码] = '" & e.NewValue & "'And [住院号] = '"& e.DataRow("住院号") &"'")
    e.DataRow("数量") = e.DataRow("合计")/e.DataRow("单价")
End If
If e.DataCol.Name = "拼音码" Then
    e.DataRow("数量") = e.DataRow("合计")/e.DataRow("单价")
End If

 回到顶部
帅哥哟,离线,有人找我吗?
yanzhen2010
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:212 积分:1564 威望:0 精华:0 注册:2011/7/20 21:00:00
  发帖心情 Post By:2011/8/20 22:55:00 [只看该作者]

以下是引用狐狸爸爸在2011-8-20 22:29:00的发言:
If e.DataCol.Name = "拼音码" Then
    e.DataRow("合计") = DataTables("长期医嘱").Compute("Sum(合计)","[拼音码] = '" & e.NewValue & "'And [住院号] = '"& e.DataRow("住院号") &"'")+ DataTables("临时医嘱").Compute("Sum(合计)","[拼音码] = '" & e.NewValue & "'And [住院号] = '"& e.DataRow("住院号") &"'")
    e.DataRow("数量") = e.DataRow("合计")/e.DataRow("单价")
End If
If e.DataCol.Name = "拼音码" Then
    e.DataRow("数量") = e.DataRow("合计")/e.DataRow("单价")
End If
问题没有解决,"数量"列代码不起作用


 回到顶部
帅哥哟,离线,有人找我吗?
yanzhen2010
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:212 积分:1564 威望:0 精华:0 注册:2011/7/20 21:00:00
  发帖心情 Post By:2011/8/20 22:58:00 [只看该作者]

问题没有解决,"数量"列代码不起作用

是不能自动计算,需要重置。

在使用过程中越来越感到代码不如表达式。代码存在明显弱势。一段表达式能解决的问题,代码写了一大堆还是不能解决。

对DataColChanged(某一列的内容被更改后执行,此时列的内容已经是更改后的值。)事件越用越不能理解。比如:

合计列已经变化了,现在要通过合计计算数量,但就是不能自动计算出来,必须重置某一列。

[此贴子已经被作者于2011-8-20 23:19:44编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/8/21 7:46:00 [只看该作者]

正确的代码:

 

Select  e.DataCol.Name
    Case  = "拼音码"
        e.DataRow("合计") = DataTables("长期医嘱").Compute("Sum(合计)","[拼音码] = '" & e.NewValue & "'And [住院号] = '"& e.DataRow("住院号") &"'")+ DataTables("临时医嘱").Compute("Sum(合计)","[拼音码] = '" & e.NewValue & "'And [住院号] = '"& e.DataRow("住院号") &"'")
    Case "单价","数量"
        e.DataRow("数量") = e.DataRow("合计")/e.DataRow("单价")
End Select

 

设置完成之后,要重置一次,新输入或修改的数据,都能自动计算。

认真看看帮助中事件实例的部分,事件解决问题的能力和效率,远远不是表达式能比的

[此贴子已经被作者于2011-8-21 9:20:12编辑过]

 回到顶部