Foxtable(狐表)用户栏目专家坐堂 → 请教已录入数据禁止修改单价表产品名称、工序,还有组合合并问题


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

主题:请教已录入数据禁止修改单价表产品名称、工序,还有组合合并问题

美女呀,离线,留言给我吧!
采菊东篱下
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
请教已录入数据禁止修改单价表产品名称、工序,还有组合合并问题  发帖心情 Post By:2020/2/22 12:19:00 [只看该作者]

密码是:111111

    我已在单价表写了代码,希望已录入数据禁止修改单价表产品名称、工序,但不能实现,我的代码要在加载数据源表数据后才能执行,如未加载数据该如何改?另生产进度汇总表窗口下的安产品工序按钮里的代码执行时意弹出

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:在编写代码.rar


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20200222115922.png
图片点击可在新窗口打开查看

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107756 积分:548119 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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)


 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/2/22 14:32:00 [只看该作者]

哦!忘了使用SQL统计数据不能使用表达式,谢谢。

禁止修改已引用的单价表产品名称、工序代码我写在单价表的表属性DataColChanged事件下,还有临时表统计表2的数据出来了,但生产进度汇总表的数据在没加载数据源表数据下不显示数据,应如何改为显?

[此贴子已经被作者于2020/2/22 14:33:13编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107756 积分:548119 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/22 15:00:00 [只看该作者]

首先DataColChanged事件没有e.Cancel用法。
其次一般权限控制在PrepareEdit,或者DataColChanging事件里处理。http://www.foxtable.com/webhelp/topics/0605.htm
不同事件有不同的用法,看清楚帮助说明再使用

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107756 积分:548119 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/22 15:33:00 [只看该作者]

没被引用是指什么?意思是如果这个单元格如果有值,就不引用其他表的数据,否则就引用?
[此贴子已经被作者于2020/2/22 15:33:51编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107756 积分:548119 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/22 15:35:00 [只看该作者]

没看懂这个代码要表示什么意思。使用文字详细说明一下

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/2/22 16:04:00 [只看该作者]

单价表里的产品名称、工序名称不是被数据源表、订单数量表作为统一名称、规范叫法在目录树中引用了吗?一旦修改单价表里的产品名称、生产工序,已结账引用的表由于没同步修改,就产生混乱,而且已打的单也不可能再改,故所有管理软件都是设置已引用的基本数据不允许修改,我这段代码的意思是,当数据源表的产品名称、工序名称或订单数量表的产品名称与单价表的产品名称、工序名称当前行相符(即要求为空),则取消编辑,否则允许编辑。
[此贴子已经被作者于2020/2/22 16:17:40编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107756 积分:548119 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107756 积分:548119 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

 回到顶部
总数 24 1 2 3 下一页