Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

显示或隐藏某些特定的值

虽虽TV  发表于:2013-01-04 22:13:43  
复制

老师帮忙:

一、表中有日期(年月日)字段,如何通过查询达到某年某月某日不显示或显示为其它字符?比如凡是1900/1/1的这一日期均不显示或显示为其它字符;

二、表中有日期(年月日)字段,如何通过查询达到只显示年份而不显示月日,比如1986/1/8,只显示1986年

 

点击下载此附件

 

Top
学习者 发表于:2013-01-04 23:45:41

用SQL执行一遍,可以改格式,但不可以隐藏(在表中),如果要隐藏,可以考虑现实在其它容器中。



dbaseIIIer 发表于:2013-01-05 03:45:08

怎么不可以隐藏?


一句话,满足你3个愿望:

年: IIf([日期]=#1900/1/1#,'不详',Year([日期]))




dbaseIIIer 发表于:2013-01-05 05:56:10

另外我给你一个转换更快 日期的方法:

http://www.accessoft.com/article-show.asp?id=7863



虽虽TV 发表于:2013-01-05 09:31:20
非常感谢 dbaseIIIer 老师,您的提速意义我很理解,值得称赞,可是我不会弄,你能不能做到我的附件里?

虽虽TV 发表于:2013-01-05 10:00:23

是不我没表达清楚,我的意思是:需要不显示某特定日期时,就不显示这特定日期,其它日期正常显示年月日;

需要只显示年而不显示月日时,只显示年份.

并不是同时满足两个条件!



虽虽TV 发表于:2013-01-05 12:13:29


dbaseIIIer 发表于:2013-01-06 02:35:07

其实原来我是想你自己决定到底 

这些的转换是在 查询里面 ? 还是在窗体里面的?


譬如:查询里面不做任何的转换 就输出 [日期],

然后窗体或者报表上

1. 控件 显示 日期  :  =CDateTime([日期])

2. 控件  1: =IIF( [日期]=#1900/1/1#,"不详", CDateTime([日期]))

3. 控件  2: =CYear( [日期])   <- 另外做个简短版的函数吧

4. 控件  3: =IIF( [日期]=#1900/1/1#,"不详", CYear([日期]))

其实根本不需要在查询里面做任何转换的!


当然如果查询有 输出  [日期], [中文日期]: CDataTime([日期])


然后窗体或者报表上

1. 控件 显示 日期  :  =[中文日期]

2. 控件  1: =IIF( [日期]=#1900/1/1#,"不详",[中文日期])

3. 控件  2: =Left( [中文日期],5)   <- 另外做个简短版的函数吧

4. 控件  3: =IIF( [日期]=#1900/1/1#,"不详", Left( [中文日期],5))


当然如果查询有 输出  [日期], [中文日期]: CDataTime([日期]), [中文年份]: CYear([日期])

然后窗体或者报表上

1. 控件 显示 日期  :  =[中文日期]

2. 控件  1: =IIF( [日期]=#1900/1/1#,"不详",[中文日期])

3. 控件  2: = [中文年份]   <- 另外做个简短版的函数吧

4. 控件  3: =IIF( [日期]=#1900/1/1#,"不详",  [中文年份])



至于哪个设计好,就要看你 预算哪个产生最低运算时间的几率了!这个我帮不了你!


如果你数量特别庞大的话,我甚至建议你建立三个表

中文年:放一万年记录够用了吧

中文月:12条记录

中文日:31条记录

select  日期, 中文年.年份, 中文月.月份, 中文日.日数 

from [数据]

left join 中文年 on year([数据].[日期] = 中文年.id

left join 中文 on month([数据].[日期] = 中文.id

left join 中文on day([数据].[日期] = 中文.id


甚至把两千年历史+未来30年 所有转换好日期的数据表,才70万条记录,16G数据,为了快速自己决定还是值得!

这一招是 爱恩斯坦的相对论里面,“乾坤大挪移” 中其中一式 “空间换取时间”!


不过还有一招要告诉你的 也是来自  爱恩斯坦的相对论有应用到的蝴蝶效应,大西洋的蝴蝶们拍的翅膀,影响着太平洋龙卷风的方向;意思是 你可以在用户录入数据的时候就转换好这个中文日期,这是借用众多操作用户的电脑处理能力,分担了以后服务器的压力,然后所有的窗体、报表 就提取显示,一点都不拖慢!


至于你那些 不详,不显示,只显示年份之类的,应该是 “应用程序” 的范围,至少会跟着业务流程可能变异的,别放在查询里面了








总记录:7篇  页次:1/1 9 1 :