Foxtable(狐表)用户栏目专家坐堂 → [求助]在表属性能用,在项目属性里不管用


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

主题:[求助]在表属性能用,在项目属性里不管用

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


加好友 发短信
等级:幼狐 帖子:116 积分:813 威望:0 精华:0 注册:2016/6/6 16:33:00
[求助]在表属性能用,在项目属性里不管用  发帖心情 Post By:2016/7/14 8:50:00 [只看该作者]

怎么能在项目属性里用

Select e.DataCol.Name
    Case "第一次收益时间","人员姓名"
        If e.DataRow.IsNull("第一次收益时间") OrElse e.DataRow.IsNull("人员姓名") Then
            e.DataRow("人员编号") = Nothing
        Else
            Dim d As Date = e.DataRow("第一次收益时间")
            Dim y As Integer = d.Year
            Dim m As Integer = d.Month
            Dim Days As Integer = Date.DaysInMonth(y,m)
            Dim fd As Date = New Date(y,m,1) '获得该月的第一天
            Dim ld As Date = New Date(y,m,Days) '获得该月的最后一天
            Dim bh As String = e.DataRow("人员姓名") & "-" & Format(d,"yyMMdd") & "-"

            If e.DataRow("人员编号").StartsWith(bh) = False 
                Dim max As String
                Dim idx As Integer
                Dim flt As String
                flt = "人员姓名 = '"& e.DataRow("人员姓名") & "' And 第一次收益时间 >= #" & fd & "# And 第一次收益时间 <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify")
                max = e.DataTable.Compute("Max(人员编号)",flt) 

                If max > "" Then '如果存在最大单据编号
                    idx = CInt(max.Substring(12,4)) + 1 
                Else
                    idx = 1 
                End If
                e.DataRow("人员编号") = bh & Format(idx,"0000")
            End If
        End If
End Select


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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/7/14 8:55:00 [只看该作者]


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/7/14 9:15:00 [只看该作者]

 你没有开启对应的全局表事件?看2楼。

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


加好友 发短信
等级:幼狐 帖子:116 积分:813 威望:0 精华:0 注册:2016/6/6 16:33:00
  发帖心情 Post By:2016/7/14 9:18:00 [只看该作者]

已经能用了。不过出现错误了

.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2016.6.10.1
错误所在事件:全局表事件, DataColChanged
详细错误信息:
调用的目标发生了异常。
索引和长度必须引用该字符串内的位置。
参数名: length


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


加好友 发短信
等级:幼狐 帖子:116 积分:813 威望:0 精华:0 注册:2016/6/6 16:33:00
  发帖心情 Post By:2016/7/14 9:19:00 [只看该作者]

以下是引用大红袍在2016/7/14 9:15:00的发言:
 你没有开启对应的全局表事件?看2楼。

.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2016.6.10.1
错误所在事件:全局表事件, DataColChanged
详细错误信息:
调用的目标发生了异常。
索引和长度必须引用该字符串内的位置。
参数名: length
名字重复的都出现错误了。。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/7/14 9:22:00 [只看该作者]

If e.DataTable.Name = "AAA" Then
    Select e.DataCol.Name
        Case "第一次收益时间","人员姓名"
            If e.DataRow.IsNull("第一次收益时间") OrElse e.DataRow.IsNull("人员姓名") Then
                e.DataRow("人员编号") = Nothing
            Else
                Dim d As Date = e.DataRow("第一次收益时间")
                Dim y As Integer = d.Year
                Dim m As Integer = d.Month
                Dim Days As Integer = Date.DaysInMonth(y,m)
                Dim fd As Date = New Date(y,m,1) '获得该月的第一天
                Dim ld As Date = New Date(y,m,Days) '获得该月的最后一天
                Dim bh As String = e.DataRow("人员姓名") & "-" & Format(d,"yyMMdd") & "-"
               
                If e.DataRow("人员编号").StartsWith(bh) = False
                    Dim max As String
                    Dim idx As Integer
                    Dim flt As String
                    flt = "人员姓名 = '"& e.DataRow("人员姓名") & "' And 第一次收益时间 >= #" & fd & "# And 第一次收益时间 <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify")
                    max = e.DataTable.Compute("Max(人员编号)",flt)
                   
                    If max > "" Then '如果存在最大单据编号
                        idx = CInt(max.Substring(bh.length)) + 1
                    Else
                        idx = 1
                    End If
                    e.DataRow("人员编号") = bh & Format(idx,"0000")
                End If
            End If
    End Select
