以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]不同的数据源,数据类型不同(已解决) (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=79574) |
-- 作者:yyzlxc -- 发布时间:2016/1/5 11:10:00 -- [求助]不同的数据源,数据类型不同(已解决) 一个案例:通过 Fill ,从不同的数据源生成 “效率” 表,其数据类型不同,内部表和Access数据源生成的表,“定时”、“实时”、“效率”三列均为双精度小数,而SQL Server数据源生成的表,上述三列却均为整数,显然不符要求。 现有的项目数据源为SQL Server,如何至少让效率列是数据类型为双精度小数,请各位老师指教,谢谢! If nd1.Checked = True Then \'SQL Server DataTables("效率").Fill("Se lect 序号 as 节拍,车位 as 工位,sum(定额秒时) as 定时,"sum(实际秒时) As 实时,sum(定额秒时) / sum(实际秒时) * 100 As 效率 From {扎包数据2} WHERE 日期 = \'" & rq & "\' and 车位 = \'"& cw &"\' GROUP BY 序号,车位","MES",True) ElseIf nd2.Checked = True Then \'内部表 DataTables("效率").Fill("Se lect 序号 as 节拍,车位 as 工位,sum(定额秒时) as 定时,sum(实际秒时) as 实时,sum(定额秒时) / sum(实际秒时) * 100 as 效率 From {扎包数据} WHERE 日期 = #" & rq & "# and 车位 = \'"& cw &"\' GROUP BY 序号,车位",True) ElseIf nd3.Checked = True Then \'Access DataTables("效率").Fill("Se lect 序号 as 节拍,车位 as 工位,sum(定额秒时) as 定时,sum(实际秒时) as 实时,sum(定额秒时) / sum(实际秒时) * 100 as 效率 From {扎包数据3} WHERE 日期 = #" & rq & "# and 车位 = \'"& cw &"\' GROUP BY 序号,车位","MM",True) End If Tables("效率").DataTable.DataCols("效率").SetFormat("0.00") Tables("效率").AutoSizeCols() [此贴子已经被作者于2016/1/5 12:35:07编辑过]
|
-- 作者:大红袍 -- 发布时间:2016/1/5 11:16:00 -- 试试这样
DataTables("效率").Fill("Se lect 序号 as 节拍,车位 as 工位,sum(定额秒时) as 定时,sum(实际秒时) As 实时, Convert(Float, sum(定额秒时)) / sum(实际秒时) As 效率 From {扎包数据2} WHERE 日期 = \'" & rq & "\' and 车位 = \'"& cw &"\' GROUP BY 序号,车位","MES",True) |
-- 作者:yyzlxc -- 发布时间:2016/1/5 11:21:00 -- 谢谢大红袍老师的指教,好像不行。 |
-- 作者:大红袍 -- 发布时间:2016/1/5 11:25:00 -- 不可能
Convert(Float, sum(定额秒时)) / sum(实际秒时) As 效率 |
-- 作者:yyzlxc -- 发布时间:2016/1/5 11:35:00 -- If nd1.Checked = True Then \' DataTables("效率").Fill("Se lect 序号 as 节拍,车位 as 工位,sum(定额秒时) as 定时,sum(实际秒时) As 实时, Convert(Float, sum(定额秒时)) / sum(实际秒时) As 效率 From {扎包数据2} WHERE 日期 = \'" & rq & "\' and 车位 = \'"& cw &"\' GROUP BY 序号,车位","MES",True) ElseIf nd2.Checked = True Then \' DataTables("效率").Fill("Se lect 序号 as 节拍,车位 as 工位,sum(定额秒时) as 定时,sum(实际秒时) as 实时,sum(定额秒时) / sum(实际秒时) * 100 as 效率 From {扎包数据} WHERE 日期 >= #" & qc & "# And 日期 <= #" & qm & "# and 车位 = \'"& cw &"\' GROUP BY 序号,车位",True) ElseIf nd3.Checked = True Then \' DataTables("效率").Fill("Se lect 序号 as 节拍,车位 as 工位,sum(定额秒时) as 定时,sum(实际秒时) as 实时,sum(定额秒时) / sum(实际秒时) * 100 as 效率 From {扎包数据3} WHERE 日期 >= #" & qc & "# And 日期 <= #" & qm & "# and 车位 = \'"& cw &"\' GROUP BY 序号,车位","MM",True) End If Tables("效率").DataTable.DataCols("效率").SetFormat("0.00") Tables("效率").AutoSizeCols() 效率表是 DataTableBuilder 生成的临时表,是否有关系? Dim dtb As New DataTableBuilder("效率") dtb.Build() |
-- 作者:大红袍 -- 发布时间:2016/1/5 11:51:00 -- 拷贝sql语句出来测试,看报什么错
http://www.foxtable.com/help/topics/1484.htm
|
-- 作者:yyzlxc -- 发布时间:2016/1/5 12:10:00 -- .NET Framework 版本:2.0.50727.8670 Foxtable 版本:2015.11.11.1 错误所在事件: 详细错误信息: 关键字 \'As\' 附近有语法错误。
|
-- 作者:yyzlxc -- 发布时间:2016/1/5 12:35:00 -- 问题找到,Se lect中间空格没有去掉,达到预期效果。谢谢大红袍老师的耐心指教,再次表示衷心感谢。 |
-- 作者:大红袍 -- 发布时间:2016/1/5 12:38:00 -- 逐个删除,看哪里出问题,转换函数convert是没问题的。 |