Foxtable(狐表)用户栏目专家坐堂 → 导入 word 公式


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

主题:导入 word 公式

帅哥哟,离线,有人找我吗?
大雪山
  41楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:290 积分:2931 威望:0 精华:0 注册:2008/9/29 10:13:00
  发帖心情 Post By:2018/3/7 13:00:00 [只看该作者]

39楼的公式日期改成按小时取数,每小时间只取五个数 11:00   1101 1102 ..... 12:00 1201 1202....如何改?

 

[此贴子已经被作者于2018/3/7 18:38:58编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/7 15:10:00 [只看该作者]

以下是引用大雪山在2018/3/7 13:00:00的发言:

39楼的公式日期改成按小时取数,每小时间只取五个数 11:00   1101 1102 ..... 12:00 1101 1102....如何改?

 

 

没看懂你表达的意思,格式日期列,参考

 

http://www.foxtable.com/webhelp/scr/0362.htm

 

具体问题,请用实例说明。


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


加好友 发短信
等级:童狐 帖子:290 积分:2931 威望:0 精华:0 注册:2008/9/29 10:13:00
  发帖心情 Post By:2018/3/7 18:45:00 [只看该作者]

39楼的公式日期改成按小时取数,每小时只能按排取五个数 11:00   1101 1102 ..... 1105     12:00 1201 1202...1205 .如何改?
此主题相关图片如下:mta05b8vb3_iitw%sndu.png
按此在新窗口浏览图片
[此贴子已经被作者于2018/3/7 18:53:36编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/7 21:59:00 [只看该作者]

DataColChanged事件,写代码

 

If e.DataCol.Name = "日期" Then
    If e.DataRow.IsNull("日期") Then
        e.DataRow("编号") = Nothing
    Else
        Dim d As Date = e.DataRow("日期")
        d = new Date(d.year, d.month, d.day, d.hour, 0, 0)
        Dim drs = e.DataTable.Select("日期 >= #" & d & "# and 日期 < #" & d.AddHours(1) & "#", "_Identify")
        If drs.count > 5 Then
            msgbox("不能超过5个编号")
        Else
            For i As Integer = 0 To drs.count-1
                drs(i)("编号") = format(d, "HH") & Format(i+1,"00")
            Next
        End  If
    End If
End If


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


加好友 发短信
等级:童狐 帖子:290 积分:2931 威望:0 精华:0 注册:2008/9/29 10:13:00
  发帖心情 Post By:2018/3/8 7:41:00 [只看该作者]

这公式日期需改成 2018010207-001    如2018(年)+日期+时间(取当前时间小时前两位)-编号(不能超过5个编号)

If e.DataCol.Name = "日期" Then
    If e.DataRow.IsNull("日期") Then
        e.DataRow("编号") = Nothing
    Else
        Dim bh As String = Format(e.DataRow("日期"),"yyyyMMdd") '取得编号的8位前缀
        If e.DataRow("编号").StartsWith(bh) = False '如果编号的前8位不符
            Dim  max As String
            Dim  idx As  Integer
            max = e.DataTable.Compute("Max(编号)","日期 = #" & e.DataRow("日期") & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该天的最大编号
            If  max > "" Then '如果存在最大编号
                idx = CInt(max.Substring(9,3)) + 1  '获得最大编号的后三位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End  If
            e.DataRow("编号") = bh & "-" & Format(idx,"000")
        End If
    End  If
End  If


 


图片点击可在新窗口打开查看此主题相关图片如下:n$f`gx6}y~vbx~`djsrovt.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/8 9:26:00 [只看该作者]

If e.DataCol.Name = "日期" Then
    If e.DataRow.IsNull("日期") Then
        e.DataRow("编号") = Nothing
    Else
        Dim d As Date = e.DataRow("日期")
        d = new Date(d.year, d.month, d.day, d.hour, 0, 0)
        Dim drs = e.DataTable.Select("日期 >= #" & d & "# and 日期 < #" & d.AddHours(1) & "#", "_Identify")
        If drs.count > 5 Then
            msgbox("不能超过5个编号")
        Else
            For i As Integer = 0 To drs.count-1
                drs(i)("编号") = format(d, "yyyyMMddHH") & Format(i+1,"00")
            Next
        End  If
    End If
End If


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


加好友 发短信
等级:童狐 帖子:290 积分:2931 威望:0 精华:0 注册:2008/9/29 10:13:00
  发帖心情 Post By:2018/3/8 10:15:00 [只看该作者]

46楼的公式没有加入当前时间参数,我的意思是实现每天每小时只能放5 个号功能
图片点击可在新窗口打开查看此主题相关图片如下:_f{(z@n@i3jx{3lc05o4mo.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2018/3/8 10:16:14编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/8 10:32:00 [只看该作者]

1、代码不用改;

 

2、请把你的日期列改成DateLongTime的格式 http://www.foxtable.com/webhelp/scr/0044.htm

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/8 10:32:00 [只看该作者]

再不会做,就请上传具体实例说明。

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


加好友 发短信
等级:童狐 帖子:290 积分:2931 威望:0 精华:0 注册:2008/9/29 10:13:00
  发帖心情 Post By:2018/3/10 22:06:00 [只看该作者]

需解决刷同一身份证时,只能刷唯一一次编号的问题。
If e.DataCol.Name = "日期" Then
    If e.DataRow.IsNull("日期") Then
        e.DataRow("编号") = Nothing
    Else
        Dim bh As String = Format(e.DataRow("日期"),"yyyyMMdd") '取得编号的8位前缀
        If e.DataRow("编号").StartsWith(bh) = False '如果编号的前8位不符
            Dim  max As String
            Dim  idx As  Integer
            max = e.DataTable.Compute("Max(编号)","日期 = #" & e.DataRow("日期") & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该天的最大编号
            If  max > "" Then '如果存在最大编号
                idx = CInt(max.Substring(9,3)) + 1  '获得最大编号的后三位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End  If
            e.DataRow("编号") = bh & "-" & Format(idx,"000")
        End If
    End  If
End  If

 回到顶部
总数 51 上一页 1 2 3 4 5 6 下一页