设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

123下一页
返回列表 发新帖
查看: 4203|回复: 21
打印 上一主题 下一主题

[模块/函数] 公司的工厂日历的模块代码,进行修改规整

[复制链接]
跳转到指定楼层
1#
发表于 2010-10-8 16:32:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面是我公司的工厂日历的模块代码:它是有规律的每一个P几都是开始日期和结束日期减
请问有没有办法写一段万年历是的代码,免去每次都需要更改里面的日期的代码。
谢谢
Fisher2010年工厂日历
Function GetP(a As Date) As String

    Dim Re As String
    If a >= CDate("2009-10-1") And a <= CDate("2009-10-23") Then
         Re = "2010_P1"
    ElseIf a >= CDate("2009-10-24") And a <= CDate("2009-11-20") Then
        Re = "2010_P2"
    ElseIf a >= CDate("2009-11-21") And a <= CDate("2009-12-25") Then
        Re = "2010_P3"
    ElseIf a >= CDate("2009-12-26") And a <= CDate("2010-01-22") Then
        Re = "2010_P4"
    ElseIf a >= CDate("2010-01-23") And a <= CDate("2010-02-19") Then
        Re = "2010_P5"
    ElseIf a >= CDate("2010-02-20") And a <= CDate("2010-03-26") Then
        Re = "2010_P6"
    ElseIf a >= CDate("2010-03-27") And a <= CDate("2010-04-23") Then
        Re = "2010_P7"
    ElseIf a >= CDate("2010-04-24") And a <= CDate("2010-05-21") Then
        Re = "2010_P8"
    ElseIf a >= CDate("2010-05-22") And a <= CDate("2010-06-25") Then
        Re = "2010_P9"
    ElseIf a >= CDate("2010-06-26") And a <= CDate("2010-07-23") Then
        Re = "2010_P10"
    ElseIf a >= CDate("2010-07-24") And a <= CDate("2010-08-20") Then
        Re = "2010_P11"
    ElseIf a >= CDate("2010-08-21") And a <= CDate("2010-09-30") Then
        Re = "2010_P12"
    Else
    End If
   
    GetP = Re

End Function


Fisher2011年工厂日历

Function GetP(A As Date) As String

    Dim Re As String
    If A >= CDate("2010-10-1") And A <= CDate("2010-10-22") Then
         Re = "2011_P1"
    ElseIf A >= CDate("2010-10-23") And A <= CDate("2010-11-19") Then
        Re = "2011_P2"
    ElseIf A >= CDate("2010-11-20") And A <= CDate("2010-12-24") Then
        Re = "2011_P3"
    ElseIf A >= CDate("2010-12-25") And A <= CDate("2011-01-21") Then
        Re = "2011_P4"
    ElseIf A >= CDate("2011-01-22") And A <= CDate("2011-02-18") Then
        Re = "2011_P5"
    ElseIf A >= CDate("2011-02-19") And A <= CDate("2011-03-25") Then
        Re = "2011_P6"
    ElseIf A >= CDate("2011-03-26") And A <= CDate("2011-04-22") Then
        Re = "2011_P7"
    ElseIf A >= CDate("2011-04-23") And A <= CDate("2011-05-20") Then
        Re = "2011_P8"
    ElseIf A >= CDate("2011-05-21") And A <= CDate("2011-06-24") Then
        Re = "2011_P9"
    ElseIf A >= CDate("2011-06-25") And A <= CDate("2011-07-22") Then
        Re = "2011_P10"
    ElseIf A >= CDate("2011-07-23") And A <= CDate("2011-08-19") Then
        Re = "2011_P11"
    ElseIf A >= CDate("2011-08-20") And A <= CDate("2011-09-30") Then
        Re = "2011_P12"
    Else
    End If
   
    GetP = Re

End Function

Fisher2012年工厂日历

