设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

1234下一页
返回列表 发新帖
查看: 3855|回复: 32
打印 上一主题 下一主题

[与其它组件] [求助]日期计算问题,又有新的问题高手请解答,谢谢

[复制链接]
跳转到指定楼层
1#
发表于 2005-9-14 07:03:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有两字段:A B 分别是1981年5月23日  2005年3月5日 求相差几年几月天数可忽略

[此贴子已经被作者于2005-9-22 21:58:17编辑过]

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2005-9-14 07:36:00 | 只看该作者
我顶
3#
发表于 2005-9-15 05:59:00 | 只看该作者
以下是引用focke在2005-9-13 23:03:00的发言:

两字段:A B 分别是1981年5月23日  2005年3月5日 求相差几年几月天数可忽略



估计你想做到如[23年零10个月]这样的效果,如果是这样的话,思路应该先算出多少个月,方法是,然后再除12看结果与余数

    Dim allMonths As Integer   '总共多少个月

    Dim Y As Integer, M As Integer

    allMonths = DateDiff("m", #5/23/1981#, #3/5/2005#)

    Y = Int(allMonths / 12)

    M = allMonths Mod 12

    If M > 0 Then

        Debug.Print Y & "年零" & M & "个月"

    Else

        Debug.Print Y & "年整"

    End If

本帖子中包含更多资源

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

x
4#
发表于 2005-9-15 22:17:00 | 只看该作者
学习了
5#
 楼主| 发表于 2005-9-16 02:39:00 | 只看该作者
这个程序可直接写入,查询的字段里吗
6#
发表于 2005-9-16 04:47:00 | 只看该作者
奉献一个学习来的,可以根据您的实际修改加入SQL

a.记账日期-(SELECT max([a]![记账日期]) FROM a WHERE  (a.姓名编码=a_1.姓名编码 and a.a编码<a_1.a编码)) AS 天数[em02]

[此贴子已经被作者于2005-9-15 20:47:54编辑过]

7#
 楼主| 发表于 2005-9-17 09:58:00 | 只看该作者
这个程序可直接写入,查询的字段里吗
8#
发表于 2005-9-17 16:44:00 | 只看该作者
在标准模块中写如下代码:

------------------------------

Option Compare Database

Option Explicit

Function months_count(allMonths As Integer, Y As Integer, M As Integer) As String

   ' Dim allMonths As Integer   '总共多少个月

   ' Dim Y As Integer, M As Integer

   ' allMonths = DateDiff("m", #5/23/1981#, #3/5/2005#)

    Y = Int(allMonths / 12) '在查询中调用的时候,根据字段名称作了相应更改 y=[时间差]/12

    M = allMonths Mod 12 '在查询中调用的时候,根据字段名称作了相应更改 m=[时间差] mod 12

    If M > 0 Then

        Debug.Print Y & "年零" & M & "个月"

        months_count = Y & "年零" & M & "个月"

    Else

        Debug.Print Y & "年整"

        months_count = Y & "年零" & M & "个月"

    End If

End Function

----------------------------------------------------

在查询窗格中截图如下:



----------------------------------------------

上传我根据huanghai 老师代码做出的例子:



-------------------------------------------

另外,给出 datediff 函数的帮助:

DateDiff 函数示例

以下示例使用了 DateDiff 函数分别计算某年的第一周和今天之间的周数,及从一九九五年二月一日至今天的天数。

Debug.Print DateDiff("ww", "1-1", Now())

Debug.Print DateDiff("y", #1-Feb-1995#, Now())

下个示例显示出如何在查询表达式中使用 DateDiff 函数。假设有一个包含“订购日期”字段及“发货日

期”字段的“订单”表。可以在查询中创建一个计算字段显示在每个订单的订单日期及发货日期之间的逝去时间。在“查询”窗口中,通过添加“订单”表并将“订单ID”字段拖到查询设计网格中创建了一个新查询。在空的“字段”单元格中,输入下列表达式,创建一个计算字段。

DaysElapsed: DateDiff("y", [OrderDate], [ShippedDate])

-----------------------------------



[此贴子已经被作者于2005-9-17 8:47:55编辑过]

本帖子中包含更多资源

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

x
9#
 楼主| 发表于 2005-9-18 02:13:00 | 只看该作者
不用SQL语言,在查询中用一个字段可以完成吗
10#
发表于 2005-9-18 03:23:00 | 只看该作者
以下是引用focke在2005-9-17 18:13:00的发言:

不用SQL语言,在查询中用一个字段可以完成吗

我上传的附件中,就是使用一个字段完成的,调用标准模块中的代码的呀。



不知道,附件你看了没有。

---------------------------------

access的内置函数解决不了你在顶楼提出的问题,所以 huanghai 老师写了自定义的过程,我只是调用了一下,做了实例给你。

------------------------



[此贴子已经被作者于2005-9-17 19:24:36编辑过]

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

本版积分规则

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

GMT+8, 2024-5-16 07:22 , Processed in 0.107887 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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