Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共15 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

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

1楼
表之狂 发表于:2008/10/29 16:25:00
表中有日期列,月份列,想在月份列自动求日期列中的月份,要求每年的12月26算下一年的一月,每月26日开始,25日结束,谢谢
2楼
狐狸爸爸 发表于:2008/10/29 16:38:00
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目22.table

3楼
don 发表于: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楼
狐狸爸爸 发表于:2008/10/29 17:19:00

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

5楼
don 发表于: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))

6楼
don 发表于: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楼
表之狂 发表于:2008/10/29 18:22:00
老六,以上的解决方法都复杂,你还是尽快解决到像易表那样,不太复杂的功能用表达式解决不是更好吗。
8楼
狐狸爸爸 发表于: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编辑过]
9楼
don 发表于: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楼
狐狸爸爸 发表于: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 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03320 s, 4 queries.