Access交流中心

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

再问显示和隐藏

虽虽TV  发表于:2013-01-05 18:13:54  
复制

 

Top
在水一方 发表于:2013-01-05 22:05:58

表达式1:iif([日期]="xxxx年x月x日","不详",[日期])                    ‘选择性显示完整日期

表达式2:Left(日期],5)                                                          '只显示年份

表达式3:iif(Left(日期],5)="xxxx年","不详",Left(日期],5))           ‘选择性显示年份

 

 



dbaseIIIer 发表于:2013-01-06 03:00: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数据,为了快速自己决定还是值得!

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


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


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




dbaseIIIer 发表于:2013-01-06 03:43:47

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

到底这些的转换是在 查询里面 运行? 还是在窗体报表里面运行?


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

然后窗体或者报表上

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

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

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

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

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


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

然后窗体或者报表上

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

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

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

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


C) 当然如果查询有 输出  [日期], [中文日期]: 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数据,为了快速自己决定还是值得!

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


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






虽虽TV 发表于:2013-01-07 21:10:16

感谢二位老师的回答,非常感谢,由于我年岁较高(五十有二了),又是农村人,相当于高中文化,所以,学这个很吃力。

为什么要这样做呢,我正在整理我们本家的族谱,我们这有先人留下的老谱,是1868年木刻版的。我想遵从先人,用电脑按原谱样式排列。数据是通过网上收集,我要将网上收集来的数据整理成册。由于网上填报的表已经设计好了(不能更改),所以,现在只能靠后期了。



dbaseIIIer 发表于:2013-01-08 03:29:34

虽虽兄,我跟你差不多大,你要做的这个事,我绝对支持!


不管有什么难题,尽管说,我一定教你完成,这是我们中国人的事!



虽虽TV 发表于:2013-01-08 06:45:21
dbaseIIIer   兄您好,起得这以早或者睡得这么晚呀!

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