我想在在sql语句中设置显示格式后,以ado记录集传到本地,再放到表格控件(mshflexgrid)中显示,
这样直接绑定数据源就可以了,不用再单独设置表格的显示格式.
关键是如何通过sql语句设置比较方便呀?
1.对于数值,如果为0,则不显示,或为null
2.对于数值,指定显示的小数位数.不足补0.
还有一个问题我相问,如果只想显示内容,是不是可以把类型转成字符型呀?
比如数值型的字段,在sql语句中转换成字符型,再通过ado记录集传到本地,放在表格控件中显示.
5 个解决方案
#1
1\nullif()函数可以满足你的要求.nullif(data,0)
2\好象要在字段中设定小数位数的
2\好象要在字段中设定小数位数的
#2
declare @t int
set @t=0
select nullif(@t,0)
declare @a dec(8,2)
set @a=1
select @a
set @t=0
select nullif(@t,0)
declare @a dec(8,2)
set @a=1
select @a
#3
第一问:
case when 字段名=0 then '' end
第二问:
SELECT CAST(1.0 AS DECIMAL(10, 3))
case when 字段名=0 then '' end
第二问:
SELECT CAST(1.0 AS DECIMAL(10, 3))
#4
转化用cast或者convert
declare @b dec(8,2)
set @b=1
select convert(varchar,@b)
declare @c dec(8,2)
set @c=1
select cast(@c as varchar)
declare @b dec(8,2)
set @b=1
select convert(varchar,@b)
declare @c dec(8,2)
set @c=1
select cast(@c as varchar)
#5
建議用fpSpread控件﹐其功能遠比mshflexgrid的強大
最好在前台處理﹐以減少SQL服務器的開銷
最好在前台處理﹐以減少SQL服務器的開銷
#1
1\nullif()函数可以满足你的要求.nullif(data,0)
2\好象要在字段中设定小数位数的
2\好象要在字段中设定小数位数的
#2
declare @t int
set @t=0
select nullif(@t,0)
declare @a dec(8,2)
set @a=1
select @a
set @t=0
select nullif(@t,0)
declare @a dec(8,2)
set @a=1
select @a
#3
第一问:
case when 字段名=0 then '' end
第二问:
SELECT CAST(1.0 AS DECIMAL(10, 3))
case when 字段名=0 then '' end
第二问:
SELECT CAST(1.0 AS DECIMAL(10, 3))
#4
转化用cast或者convert
declare @b dec(8,2)
set @b=1
select convert(varchar,@b)
declare @c dec(8,2)
set @c=1
select cast(@c as varchar)
declare @b dec(8,2)
set @b=1
select convert(varchar,@b)
declare @c dec(8,2)
set @c=1
select cast(@c as varchar)
#5
建議用fpSpread控件﹐其功能遠比mshflexgrid的強大
最好在前台處理﹐以減少SQL服務器的開銷
最好在前台處理﹐以減少SQL服務器的開銷