以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]不同的数据源,数据类型不同(已解决)  (http://foxtable.com/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()



图片点击可在新窗口打开查看此主题相关图片如下:表1.png
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:表2.png
图片点击可在新窗口打开查看


[此贴子已经被作者于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
--  
谢谢大红袍老师的指教,好像不行。


图片点击可在新窗口打开查看此主题相关图片如下:表3.png
图片点击可在新窗口打开查看


--  作者:大红袍
--  发布时间: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是没问题的。