以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请教一个自定义函数怎么代替e属性 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=122871) |
|
-- 作者:饭浇盖 -- 发布时间:2018/8/3 13:30:00 -- 请教一个自定义函数怎么代替e属性 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(开票流水单号)","日期 >= #" & fd & "# And 日期 <= #" & ld & "# And [开票流水单号] <> \'" & 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(开票流水单号),这个开票流水单号字段是没有双引号,我需要用title这个参数代替他,请问怎么设置??
|
|
-- 作者:饭浇盖 -- 发布时间:2018/8/3 14:08:00 --
|
|
-- 作者:饭浇盖 -- 发布时间:2018/8/3 14:12:00 -- Max(开票流水单号) 现在就是一个问题 这里面的字段应该怎么用变量代替 |
|
-- 作者:饭浇盖 -- 发布时间: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 |
|
-- 作者:有点甜 -- 发布时间:2018/8/3 14:33:00 -- 以下是引用饭浇盖在2018/8/3 14:08:00的发言:
你这个做了没有,把e参数传递进去了没有? |
|
-- 作者:有点甜 -- 发布时间:2018/8/3 14:34:00 -- 以下是引用饭浇盖在2018/8/3 14:12:00的发言:
Max(开票流水单号) 现在就是一个问题 这里面的字段应该怎么用变量代替
改成
max = e.DataTable.Compute("Max(" & title & ")","日期 >= #" & fd & "# And 日期 <= #" & ld & "# And [" & title & "] <> \'" & e.DataRow(title) & "\'") \'取得该月的最大编号 |