以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]SQLGroupTableBuilder中关于用时的统计-9-14更新问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=90455) |
-- 作者:huangfanzi -- 发布时间:2016/9/13 11:08:00 -- [求助]SQLGroupTableBuilder中关于用时的统计-9-14更新问题 老师,在SQLGroupTableBuilder生成的表中,我要加个应作业分钟与作业率字段 应作业分钟的值应该为:窗口中二个日期相减的分钟数 作业率为 实际作业分钟 / 应作业分钟 请老师帮忙做下,谢谢!
[此贴子已经被作者于2016/9/14 10:58:37编辑过]
|
-- 作者:有点蓝 -- 发布时间:2016/9/13 11:35:00 -- Dim d1 As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker1") Dim d2 As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker2") Dim m As Integer If d1.Value IsNot Nothing AndAlso d2.Value IsNot Nothing Then m = (d2.Value - d1.Value).TotalMinutes End If Dim t As Table = e.Form.Controls("Table1").Table Dim b As New SQLGroupTableBuilder("统计表1","工序合并表") b.AddTable("工序合并表","牌号","密度表","牌号") \'添加统计表 b.Groups.AddDef("工序") \'根据订单表产品ID分组 b.Totals.AddExp("长度","重量 / 厚度 / 宽度 / 密度 * 1000") b.Totals.AddDef("作业分钟","实际作业分钟") t.datasource = b.BuildDataSource t.DataTable.DataCols.Add("应作业分钟",Gettype(Integer)) t.DataTable.ReplaceFor("应作业分钟",m) t.DataTable.DataCols.Add("作业率",Gettype(Double),"实际作业分钟/应作业分钟") t.DataTable.DataCols("作业率").SetFormat("00%")
|
-- 作者:huangfanzi -- 发布时间:2016/9/14 10:58:00 -- 老师,现在遇到二个问题: 1、项目文件中存在这个情况,工序合并表中有个牌号,但密度表中没有录入这个牌号对应的密度,造成统计错误,如何提示用户这种情况以便更新密度表 2、作业米数是根据牌号的物理数据公式算出来的,但存在一种情况,这个牌号的物料在机组上由于某种原因上机后没有生产,直接又下机了,但要记录在案,在工序合并表中的记录体现为这条生产记录的作业分钟数为零,如何加入判断,判断条件为当作业分钟数为0时,作业米数也为0,否则作业米数就用公式求得。 Dim b As New SQLGroupTableBuilder("统计表1","工序合并表") b.C b.AddTable("工序合并表","牌号","密度表","牌号") \'添加统计表 b.Groups.AddDef("工序","机组") \'根据订单表产品ID分组 b.Filter = ft b.Totals.AddExp("作业米数","重量 / 厚度 / 宽度 / 密度 * 1000") b.Totals.AddDef("作业分钟数","实际作业分钟") t.datasource = b.BuildDataSource |
-- 作者:有点蓝 -- 发布时间:2016/9/14 11:23:00 -- Dim count As Integer = DataTables("工序合并表").SQLCompute("count(牌号)","牌号 not in (se lect 牌号 from {密度表})") \'se lect的空格去掉 If count > 0 Then msgbox("密度表的牌号不完整") End If Dim d1 As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker1") Dim d2 As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker2") Dim m As Integer If d1.Value IsNot Nothing AndAlso d2.Value IsNot Nothing Then m = (d2.Value - d1.Value).TotalMinutes End If Dim t As Table = e.Form.Controls("Table1").Table Dim b As New SQLGroupTableBuilder("统计表1","工序合并表") b.AddTable("工序合并表","牌号","密度表","牌号") \'添加统计表 b.Groups.AddDef("工序") \'根据订单表产品ID分组 b.Totals.AddExp("长度","iif(作业分钟=0,0,重量 / 厚度 / 宽度 / 密度 * 1000)") b.Totals.AddDef("作业分钟","实际作业分钟") t.datasource = b.BuildDataSource t.DataTable.DataCols.Add("应作业分钟",Gettype(Integer)) t.DataTable.ReplaceFor("应作业分钟",m) t.DataTable.DataCols.Add("作业率",Gettype(Double),"实际作业分钟/应作业分钟") t.DataTable.DataCols("作业率").SetFormat("00%")
|
-- 作者:huangfanzi -- 发布时间:2016/9/14 11:41:00 -- b.Totals.AddExp("长度","iif(作业分钟=0,0,重量 / 厚度 / 宽度 / 密度 * 1000)") 这句提示 “=” 附近有语法错误, |
-- 作者:有点蓝 -- 发布时间:2016/9/14 14:33:00 -- 测试没有问题,sql数据库改为 b.Totals.AddExp("长度","(Case when 作业分钟 = 0 then 0 else 重量 / 厚度 / 宽度 / 密度 * 1000 end)")
|