end if

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


加好友 发短信
等级:幼狐 帖子:116 积分:813 威望:0 精华:0 注册:2016/6/6 16:33:00
  发帖心情 Post By:2016/7/14 9:27:00 [只看该作者]

以下是引用大红袍在2016/7/14 9:22:00的发言:
If e.DataTable.Name = "AAA" Then
    Select e.DataCol.Name
        Case "第一次收益时间","人员姓名"
            If e.DataRow.IsNull("第一次收益时间") OrElse e.DataRow.IsNull("人员姓名") Then
                e.DataRow("人员编号") = Nothing
            Else
                Dim d As Date = e.DataRow("第一次收益时间")
                Dim y As Integer = d.Year
                Dim m As Integer = d.Month
                Dim Days As Integer = Date.DaysInMonth(y,m)
                Dim fd As Date = New Date(y,m,1) '获得该月的第一天
                Dim ld As Date = New Date(y,m,Days) '获得该月的最后一天
                Dim bh As String = e.DataRow("人员姓名") & "-" & Format(d,"yyMMdd") & "-"
               
                If e.DataRow("人员编号").StartsWith(bh) = False
                    Dim max As String
                    Dim idx As Integer
                    Dim flt As String
                    flt = "人员姓名 = '"& e.DataRow("人员姓名") & "' And 第一次收益时间 >= #" & fd & "# And 第一次收益时间 <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify")
                    max = e.DataTable.Compute("Max(人员编号)",flt)
                   
                    If max > "" Then '如果存在最大单据编号
                        idx = CInt(max.Substring(bh.length)) + 1
                    Else
                        idx = 1
                    End If
                    e.DataRow("人员编号") = bh & Format(idx,"0000")
                End If
            End If
    End Select
end if
 
加个表名?那这是什么意思?


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/7/14 9:28:00 [只看该作者]

1、全局表事件,肯定要先判断表名;

 

2、关键是这句代码 idx = CInt(max.Substring(bh.length)) + 1


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


加好友 发短信
等级:幼狐 帖子:116 积分:813 威望:0 精华:0 注册:2016/6/6 16:33:00
  发帖心情 Post By:2016/7/14 9:31:00 [只看该作者]

以下是引用大红袍在2016/7/14 9:28:00的发言:

1、全局表事件,肯定要先判断表名;

 

2、关键是这句代码 idx = CInt(max.Substring(bh.length)) + 1

能不能增加个日期判断呢?就比如表里有3个张三,日期分别是160601有两个和160605有一个,第一个编号应该是张三-160601-001,第二个张三-160601-002,第三个编号是张三160605-001?这样能实现么?


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/7/14 9:37:00 [只看该作者]

If e.DataTable.Name = "AAA" Then
    Select e.DataCol.Name
        Case "第一次收益时间","人员姓名"
            If e.DataRow.IsNull("第一次收益时间") OrElse e.DataRow.IsNull("人员姓名") Then
                e.DataRow("人员编号") = Nothing
            Else
                Dim d As Date = e.DataRow("第一次收益时间")
                Dim fd As Date = d
                Dim ld As Date = fd.AddDays(1)
                Dim bh As String = e.DataRow("人员姓名") & "-" & Format(d,"yyMMdd") & "-"
               
                If e.DataRow("人员编号").StartsWith(bh) = False
                    Dim max As String
                    Dim idx As Integer
                    Dim flt As String
                    flt = "人员姓名 = '"& e.DataRow("人员姓名") & "' And 第一次收益时间 >= #" & fd & "# And 第一次收益时间 < #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify")
                    max = e.DataTable.Compute("Max(人员编号)",flt)
                   
                    If max > "" Then '如果存在最大单据编号
                        idx = CInt(max.Substring(bh.length)) + 1
                    Else
                        idx = 1
                    End If
                    e.DataRow("人员编号") = bh & Format(idx,"0000")
                End If
            End If
    End Select
End If

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