以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]按领用人来自动分配收据号码【已解决】 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=31436) |
||||
-- 作者:lipiti -- 发布时间:2013/4/15 11:27:00 -- [求助]按领用人来自动分配收据号码【已解决】 [求助]按领用人来自动分配收据号码【已解决】 领取到号段后在号段管理表中输入开始号段和结束号段,接下来什么也不用管,增加行时会自动判断的。 如果增加一个【领用人】判断,代码该怎么写? 领用人:管理员,领用号段为:2000001-2000100,开发者登陆后,新增行自动编号就会从200000开始; 请 czy 版主帮忙在以下表事件基础上修改一下,谢谢! 表事件
表A_BeforeAddDataRow
Dim dr,dr1 As DataRow dr = DataTables("号段管理").Find("[启用]
= True And [停止] = False") dr1 = DataTables("号段管理").Find("[启用]
= False And [停止] = False") if dr is Nothing Then if dr1 IsNot Nothing Then dr1("启用") = true Else e.Cancel = True MessageBox.Show("没有可用号段!","提示") Return End If End If
表A_DataRowAdded
Dim dr As DataRow = e.DataRow Dim dr1,dr2 As DataRow dr1 = DataTables("号段管理").Find("[启用]
= True And [停止] = False") dr2 = DataTables("表A").Find("[编号]
= \'" & dr1("开始号段") & "\'") if dr2 is Nothing Then dr("编号") = dr1("开始号段") Else dr("编号") =
Format(e.DataTable.Compute("Max(编号)") + 1,"0000000") if dr("编号") = dr1("结束号段") dr1("停止") = true End If End If
[此贴子已经被作者于2013-4-15 22:24:12编辑过]
|
||||
-- 作者:Bin -- 发布时间:2013/4/15 11:37:00 --
|
||||
-- 作者:lipiti -- 发布时间:2013/4/15 11:58:00 -- 谢谢 Bin ,用2013版修改的,下午安装上2013版测试一下,谢谢! |
||||
-- 作者:lipiti -- 发布时间:2013/4/15 15:03:00 -- 表A_BeforeAddDataRow
Dim dr,dr1 As DataRow dr = DataTables("号段管理").Find("[领用人]
= \'" & User.Name & "\' and [启用] = True And [停止] = False") dr1 = DataTables("号段管理").Find("[领用人]
= \'" & User.Name & "\' and [启用] = False And [停止] =
False") If dr Is Nothing Then If dr1 IsNot Nothing Then dr1("启用") = True Else e.Cancel = True MessageBox.Show("没有可用号段!","提示") Return End If End If
表A_DataRowAdded
Dim dr As DataRow = e.DataRow Dim dr1,dr2 As DataRow dr1 = DataTables("号段管理").Find("[领用人]
= \'" & User.Name & "\' and [启用] = True And [停止] = False") dr2 = DataTables("表A").Find("[编号]
= \'" & dr1("开始号段") & "\'") If dr2 Is Nothing Then dr("编号") = dr1("开始号段") Else dr("编号") =
Format(e.DataTable.Compute("Max(编号)") + 1,"0000000") If dr("编号") = dr1("结束号段") dr1("停止") = True End If End If 以上代码可以按领用号码自动分配,但还是不能按领用人来进行分配,高手们,帮忙修改一下,变成可以按领用人来进行分配的代码吧! |
||||
-- 作者:Bin -- 发布时间:2013/4/15 15:10:00 -- 什么意思? 上面代码不就是根据领用人进行分配了吗? |
||||
-- 作者:lipiti -- 发布时间:2013/4/15 15:19:00 -- 例如:领用人:开发者,领用号段为:1000001-1000100,开发者登陆后,新增行自动编号就会从100000开始; 领用人:管理员,领用号段为:2000001-2000100,开发者登陆后,新增行自动编号就会从200000开始; 用以上代码现在是:管理员登陆,新增行自动编号应该就会从200000开始;但实际还是从100000开始;
|
||||
-- 作者:Bin -- 发布时间:2013/4/15 15:22:00 -- 此主题相关图片如下:qq截图20130415152200.png 刚测试了.没问题的啊. |
||||
-- 作者:lipiti -- 发布时间:2013/4/15 17:55:00 --
|
||||
-- 作者:lipiti -- 发布时间:2013/4/15 18:11:00 --
|
||||
-- 作者:lipiti -- 发布时间:2013/4/15 20:51:00 -- dr("编号") = Format(e.DataTable.Compute("Max(编号)") + 1,"0000000") 现在主要是获取最大值时,也需要改成按【领用人】区分,判断当前登录账号的最大值是什么?请高手帮忙修改一下代码?
|