以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 关于日期分组(已解决) (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=10550) |
||||
-- 作者:yyzlxc -- 发布时间:2011/6/11 12:35:00 -- 关于日期分组(已解决) 按年、月分组,因为每月25日为结转日,要求[月]列:月份不等于12,且日期大于25的月份为下个月,如何实现,恳请指教!
[此贴子已经被作者于2011-6-13 12:51:14编辑过]
|
||||
-- 作者:ybil -- 发布时间:2011/6/11 13:08:00 -- 参考: http://www.datasoft.com.cn/dispbbs.asp?boardid=2&id=1084&authorid=0&page=0&star=1
|
||||
-- 作者:yyzlxc -- 发布时间:2011/6/11 13:36:00 -- 谢谢 ybil 的指教,其他月份都没有问题,就是十二月份的26-31号还是按12月分组,如何实现,再次请教!! |
||||
-- 作者:yyzlxc -- 发布时间:2011/6/11 13:40:00 -- 还有,1月份的1,最好用01来表示,这样在筛选树上比较美观!! |
||||
-- 作者:ybil -- 发布时间:2011/6/11 14:55:00 -- IIF(Len(Convert(Convert(SUBSTRING(Convert([日期],\'System.String\'),6,IIF(SUBSTRING(Convert([日期],\'System.String\'),7,1) = \'-\',1,2)),\'System.Int16\')+IIF(SUBSTRING(Convert([日期],\'System.String\'),8,3) in (\'-26\',\'-27\',\'-28\',\'-29\',\'-30\',\'-31\',\'26\',\'27\',\'28\',\'29\',\'30\',\'31\') and SubString(Convert([日期],\'System.String\'),6,IIF(SubString(Convert([日期],\'System.String\'),7,1) = \'-\',1,2))<>\'12\',1,0),\'System.String\')) = 1,\'0\', \'\')+Convert(Convert(SUBSTRING(Convert([日期],\'System.String\'),6,IIF(SUBSTRING(Convert([日期],\'System.String\'),7,1) = \'-\',1,2)),\'System.Int16\')+IIF(SUBSTRING(Convert([日期],\'System.String\'),8,3) in (\'-26\',\'-27\',\'-28\',\'-29\',\'-30\',\'-31\',\'26\',\'27\',\'28\',\'29\',\'30\',\'31\') and SubString(Convert([日期],\'System.String\'),6,IIF(SubString(Convert([日期],\'System.String\'),7,1) = \'-\',1,2))<>\'12\',1,0),\'System.String\') |
||||
-- 作者:yyzlxc -- 发布时间:2011/6/11 15:25:00 -- 谢谢 ybil 的指教,表达式可以达到要求,需要消化一下,再次感谢 ybil !! |
||||
-- 作者:yyzlxc -- 发布时间:2011/6/11 20:17:00 -- 参考 ybil 版主的代码,对表达式进行简化如下:
iif(Convert(SUBSTRING(Convert([日期],\'System.String\'),6,2),\'System.Int16\')<>12,iif(Convert(SUBSTRING(Convert([日期],\'System.String\'),9,2),\'System.Int16\')>25,Convert(Convert(SUBSTRING(Convert([日期],\'System.String\'),6,2),\'System.Int16\')+1,\'System.String\'),SUBSTRING(Convert([日期],\'System.String\'),6,2)),SUBSTRING(Convert([日期],\'System.String\'),6,2))
这段代码已经基本符合要求,但是当日期大于25时,月份加1后,1-8月份只能显示一位数,而小于25时可以显示两位数。用字符格式化Format(X,"00") 出错,如何达到与 ybil 版主代码一样的效果,求指教!! |
||||
-- 作者:hhbb -- 发布时间:2011/6/11 21:14:00 -- iif(Convert(SUBSTRING(Convert([日期],\'System.String\'),6,2),\'System.Int16\') < 12, iif(Convert(SUBSTRING(Convert([日期],\'System.String\'),9,2),\'System.Int16\')>25, \'0\'+Convert(Convert(SUBSTRING(Convert([日期],\'System.String\'),6,2),\'System.Int16\')+1,\'System.String\') ,SUBSTRING(Convert([日期],\'System.String\'),6,2)), SUBSTRING(Convert([日期],\'System.String\'),6,2))
|
||||
-- 作者:yyzlxc -- 发布时间:2011/6/11 21:37:00 -- 谢谢 hhbb ,完全达到理想的效果,通过这段代码,学到不少的知识,非常感谢foxtable论坛的热心人,帮助我树立学习foxtabie的信心! |
||||
-- 作者:hhbb -- 发布时间:2011/6/11 22:35:00 -- 8樓有點問題,修正一下: IIF(SubString(Convert([日期],\'System.String\'),6,2) > \'09\' or SubString(Convert([日期],\'System.String\'),6,2) = \'09\' and SubString(Convert([日期],\'System.String\'),9,2) > \'26\',\'\',\'0\')+(IIF(SubString(Convert([日期],\'System.String\'),6,2) = \'12\' or SubString(Convert([日期],\'System.String\'),9,2) < \'26\',0,1)+Convert(SubString(Convert([日期],\'System.String\'),6,2),\'System.Int16\')) 或: IIF(IIF(SubString(Convert([日期],\'System.String\'),6,2) = \'12\' or SubString(Convert([日期],\'System.String\'),9,2) < \'26\',0,1)+Convert(SubString(Convert([日期],\'System.String\'),6,2),\'System.Int16\') > 9,\'\',\'0\')+(IIF(SubString(Convert([日期],\'System.String\'),6,2) = \'12\' or SubString(Convert([日期],\'System.String\'),9,2) < \'26\',0,1)+Convert(SubString(Convert([日期],\'System.String\'),6,2),\'System.Int16\'))
|