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


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

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

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
不允许输入相同的任务单  发帖心情 Post By:2018/9/26 14:41:00 [显示全部帖子]

我有一个数据表叫做“任务单”,其数据列有“生产piao号”、“型号”、“数量”。现在有两个人分别使用两台电脑输入任务单(用复制和粘贴的功能)。我的要求是,有一个人输入过了的任务单,另一个人就不允许他再输入了。如何达到这个目的?请留意,两个人输入的任务单,其“生产piao号”、“型号”、“数量”三者可能会是一样的。谢谢。

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/9/27 11:18:00 [显示全部帖子]

二楼提供的链接适合于一个用户在一台电脑上操作的情况。现在我的情况时,用户A在电脑A进行资料输入,用户B在电脑B进行资没有料输入,他们各自输入的资料可能还没有保存,也可能还没有去追载另一方已经输入和保存的数据。这样如何防止其中一方重复输入另一方已经输入的数据呢?

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/9/28 9:26:00 [显示全部帖子]

1. 可以要求各个用户在输入数据后马上保存数据。2. 整套代码我还是不懂编写。

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/9/28 15:52:00 [显示全部帖子]

这只适合一个用户在一台电脑上操作的情况。现在我的情况时,用户A在电脑A进行资料输入,用户B在电脑B进行资没有料输入,这样如何防止其中一方重复输入另一方已经输入的数据呢?所以,我不知道如何修改 http://www.foxtable.com/webhelp/scr/2481.htm 里面的代码。

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/9/29 13:24: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 String
        If e.DataCol.Name= "型号" Then
            xh = e.NewValue
            gg = e.DataRow("规格")
        Else
            gg = e.NewValue
            xh = 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

现在case后面有7个变量,所以,中间的 if...else...endif 那段代码不懂如何修改。谢谢。

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/9/29 13:26:00 [显示全部帖子]

另外,计划数量一栏是微整数来的。
[此贴子已经被作者于2018/9/29 13:26:02编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望: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列数据全部都输入进入了。为什么呢?

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/9/30 10:17:00 [显示全部帖子]

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

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/9/30 11:13:00 [显示全部帖子]

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

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望: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用户还没有更新或追载数据的情况下,也是可以继续输入相同的采购单号和采购单行号的。

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