以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 如何保证产品不重复? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=12715) |
||||
-- 作者:yacity -- 发布时间:2011/9/12 10:45:00 -- 如何保证产品不重复? 我的一个产品由三个 项目组成分别是“产品名称”“规格”“单位” 只要有一个项目不相同,就视为不相同的产品,当三个项目都相同的时候就视为相同的产品,相同的产品则不允许再录入。如何实现呢?
如图 第5行产品 和第1行产品相同,则不允许输入,并弹出提示框“已经存在相同的产品”如何实现呢?
项目如下:
[此贴子已经被作者于2011-9-12 10:46:43编辑过]
|
||||
-- 作者:ybil -- 发布时间:2011/9/12 10:56:00 -- If ",产品名称,规格,单位,".indexof("," & e.DataCol.Name & ",")>-1 Then Dim dr,dr1 As DataRow dr = e.Datarow dr1 = e.DataTable.Find("产品名称 = \'" & dr("产品名称") & "\'and 规格 = \'" & dr("规格") & "\'and 单位 =\'" & dr("单位") & "\'") If dr1 IsNot Nothing Then
MessageBox.Show("此产品已经存在!") e.Datarow( e.DataCol.Name) = nothing End If End If |
||||
-- 作者:yacity -- 发布时间:2011/9/12 15:49:00 -- 这个是 要放到哪里去呢? 我放到 表属性 validateEdit 不行呀
![]() ![]() |
||||
-- 作者:狐狸爸爸 -- 发布时间:2011/9/12 16:49:00 -- DataColChanged事件:
Select Case e.DataCol.Name |
||||
-- 作者:yacity -- 发布时间:2011/10/11 11:52:00 -- 不行的。这样你永远都不能完整录入第一行。 因为只要你录入一行,就满足 If dr IsNot Nothing Then
应该判断是否存在两行相同的数据 如何实现呢?
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2011/10/11 13:54:00 -- Select Case e.DataCol.Name Case "第一列","第二列","第三列" Dim drs As List(of DataRow) drs = e.DataTable.Select("第一列 = \'" & e.DataRow("第一列") & "\' And 第二列 = \'" & e.DataRow("第二列") & "\' And 第三列 = \'" & e.DataRow("第三列") & "\'") If drs.Count > 1 Then e.DataRow(e.DataCol.Name) = Nothing End If End Select |
||||
-- 作者:mr725 -- 发布时间:2011/10/11 14:29:00 -- Dim Total As Integer Dim Amount As Double With DataTables("产品表") Total = .Compute("count(产品名称)","产品名称 = \'" & CurrentTable.current("产品名称") & "\' ") End With Output.Show("相同产品的个数:" & Total) |