以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]数据唯一性校验  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=39356)

--  作者:alangoon
--  发布时间:2013/8/22 15:18:00
--  [求助]数据唯一性校验

各位专家好!

 

有关于数据唯一性校验问题想请教一下。不知道各位有没有遇见同样问题?

请先看图。

这个界面用了两个表,一个主表,一个明细表。单向关联,入库单编号为关联列。

 

 

由于要求入库单编号在主表必须唯一,不可重复。我试过在两个地方输入校验代码:

1. 表的DataColChanged:

   Select Case e.DataCol.Name
    Case "转仓单编号"
        If e.NewValue IsNot Nothing Then
            If DataTables("入库单主文件").Select("入库单编号 = \'" & e.NewValue & "\'").Count > 1 Then
                Messagebox.Show("您输入的单据编号重复,请重新输入!","提示")
                e.DataRow("入库单编号") = Nothing
            End If
        End If
End Select

 

2. 窗口的Validating:

    If e.sender.value IsNot Nothing Then
    If DataTables("其他入库单").Select("入库单编号 = \'" & e.sender.value & "\'").Count > 1 Then
        messagebox.show("入库单编号重复了,请重新输入!","提示")
        e.cancel = True
    End If
End If

 

当然不是同时两个地方代码都存在。

 

结果就是:我输入相同的入库单编号时,能够提示数据重复,但是竟然将先前输入的明细表给调出来了。非常讨厌。

请教一下该怎么处理才不会这样呢?

谢谢了,在线等答案。


图片点击可在新窗口打开查看此主题相关图片如下:20130822_143616.jpg
图片点击可在新窗口打开查看

简单做了个例子,请指点一下。谢谢。

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

[此贴子已经被作者于2013-8-22 15:43:50编辑过]

--  作者:Bin
--  发布时间:2013/8/22 15:20:00
--  
上个例子看看,将先前输入的明细表给调出来了? 是什么意思?
--  作者:alangoon
--  发布时间:2013/8/22 15:26:00
--  

上例子比较麻烦。不好意思。

 

比如说之前我输入单据号:IS_130822_01,并且输入了明细。保存。

 

现在我又新增一条数据:不小心重输入了IS_130822_01,即重复了,然后就把之前输入的单据号:IS_130822_01下的明细给关联出来了。

 

还是看看能不能做个例子吧,表达出来很辛苦。


--  作者:alangoon
--  发布时间:2013/8/22 15:45:00
--  
Bin先生,例子已经上传了,请帮忙看看。
--  作者:Bin
--  发布时间:2013/8/22 15:52:00
--  
例子没看懂,你里面并没有限制代码啊
--  作者:alangoon
--  发布时间:2013/8/22 15:53:00
--  
我在窗口的单据号那里代码:Validating
--  作者:alangoon
--  发布时间:2013/8/22 15:57:00
--  

简单点,就是我希望表A的单据号是唯一的。在窗口如果输入了重复的单据号,系统会提示错误但不会将表B的明细调出来。

有没有办法?

 


--  作者:Bin
--  发布时间:2013/8/22 16:02:00
--  
写在DatacolChangIng中就行了

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



--  作者:jspta
--  发布时间:2013/8/22 16:09:00
--  

datacol有个属性 Unique 设置为true可以禁止该列重复,不过有个小问题,跟你代码一样,只能是判断加载到Foxtable中的数据。 


--  作者:alangoon
--  发布时间:2013/8/22 18:23:00
--  

看来Bin哥并没有理解我的意思,

我要的效果是:如果表A单据号重复了,不会显示表B的相同单据号的数据。