Function GetP(A As Date) As String

    Dim Re As String
    If A >= CDate("2011-10-1") And A <= CDate("2011-10-21") Then
         Re = "2012_P1"
    ElseIf A >= CDate("2011-10-22") And A <= CDate("2011-11-18") Then
        Re = "2012_P2"
    ElseIf A >= CDate("2011-11-19") And A <= CDate("2011-12-23") Then
        Re = "2012_P3"
    ElseIf A >= CDate("2010-12-24") And A <= CDate("2012-01-20") Then
        Re = "2012_P4"
    ElseIf A >= CDate("2012-01-21") And A <= CDate("2012-02-17") Then
        Re = "2012_P5"
    ElseIf A >= CDate("2012-02-18") And A <= CDate("2012-03-24") Then
        Re = "2012_P6"
    ElseIf A >= CDate("2012-03-25") And A <= CDate("2012-04-21") Then
        Re = "2012_P7"
    ElseIf A >= CDate("2012-04-22") And A <= CDate("2012-05-19") Then
        Re = "2012_P8"
    ElseIf A >= CDate("2012-05-20") And A <= CDate("2012-06-23") Then
        Re = "2012_P9"
    ElseIf A >= CDate("2012-06-24") And A <= CDate("2012-07-21") Then
        Re = "2012_P10"
    ElseIf A >= CDate("2012-07-22") And A <= CDate("2012-08-18") Then
        Re = "2012_P11"
    ElseIf A >= CDate("2012-08-19") And A <= CDate("2012-09-30") Then
        Re = "2012_P12"
    Else
    End If
   
    GetP = Re

End Function
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2010-10-8 17:42:20 | 只看该作者
谢谢分享
3#
发表于 2010-10-8 20:01:46 | 只看该作者
本帖最后由 todaynew 于 2010-10-8 20:03 编辑
下面是我公司的工厂日历的模块代码:它是有规律的每一个P几都是开始日期和结束日期减
请问有没有办法写一段 ...
yanwei82123300 发表于 2010-10-8 16:32

2009-10-23\2010-10-22\2011-10-21 这三个日期是个什么道理呢?
看不出有什么规律,是不是拍脑袋出来的日期。




点击这里给我发消息

4#
发表于 2010-10-8 23:09:36 | 只看该作者
2009-10-23\2010-10-22\2011-10-21 这三个日期是个什么道理呢?
看不出有什么规律,是不是拍脑袋出来的日 ...
todaynew 发表于 2010-10-8 20:01

同感

5#
 楼主| 发表于 2010-10-9 08:06:11 | 只看该作者
我公司是以每年10-1日为财政年的起点下一年的9-30日为财政年末,在这一年中要根据每月的关帐日划分为12个财政月即:P1、P2------P12
见图片

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
6#
发表于 2010-10-9 18:25:17 | 只看该作者
看了2010年和2011年的代码,是不是这样:
每年的10月1日为财政年度的起点,9月30日为财政年度的终点;
这个年度分成12账期,每个账期的截止日期必须是当月的自然月度还有大于等于5天、小于等于12天的那个星期五?那几天是用来集中处理特定账期事物的。
如果是这样的话,2012年的后面6个账期就不对了

7#
发表于 2010-10-9 18:56:54 | 只看该作者
你应该用文字描述你的时间分段规则,然后才有解决问题的可能。
年度为 :xxxx年-10月-1日~xxxx年-9月-30日
月度的不能由老板任意指定吧?总得有一个规定,例如“每个自然月的最后一个周五”,或...
8#
发表于 2010-10-9 21:30:01 | 只看该作者
我公司是以每年10-1日为财政年的起点下一年的9-30日为财政年末,在这一年中要根据每月的关帐日划分为12个财 ...
yanwei82123300 发表于 2010-10-9 08:06

还是没怎么看懂,不知道是不是这么个意思:




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
9#
 楼主| 发表于 2010-10-10 11:57:27 | 只看该作者
todaynew老师首先谢谢帮助:但是请帮助完善一下您制作的例子,有点小问题:例如:2010年-1月份(开始日期为:2009-10-01截止日期为2009-10-23) 2月份为:2009-10-24-----2009-11-20);
2011年-1月份为(2010-10-01----2010-10-22)2月份为(2010-10-23----2010-11-19)
再次感谢大家的帮助工厂日历是由财务部制定的(基本上都是星期五)
10#
发表于 2010-10-10 19:07:05 | 只看该作者
todaynew老师首先谢谢帮助:但是请帮助完善一下您制作的例子,有点小问题:例如:2010年-1月份(开始日期为 ...
yanwei82123300 发表于 2010-10-10 11:57

是月末的哪个星期五?给你三个选择:
1、最后一个星期五;
2、倒数第二个星期五;
3、最近接20日的星期五。


您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-17 00:52 , Processed in 0.084842 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表