Foxtable(狐表)用户栏目专家坐堂 → 请教一个自定义函数怎么代替e属性


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

主题:请教一个自定义函数怎么代替e属性

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


加好友 发短信
等级:幼狐 帖子:124 积分:1425 威望:0 精华:0 注册:2018/7/8 13:04:00
请教一个自定义函数怎么代替e属性  发帖心情 Post By:2018/8/3 13:30:00 [只看该作者]

Dim data As DataTable=args(0)'设置一个参数接受表
Dim title As String=args(1)'设置一个参数接受字段
Dim start As String = args(2)'设置一个参数接受开始的字母  如KP
Dim result As String
Dim d As Date = Date.Today
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 = title & Format(d,"yyyyMMdd") '生成编号的前6位,4位年,2位月.
If e.DataRow(title).StartsWith(bh) = False '如果编号的前6位不符
    Dim max As String
    Dim idx As Integer
    max = e.DataTable.Compute("Max(开piao流水单号)","日期 >= #" & fd & "# And 日期 <= #" & ld & "# And [开piao流水单号] <> '" & e.DataRow(title) & "'") '取得该月的最大编号
    If max > "" Then '如果存在最大编号
        idx = CInt(max.SubString(10,4)) + 1 '获得最大编号的后三位顺序号,并加1
        MessageBox.show(idx & "成功")
    Else
        idx = 1 '否则顺序号等于1
        MessageBox.show("2")
    End If
    result =  bh  & Format(idx,"0000")
End If
Return result





老师啊,我想设置一个自动编号的自定义函数 放在事件中 ,请问e.datatable或者 e.datarow  怎么用args代替呢,还有就是max(开piao流水单号),这个开piao流水单号字段是没有双引号,我需要用title这个参数代替他,请问怎么设置??

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


加好友 发短信
等级:幼狐 帖子:124 积分:1425 威望:0 精华:0 注册:2018/7/8 13:04:00
  发帖心情 Post By:2018/8/3 14:08:00 [只看该作者]

 

1、调用函数的时候,把e参数传递进去;

 

2、函数里面获取e参数

 

Dim e = args(0)


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


加好友 发短信
等级:幼狐 帖子:124 积分:1425 威望:0 精华:0 注册:2018/7/8 13:04:00
  发帖心情 Post By:2018/8/3 14:12:00 [只看该作者]

Max(开piao流水单号)  现在就是一个问题  这里面的字段应该怎么用变量代替

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


加好友 发短信
等级:幼狐 帖子:124 积分:1425 威望:0 精华:0 注册:2018/7/8 13:04:00
  发帖心情 Post By:2018/8/3 14:33:00 [只看该作者]

会了,用动态合成表达式。
Dim e=args(0)'设置一个参数接受表
Dim title As String=args(1)'设置一个参数接受字段
Dim start As String =args(2)'设置一个参数接受开始的字母  如KP
Dim result As String
Dim d As Date = Date.Today
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 = start & Format(d,"yyyyMMdd") '生成编号的前6位,4位年,2位月.
If e.DataRow(title).StartsWith(bh) = False '如果编号的前6位不符
    Dim max As String
    Dim idx As Integer
    max = e.DataTable.Compute("Max(" & title & ")","日期 >= #" & fd & "# And 日期 <= #" & ld & "# And " & title & "<> '" & e.DataRow(title) & "'") '取得该月的最大编号
    If max > "" Then '如果存在最大编号
        idx = CInt(max.SubString(10,4)) + 1 '获得最大编号的后三位顺序号,并加1
        MessageBox.show(idx & "成功")
    Else
        idx = 1 '否则顺序号等于1
        MessageBox.show("2")
    End If
    result =  bh  & Format(idx,"0000")
End If
Return result

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


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

以下是引用饭浇盖在2018/8/3 14:08:00的发言:

 

1、调用函数的时候,把e参数传递进去;

 

2、函数里面获取e参数

 

Dim e = args(0)

 

你这个做了没有,把e参数传递进去了没有?


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


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

以下是引用饭浇盖在2018/8/3 14:12:00的发言:
Max(开piao流水单号)  现在就是一个问题  这里面的字段应该怎么用变量代替

 

改成

 

max = e.DataTable.Compute("Max(" & title & ")","日期 >= #" & fd & "# And 日期 <= #" & ld & "# And [" & title & "] <> '" & e.DataRow(title) & "'") '取得该月的最大编号


 回到顶部