设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 4406|回复: 10
打印 上一主题 下一主题

[模块/函数] 请老师给个自定义函数来判断字段是否是星期六,星期天

[复制链接]
跳转到指定楼层
1#
发表于 2015-2-5 15:46:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请老师给个自定义函数来判断字段是否是星期六,星期天
判断"交货日期"字段如果是星期六那么"开工日期"字段自动-1,"交货日期"字段如果是星期日那么"开工日期"字段自动-2,谢谢帮助

本帖被以下淘专辑推荐:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖1 订阅订阅
2#
发表于 2015-2-5 16:24:08 | 只看该作者
本帖最后由 roych 于 2015-2-5 16:32 编辑
  1. Function test(ByVal kgDate As Date, ByVal jhDate As Date) As Date
  2. Dim tempDate As Date
  3. If Weekday(kgDate, vbMonday) = 6 Or Weekday(kgDate, vbMonday) = 7 Then
  4.     test = jhDate - 1
  5. Else
  6.     test = jhDate
  7. End If
  8. End Function
复制代码
这样,应该算是比较简洁的了。kgDate:理论开工日期,jhDate:理论交货日期,返回值:实际交货日期。——前提是:必须在一周内完工。否则不会计算多少个周末的。具体请参考我之前帖子:http://www.office-cn.net/thread-119314-1-1.html
3#
 楼主| 发表于 2015-2-5 16:40:52 | 只看该作者
本帖最后由 yanwei82123300 于 2015-2-5 16:42 编辑
roych 发表于 2015-2-5 16:24
这样,应该算是比较简洁的了。kgDate:理论开工日期,jhDate:理论交货日期,返回值:实际交货 ...


roych老师谢谢帮助,请问星期六,星期天统统的放到当周的周五,您给的可以吗?谢谢,因为没有看到test = jhDate - 2
4#
发表于 2015-2-5 17:27:03 | 只看该作者
yanwei82123300 发表于 2015-2-5 16:40
roych老师谢谢帮助,请问星期六,星期天统统的放到当周的周五,您给的可以吗?谢谢,因为没有看到test  ...

没仔细看你的要求,把if部分拆一下就好了,=6时是周六,=7时是周日。
If Weekday(kgDate, vbMonday) = 6  Then
    test = jhDate - 1
ElseIf Or Weekday(kgDate, vbMonday) = 7 then
    test = jhDate - 1
Else
    test = jhDate
End If
如果不喜欢的话,也可以用
Select Case  Weekday(kgDate, vbMonday)
    case 6 :test = jhDate - 1
    case 7:test = jhDate - 2
   case else:test = jhDate
end select
   
5#
 楼主| 发表于 2015-2-6 07:41:32 | 只看该作者
roych 发表于 2015-2-5 17:27
没仔细看你的要求,把if部分拆一下就好了,=6时是周六,=7时是周日。
If Weekday(kgDate, vbMonday) = 6 ...

谢谢帮助!!
6#
 楼主| 发表于 2015-2-6 11:36:38 | 只看该作者
roych 发表于 2015-2-5 17:27
没仔细看你的要求,把if部分拆一下就好了,=6时是周六,=7时是周日。
If Weekday(kgDate, vbMonday) = 6 ...

roych 老师我在查询引用此函数报错,请问是什么原因?
交期:test(PROM_DLVRY)
谢谢
7#
发表于 2015-2-6 11:50:35 | 只看该作者
本帖最后由 roych 于 2015-2-6 11:53 编辑
yanwei82123300 发表于 2015-2-6 11:36
roych 老师我在查询引用此函数报错,请问是什么原因?
交期:test(PROM_DLVRY)
谢谢
1、确定日期没有空值吗?我这里没有处理空值的。——如果需要的话,再加上一句,大概是这样:
  1. If isNull(jhDate) Then
  2.                  Exit Function
  3. Else
  4.             If Weekday(kgDate, vbMonday) = 6 Or Then
  5.                              test = jhDate - 1
  6.             ElseIf Weekday(kgDate, vbMonday) = 7 Then
  7.                             test = jhDate - 2
  8.             Else
  9.                             test = jhDate
  10.              End If
  11. End If
复制代码
2、我的函数是按中文短日期格式来处理的:如果你的系统是En(UK)的话,或者系统托盘日期为长日期(包含星期几之类)的话,一定会出错。这时候,只需要修改系统日期显示格式即可。

8#
 楼主| 发表于 2015-2-6 12:30:20 | 只看该作者
roych 发表于 2015-2-6 11:50
1、确定日期没有空值吗?我这里没有处理空值的。——如果需要的话,再加上一句,大概是这样:
2、我的函数 ...

老师谢谢帮助,公司的日期托盘是不可动的被锁死,请帮助修改成英文日期,谢谢
9#
发表于 2015-2-6 12:48:56 | 只看该作者
本帖最后由 风中漫步 于 2015-2-6 12:49 编辑

Weekday不能识别uk日期?盲点啊!
用format(date,"yyyy-mm-dd")试试
10#
发表于 2015-2-6 13:29:51 | 只看该作者
yanwei82123300 发表于 2015-2-6 12:30
老师谢谢帮助,公司的日期托盘是不可动的被锁死,请帮助修改成英文日期,谢谢

美国的没问题的,英国的日期就麻烦,它们是按日/月/年来的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-3 17:27 , Processed in 0.126181 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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