以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请教已录入数据禁止修改单价表产品名称、工序,还有组合合并问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=146369) |
||||
-- 作者:采菊东篱下 -- 发布时间:2020/2/22 12:19:00 -- 请教已录入数据禁止修改单价表产品名称、工序,还有组合合并问题 密码是:111111 我已在单价表写了代码,希望已录入数据禁止修改单价表产品名称、工序,但不能实现,我的代码要在加载数据源表数据后才能执行,如未加载数据该如何改?另生产进度汇总表窗口下的安产品工序按钮里的代码执行时意弹出
此主题相关图片如下:qq图片20200222115922.png |
||||
-- 作者:有点蓝 -- 发布时间:2020/2/22 13:41:00 -- 1、单价表在什么地方写了禁止修改单价表产品名称、工序的代码?没看到 2、计划生产数是表达式列,不能在SQLGroupTableBuilder里使用的,改为 Dim g2 As New SQLGroupTableBuilder("统计表2", "订单数量表") g2.Groups.AddDef("产品名称") g2.Groups.AddDef("生产单号") g2.Totals.AddExp("计划生产数","int([订单数量] * 1.02)") dt = g2.Build(False) |
||||
-- 作者:采菊东篱下 -- 发布时间:2020/2/22 14:32:00 -- 哦!忘了使用SQL统计数据不能使用表达式,谢谢。 禁止修改已引用的单价表产品名称、工序代码我写在单价表的表属性DataColChanged事件下,还有临时表统计表2的数据出来了,但生产进度汇总表的数据在没加载数据源表数据下不显示数据,应如何改为显? [此贴子已经被作者于2020/2/22 14:33:13编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/2/22 15:00:00 -- 首先DataColChanged事件没有e.Cancel用法。 其次一般权限控制在PrepareEdit,或者DataColChanging事件里处理。http://www.foxtable.com/webhelp/topics/0605.htm 不同事件有不同的用法,看清楚帮助说明再使用
|
||||
-- 作者:采菊东篱下 -- 发布时间:2020/2/22 15:27:00 -- 我开始是把: Select Case e.DataCol.name Case "产品名称","产品编号" Dim dt As DataRow Dim dt1 As DataRow Dim dt2 As DataRow Dim dt3 As DataRow Dim dt4 As DataRow Dim dt5 As DataRow dt = DataTables("数据源表").find("产品名称 = \'" & e.DataRow("产品名称") & "\'" And "工序名称 = \'" & e.DataRow("工序名称") & "\'") dt1 = DataTables("数据源表").find("产品编号 = \'" & e.DataRow("产品编号") & "\'"and "工序号 = \'" & e.DataRow("工序号") & "\'") dt2 = DataTables("订单数量表").find("产品名称 = \'" & e.DataRow("产品名称") & "\'") dt3 = DataTables("订单数量表").find("产品编号 = \'" & e.DataRow("产品编号") & "\'") dt4 = DataTables("成品入进仓数").find("产品名称 = \'" & e.DataRow("产品名称") & "\'") dt5 = DataTables("成品入进仓数").find("产品编号 = \'" & e.DataRow("产品编号") & "\'") If dt IsNot Nothing Or dt1 IsNot Nothing Or dt2 IsNot Nothing Or dt3 IsNot Nothing Or dt4 IsNot Nothing Or dt5 IsNot Nothing Then e.Cancel = True End If End Select 写在DataColChanging事件里,但不执行,后想想,我是在编辑后才判断是否允许编辑,如果没被引用,允许编辑的。 [此贴子已经被作者于2020/2/22 16:26:43编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/2/22 15:33:00 -- 没被引用是指什么?意思是如果这个单元格如果有值,就不引用其他表的数据,否则就引用? [此贴子已经被作者于2020/2/22 15:33:51编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/2/22 15:35:00 -- 没看懂这个代码要表示什么意思。使用文字详细说明一下 |
||||
-- 作者:采菊东篱下 -- 发布时间:2020/2/22 16:04:00 -- 单价表里的产品名称、工序名称不是被数据源表、订单数量表作为统一名称、规范叫法在目录树中引用了吗?一旦修改单价表里的产品名称、生产工序,已结账引用的表由于没同步修改,就产生混乱,而且已打的单也不可能再改,故所有管理软件都是设置已引用的基本数据不允许修改,我这段代码的意思是,当数据源表的产品名称、工序名称或订单数量表的产品名称与单价表的产品名称、工序名称当前行相符(即要求为空),则取消编辑,否则允许编辑。 [此贴子已经被作者于2020/2/22 16:17:40编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/2/22 16:19:00 -- DataColChanging事件 Select Case e.DataCol.name Case "产品名称" Dim dt As DataRow Dim dt2 As DataRow dt = DataTables("数据源表").find("产品名称 = \'" & e.oldValue & "\'") dt2 = DataTables("订单数量表").find("产品名称 = \'" & e.oldValue & "\'") If dt IsNot Nothing OrElse dt2 IsNot Nothing e.Cancel = True End If Case "产品编号" Dim dt1 As DataRow Dim dt3 As DataRow dt1 = DataTables("数据源表").find("产品编号 = \'" & e.oldValue & "\'") dt3 = DataTables("订单数量表").find("产品编号 = \'" & e.oldValue & "\'") If dt1 IsNot Nothing OrElse dt3 IsNot Nothing Then e.Cancel = True End If End Select [此贴子已经被作者于2020/2/22 16:20:34编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/2/22 16:24:00 -- 最合理的应该到prepareedit事件处理,直接不给编辑,而不是编辑完了再取消编辑 Select Case e.Col.Name Case "产品名称","产品编号" Dim dt As DataRow Dim dt2 As DataRow dt = DataTables("数据源表").find(e.Col.Name & " = \'" & e.Row(e.Col.Name) & "\'") dt2 = DataTables("订单数量表").find(e.Col.Name & " = \'" & e.Row(e.Col.Name) & "\'") If dt IsNot Nothing OrElse dt2 IsNot Nothing e.Cancel = True End If End Select |