Foxtable(狐表)用户栏目专家坐堂 → 不允许输入相同的任务单


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

主题:不允许输入相同的任务单

帅哥,在线噢!
有点蓝
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106178 积分:540007 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/9/29 14:47:00 [只看该作者]

Dim ph As String = e.DataRow("列1")
Dim lx As String= e.DataRow("列2")
Dim soh As String= e.DataRow("列3")
Dim xh As String= e.DataRow("列4")
Dim sohh As String= e.DataRow("列5")
If e.DataCol.Name= "列1" Then
    xh = e.NewValue
ElseIf e.DataCol.Name= "列2" Then
    lx= e.NewValue
ElseIf.......

End If

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


加好友 发短信
等级:六尾狐 帖子:1470 积分:9536 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/9/29 17:23:00 [只看该作者]

Select Case e.DataCol.name
    Case "装配piao号","类型","SO号","箱号","SO行号","制造产品号","计划数量"
        Dim ph As String
        Dim lx As String        
        Dim soh As String
        Dim xh As String
        Dim sohh As String
        Dim cph As String
        Dim sl As byte
        If e.DataCol.Name= "装配piao号" Then
            ph = e.NewValue
            lx = e.DataRow("类型")
            soh = e.DataRow("SO号")
            xh = e.DataRow("箱号")
            sohh = e.DataRow("SO行号")
            cph = e.DataRow("制造产品号")
            sl = e.DataRow("计划数量")
        Elseif e.DataCol.Name= "类型" Then
            lx = e.NewValue
            ph = e.DataRow("装配piao号")
            soh = e.DataRow("SO号")
            xh = e.DataRow("箱号")
            sohh = e.DataRow("SO行号")
            cph = e.DataRow("制造产品号")
            sl = e.DataRow("计划数量")
        Elseif e.DataCol.Name= "SO号" Then
            soh = e.NewValue
            ph = e.DataRow("装配piao号")
            lx = e.DataRow("类型")
            xh = e.DataRow("箱号")
            sohh = e.DataRow("SO行号")
            cph = e.DataRow("制造产品号")
            sl = e.DataRow("计划数量")
        Elseif e.DataCol.Name= "箱号" Then
            xh = e.NewValue
            ph = e.DataRow("装配piao号")
            soh = e.DataRow("SO号")
            lx = e.DataRow("类型")
            sohh = e.DataRow("SO行号")
            cph = e.DataRow("制造产品号")
            sl = e.DataRow("计划数量")
        Elseif e.DataCol.Name= "SO行号" Then
            sohh = e.NewValue
            ph = e.DataRow("装配piao号")
            soh = e.DataRow("SO号")
            lx = e.DataRow("类型")
            xh = e.DataRow("箱号")
            cph = e.DataRow("制造产品号")
            sl = e.DataRow("计划数量")
        Elseif e.DataCol.Name= "制造产品号" Then
            cph = e.NewValue
            ph = e.DataRow("装配piao号")
            soh = e.DataRow("SO号")
            lx = e.DataRow("类型")
            xh = e.DataRow("箱号")
            sohh = e.DataRow("SO行号")
            sl = e.DataRow("计划数量")
        Elseif e.DataCol.Name= "数量" Then
            sl = e.NewValue
            ph = e.DataRow("装配piao号")
            soh = e.DataRow("SO号")
            lx = e.DataRow("类型")
            xh = e.DataRow("箱号")
            sohh = e.DataRow("SO行号")
            sl = e.DataRow("计划数量")
        End If
        If ph > "" AndAlso lx > "" AndAlso soh > "" AndAlso xh > "" AndAlso sohh > "" AndAlso cph > "" AndAlso sl > "" Then 
            Dim dr As DataRow = e.DataRow
            If e.DataTable.SqlFind("装配piao号 = '" & ph & "' And 类型 = '" & lx & "' And SO号 = '" & soh & "' And 箱号 = '" & xh & "' And SO行号 = '" & sohh & "'And 制造产品号 = '" & cph & "'And 计划数量 = '" & sl & "'") IsNot Nothing Then
                MessageBox.Show("已经存在相同piao号/类型/SO号/箱号/SO行号/产品号/数量的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
                e.Cancel = True
            End If
        End If
End Select

这是我的代码,放在datacolchanging里面。但是,使用的时候,会出现如下警告:

.NET Framework 版本:2.0.50727.8793
Foxtable 版本:2017.3.18.1
错误所在事件:表,JPK612任务单,DataColChanging
详细错误信息:
调用的目标发生了异常。
从字符串“”到类型“Double”的转换无效。
输入字符串的格式不正确。

而且,7列数据全部都输入进入了。为什么呢?

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


加好友 发短信
等级:超级版主 帖子:106178 积分:540007 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/9/29 17:31:00 [只看该作者]

If ph > "" AndAlso lx > "" AndAlso soh > "" AndAlso xh > "" AndAlso sohh > "" AndAlso cph > "" AndAlso sl > 0 Then 
            Dim dr As DataRow = e.DataRow
            If e.DataTable.SqlFind("装配piao号 = '" & ph & "' And 类型 = '" & lx & "' And SO号 = '" & soh & "' And 箱号 = '" & xh & "' And SO行号 = '" & sohh & "'And 制造产品号 = '" & cph & "'And 计划数量 = " & sl ) IsNot Nothing Then

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


加好友 发短信
等级:六尾狐 帖子:1470 积分:9536 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/9/30 10:17:00 [只看该作者]

改用了你的代码之后,输入同样的数据行时,没有任何警告就允许输入了。

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


加好友 发短信
等级:超级版主 帖子:106178 积分:540007 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/9/30 11:02:00 [只看该作者]

If ph > "" AndAlso lx > "" AndAlso soh > "" AndAlso xh > "" AndAlso sohh > "" AndAlso cph > "" AndAlso e.DataRow.isnull("计划数量") = false Then 

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


加好友 发短信
等级:六尾狐 帖子:1470 积分:9536 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/9/30 11:13:00 [只看该作者]

还是一样:改用了你的代码之后,输入同样的数据行时,没有任何警告就允许输入了。我用回我原来的代码还有警告。

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


加好友 发短信
等级:超级版主 帖子:106178 积分:540007 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/9/30 11:30:00 [只看该作者]

请上传实例测试

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


加好友 发短信
等级:六尾狐 帖子:1470 积分:9536 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/9/30 14:32:00 [只看该作者]

我想问一个问题,这样的代码,能够防止两个用户之间互相重复录入相同的数据吗?如果不能,那就不要搞了。

Select Case e.DataCol.name
    Case "采购单号"
        If e.NewValue > "" AndAlso e.DataRow.IsNull("采购单行号") = False
            Dim dr As DataRow = e.DataRow
            If e.DataTable.Find("采购单号 = '" & e.NewValue & "' And 采购单行号 =" & dr("采购单行号")) IsNot Nothing Then
                MessageBox.Show("已经存在相同采购单号和采购单行号的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
                e.Cancel = True
            End If
        End If
    Case "采购单行号"
        If e.DataRow.IsNull("采购单行号") = False AndAlso e.DataRow.IsNull("采购单号") = False
            Dim dr As DataRow = e.DataRow
            If e.DataTable.Find("采购单号 = '" & dr("采购单号") & "' And 采购单行号 = " & e.NewValue ) IsNot Nothing Then
                MessageBox.Show("已经存在相同采购单号和采购单行号的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
                e.Cancel = True
            End If
        End If
End Select

比如上述代码,可以防止一个用户自己不要录入相同的采购单号和采购单行号的行。但是,如果A用户输入了某行采购单号和采购单行号的数据,而B用户还没有更新或追载数据的情况下,也是可以继续输入相同的采购单号和采购单行号的。

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


加好友 发短信
等级:超级版主 帖子:106178 积分:540007 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/9/30 14:39:00 [只看该作者]

无法防止。可以考虑单号自动生成,而不是手动输入:http://www.foxtable.com/webhelp/scr/3008.htm

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


加好友 发短信
等级:六尾狐 帖子:1470 积分:9536 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/9/30 14:55:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.table


请看上述项目文件。如我所反映的那样,输入同样的数据行时,没有任何警告就允许输入了。

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