以文本方式查看主题

-  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
--  [求助]按领用人来自动分配收据号码【已解决】
[求助]按领用人来自动分配收据号码【已解决】

领取到号段后在号段管理表中输入开始号段和结束号段,接下来什么也不用管,增加行时会自动判断的。
如果增加一个【领用人】判断,代码该怎么写?

此主题相关图片如下:2013-04-15_11-13-20.png
按此在新窗口浏览图片
例如:领用人:开发者,领用号段为:1000001-1000100,开发者登陆后,新增行自动编号就会从
100000开始;
            领用人:管理员,领用号段为: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



 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目19.table


[此贴子已经被作者于2013-4-15 22:24:12编辑过]

--  作者:Bin
--  发布时间:2013/4/15 11:37:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目19.table


--  作者: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
--  
谢谢 Bin 帮忙修改的代码,已经解决了。是我自己在有个逻辑条件写错了,现在改过来就可以了,再次谢谢 Bin

--  作者:lipiti
--  发布时间:2013/4/15 18:11:00
--  
用以上代码现在是:

         领用人:开发者,登陆,领用号段为:1000001-1000100,开发者登陆后,新增行自动编号就会从100000开始;-----正常
         领用人:管理员,登陆,领用号段为:2000001-2000100,开发者登陆后,新增行自动编号就会从200000开始;-----正常
         领用人:开发者,登陆,领用号段为:1000001-1000100,开发者登陆后,新增行自动编号就会从200000开始;应该是自动编号就会从100000开始;-----不正常

--  作者:lipiti
--  发布时间:2013/4/15 20:51:00
--  
dr("编号") = Format(e.DataTable.Compute("Max(编号)") + 1,"0000000")

现在主要是获取最大值时,也需要改成按【领用人】区分,判断当前登录账号最大值是什么?请高手帮忙修改一下代码?