Foxtable(狐表)用户栏目专家坐堂 → [求助]按领用人来自动分配收据号码【已解决】


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

主题:[求助]按领用人来自动分配收据号码【已解决】

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


加好友 发短信
等级:童狐 帖子:224 积分:2808 威望:0 精华:2 注册:2012/3/14 15:55:00
[求助]按领用人来自动分配收据号码【已解决】  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:童狐 帖子:224 积分:2808 威望:0 精华:2 注册:2012/3/14 15:55:00
  发帖心情 Post By:2013/4/15 11:58:00 [显示全部帖子]

谢谢 Bin ,用2013版修改的,下午安装上2013版测试一下,谢谢!

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


加好友 发短信
等级:童狐 帖子:224 积分:2808 威望:0 精华:2 注册:2012/3/14 15:55:00
  发帖心情 Post By: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


以上代码可以按领用号码自动分配,但还是不能按领用人来进行分配,高手们,帮忙修改一下,变成可以按领用人来进行分配的代码吧!


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


加好友 发短信
等级:童狐 帖子:224 积分:2808 威望:0 精华:2 注册:2012/3/14 15:55:00
  发帖心情 Post By:2013/4/15 15:19:00 [显示全部帖子]

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

用以上代码现在是:管理员登陆,新增行自动编号应该就会从200000开始;但实际还是100000开始;

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


加好友 发短信
等级:童狐 帖子:224 积分:2808 威望:0 精华:2 注册:2012/3/14 15:55:00
  发帖心情 Post By:2013/4/15 17:55:00 [显示全部帖子]

谢谢 Bin 帮忙修改的代码,已经解决了。是我自己在有个逻辑条件写错了,现在改过来就可以了,再次谢谢 Bin

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


加好友 发短信
等级:童狐 帖子:224 积分:2808 威望:0 精华:2 注册:2012/3/14 15:55:00
  发帖心情 Post By:2013/4/15 18:11:00 [显示全部帖子]

用以上代码现在是:

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

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


加好友 发短信
等级:童狐 帖子:224 积分:2808 威望:0 精华:2 注册:2012/3/14 15:55:00
  发帖心情 Post By:2013/4/15 20:51:00 [显示全部帖子]

dr("编号") = Format(e.DataTable.Compute("Max(编号)") + 1,"0000000")

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

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


加好友 发短信
等级:童狐 帖子:224 积分:2808 威望:0 精华:2 注册:2012/3/14 15:55:00
  发帖心情 Post By:2013/4/15 21:30:00 [显示全部帖子]

dr("编号") = Format(e.DataTable.Compute("Max(编号)","[领用人] = '" & User.Name & "'" ) + 1,"0000000")
如果使用以上代码会出现以下错误提示:

.NET Framework 版本:2.0.50727.3053
Foxtable 版本:2012.11.29.1
错误所在事件:表,收据信息,DataRowAdded
详细错误信息:
System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.Data.EvaluateException: 未找到列 [领用人]。
   在 System.Data.NameNode.Bind(DataTable table, List`1 list)
   在 System.Data.BinaryNode.Bind(DataTable table, List`1 list)
   在 System.Data.DataExpression.Bind(DataTable table)
   在 System.Data.DataExpression..ctor(DataTable table, String expression, Type type)
   在 System.Data.Select..ctor(DataTable table, String filterExpression, String sort, DataViewRowState recordStates)
   在 System.Data.DataTable.Select(String filterExpression, String sort, DataViewRowState recordStates)
   在 System.Data.DataTable.Compute(String expression, String filter)
   在 Foxtable.DataTable.Compute(String OllO0ll00O, String O11110)
   在 UserCode.DataRowAdded(DataRowEventArgs e)
   --- 内部异常堆栈跟踪的结尾 ---
   在 System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   在 System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   在 Foxtable.DataTable.Ol00ll0l0l01l0ll0OlO0(Object O10111, DataRowChangeEventArgs O)

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


加好友 发短信
等级:童狐 帖子:224 积分:2808 威望:0 精华:2 注册:2012/3/14 15:55:00
  发帖心情 Post By:2013/4/15 21:39:00 [显示全部帖子]

修改好代码,第1次新增是有【领用人】的,第2次新增就显示没有【领用人】了。

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


加好友 发短信
等级:童狐 帖子:224 积分:2808 威望:0 精华:2 注册:2012/3/14 15:55:00
  发帖心情 Post By:2013/4/15 22:01:00 [显示全部帖子]

谢谢 fjlclxj 修改的代码,已经解决!

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