以下是引用czy在2009-7-31 0:50:00的发言:
如果可以排除不可见字符的话,是否会是用量和金额两列产生了浮点而导致貌似的重复呢?
现在不明白的是你的总金额,试着用同样的spl语句生成总金额看看两者是不是相等。
[此贴子已经被作者于2009-7-31 0:53:39编辑过]
C版,系统fa piao打印产生的金额是直接针对医嘱表查询进行计算的,这保证了患者总金额的准确性,而汇总清单则是通过对结算表查询生成。
正常情况下,98%的患者这两者总金额是相等的,但总有那么一两个会出现重复数据,导致两者相差几十元甚至上千元,这与浮点应该无关,是生成临时表或填充时重复填充了某些行。
你注意到吗?代码第一行实际上就是医嘱表计算总金额的类似公式。
select sum(round(单价*用量*天数,2)) AS 金额 from [H_YIZ] where 住院ID = '" & str & "'"
为何经过了统计和填充两个步骤就会出现重复行呢?网络传输?或者其他问题?或者是BUG?
cmd.CommandText = "select 住院ID,项目,规格,类别,单位,单价,用量*天数 AS 用量,round(单价*用量*天数,2) AS 金额 from [H_YIZ] where 住院ID = '" & str & "'"
dt = cmd.ExecuteReader()
Dim g As New GroupTableBuilder("清单",dt)
g.Groups.AddDef("住院ID")
g.Groups.AddDef("类别")
g.Groups.AddDef("项目")
g.Groups.AddDef("规格")
g.Groups.AddDef("单位")
g.Groups.AddDef("单价")
g.Totals.AddDef("用量")
g.Totals.AddDef("金额")
g.Build()
dim f As New Filler
f.SourceTable = DataTables("清单")
f.SourceCols = "住院ID,类别,项目,规格,单位,单价,用量"
f.DataTable = DataTables("结算")
f.DataCols = "住院ID,类别,项目,规格,单位,单价,用量"
f.Distinct = False
f.Fill()
DataTables("结算").Save()
[此贴子已经被作者于2009-7-31 1:52:18编辑过]