Foxtable(狐表)用户栏目专家坐堂 → 简单问题(求月份)


  共有25241人关注过本帖树形打印复制链接

主题:简单问题(求月份)

帅哥哟,离线,有人找我吗?
表之狂
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:29 积分:505 威望:0 精华:0 注册:2008/9/18 19:32:00
简单问题(求月份)  发帖心情 Post By:2008/10/29 16:25:00 [只看该作者]

表中有日期列,月份列,想在月份列自动求日期列中的月份,要求每年的12月26算下一年的一月,每月26日开始,25日结束,谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2008/10/29 16:38:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目22.table


 回到顶部
帅哥哟,离线,有人找我吗?
don
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2008/10/29 17:13:00 [只看该作者]

表達式也可以,不過複雜點,下面是"D/M/YYYY"格式的:

IIF(Convert(SubString(Convert([日期],'System.String'),IIF(SubString(Convert([日期],'System.String'),1,2) Like '*/*',3,4),IIF(SubString(Convert([日期],'System.String'),IIF(SubString(Convert([日期],'System.String'),1,2) Like '*/*',3,4),2) Like '*/*',1,2)),'System.Byte')+Convert(IIF(SubString(Convert([日期],'System.String'),1,IIF(SubString(Convert([日期],'System.String'),1,2) Like '*/*',1,2)) > 25,1,0),'System.Byte') > 12,1,Convert(SubString(Convert([日期],'System.String'),IIF(SubString(Convert([日期],'System.String'),1,2) Like '*/*',3,4),IIF(SubString(Convert([日期],'System.String'),IIF(SubString(Convert([日期],'System.String'),1,2) Like '*/*',3,4),2) Like '*/*',1,2)),'System.Byte')+Convert(IIF(SubString(Convert([日期],'System.String'),1,IIF(SubString(Convert([日期],'System.String'),1,2) Like  '*/*',1,2)) > 25,1,0),'System.Byte'))

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2008/10/29 17:19:00 [只看该作者]

哈哈,还说不难,我看得头晕了。
你这个是香港日期吧,不适合大陆日期。


 回到顶部
帅哥哟,离线,有人找我吗?
don
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2008/10/29 17:34:00 [只看该作者]

以下是引用狐狸爸爸在2008-10-29 17:19:00的发言:

你这个是香港日期吧,不适合大陆日期。

适合大陆日期的,請測試:

IIF(Convert(IIF(SUBSTRING(Convert([日期],'System.String'),7,1) = '-',SUBSTRING(Convert([日期],'System.String'),6,1),SUBSTRING(Convert([日期],'System.String'),6,2)),'System.Byte')+IIF(Convert(SubString(Convert([日期],'System.String'),IIF(SubString(Convert([日期],'System.String'),8,2) Like '*-*',9,8),2),'System.Byte') > 25,1,0)>12,1,Convert(IIF(SUBSTRING(Convert([日期],'System.String'),7,1) = '-',SUBSTRING(Convert([日期],'System.String'),6,1),SUBSTRING(Convert([日期],'System.String'),6,2)),'System.Byte')+IIF(Convert(SubString(Convert([日期],'System.String'),IIF(SubString(Convert([日期],'System.String'),8,2) Like '*-*',9,8),2),'System.Byte') > 25,1,0))


 回到顶部
帅哥哟,离线,有人找我吗?
don
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2008/10/29 17:49:00 [只看该作者]

把下面表達式的"[T]"替換為"Convert([日期],'System.String')"就是5樓的:

IIF(Convert(IIF(SUBSTRING([T],7,1) = '-',   SUBSTRING([T],6,1),SUBSTRING([T],6,2)),'System.Byte')+IIF(Convert(SubString([T],IIF(SubString([T],8,2)  Like  '*-*',9,8),2),'System.Byte') > 25,1,0)>12,1,Convert(IIF(SUBSTRING([T],7,1) = '-',   SUBSTRING([T],6,1),SUBSTRING([T],6,2)),'System.Byte')+IIF(Convert(SubString([T],IIF(SubString([T],8,2)  Like  '*-*',9,8),2),'System.Byte') > 25,1,0))


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.table

[此贴子已经被作者于2008-10-29 17:55:14编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
表之狂
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:29 积分:505 威望:0 精华:0 注册:2008/9/18 19:32:00
  发帖心情 Post By:2008/10/29 18:22:00 [只看该作者]

老六,以上的解决方法都复杂,你还是尽快解决到像易表那样,不太复杂的功能用表达式解决不是更好吗。

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2008/10/29 19:12:00 [只看该作者]

以下是引用表之狂在2008-10-29 18:22:00的发言:
老六,以上的解决方法都复杂,你还是尽快解决到像易表那样,不太复杂的功能用表达式解决不是更好吗。


下面的代码,难道不比易表清晰易懂多了吗?

If e.DataCol.Name = "日期" Then
    If e.NewValue Is Nothing Then
        e.Datarow("月份") = Nothing 
    Else
        Dim d As Date = e.NewValue
        Dim m As Integer = d.Month
        If d.Day > 25 Then
            m = m + 1
        End If
        If m = 13 Then
           m = 1   
        End If
        e.DataRow("月份") = m
    End If
End If



 

[此贴子已经被作者于2008-10-29 19:12:39编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
don
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2008/10/29 20:56:00 [只看该作者]

以下是引用狐狸爸爸在2008-10-29 19:12:00的发言:


下面的代码,难道不比易表清晰易懂多了吗?

If e.DataCol.Name = "日期" Then
    If e.NewValue Is Nothing Then
        e.Datarow("月份") = Nothing 
    Else
        Dim d As Date = e.NewValue
        Dim m As Integer = d.Month
        If d.Day > 25 Then
            m = m + 1
        End If
        If m = 13 Then
           m = 1   
        End If
        e.DataRow("月份") = m
    End If
End If

嘻嘻,还是易表简单点:
Month(EDate([日期],Number(Day([日期])>25)))


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2008/10/29 21:22:00 [只看该作者]

呵呵,那我以简单点:

If e.DataCol.Name = "日期" Then
    Dim d As Date = e.NewValue
    e.DataRow("月份") = iif(e.NewValue Is Nothing,Nothing, iif(d.day<= 25,d.month,(d.month + 1) mod 12))
End If

不过我还是喜欢之前那种方式,虽然长一点,但是可读性强多了。
[此贴子已经被作者于2008-10-29 21:25:33编辑过]

 回到顶部
总数 15 1 2 下一页