以文本方式查看主题

-  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行产品相同,则不允许输入,并弹出提示框“已经存在相同的产品”如何实现呢?


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

 

项目如下:

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:琼富塑料管理系统n_0912.zip

[此贴子已经被作者于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  不行呀

 


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

--  作者:狐狸爸爸
--  发布时间:2011/9/12 16:49:00
--  

DataColChanged事件:

 

Select Case  e.DataCol.Name
    Case "第一列","第二列","第三列"
    Dim dr As DataRow
    dr = e.DataTable.Find("第一列 = \'" & e.DataRow("第一列") & "\' And 第二列 = \'" & e.DataRow("第二列") & "\' And 第三列 = \'" & e.DataRow("第三列") & "\'")
    If dr IsNot Nothing Then
        e.DataRow(e.DataCol.Name) = Nothing
    End If
End Select


--  作者: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)