以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=89167)

--  作者:xh2207
--  发布时间:2016/8/16 16:07:00
--  [求助]
 

当订单表中只要存在过品名和型号规格时,在商品表中相同的品名和型号规格行不能删除和修改,但计量单位和单价列可以修改。

当订单表中未存在过品名和型号规格时,在商品表中相同的品名和型号规格行能删除和修改,计量单位和单价列也能修改。


目的:当期只要在订单表中出现过的商品,均不能在商品表中删除或修改品名和规格型号;否侧当期内,在订单表中未出现过的商品,均能在商品表中删除或修改。

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


--  作者:大红袍
--  发布时间:2016/8/16 16:12:00
--  
If e.DataCol.Name = "品名" Or e.DataCol.Name = "型号规格"  Then
    Dim dr As DataRow
    dr = DataTables("订单").Find("品名 = \'" & e.DataRow("品名") & "\' And 型号规格 = \'" & e.DataRow("型号规格") & "\'")
    If dr IsNot Nothing Then
        MessageBox.Show("此订单号已经存在!")
        e.Cancel = True
    End If
End If

--  作者:xh2207
--  发布时间:2016/8/16 16:19:00
--  

试过,行,这问题纠结了很久,还是未理解透教程。谢谢大红袍。


--  作者:xh2207
--  发布时间:2016/8/20 9:26:00
--  

@大红袍    上次请教你并得到你的帮助,得 以实现这功能: 当期只要在订单表中出现过的商品,均不能在商品表中删除或修改品名和规格型号;否侧当期内,在订单表中未出现过的商品,均能在商品表中删除或修改。

但还不完善,无论订单表中是否出现过,均可以直接删除该行,这是不允许的。只要在订单表中出现过的商品,不允许在商品表中直接删除该行,不能在商品表中删除或修改品名和规格型号,其他列可以修改,如计量单位、单价列可以修改。


--  作者:Hyphen
--  发布时间:2016/8/20 9:32:00
--  
参考:http://www.foxtable.com/webhelp/scr/0605.htm

具体问题上传实例

--  作者:xh2207
--  发布时间:2016/8/20 10:58:00
--  

实例

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


--  作者:Hyphen
--  发布时间:2016/8/20 11:31:00
--  
商品表

BeforeDeleteDataRow事件
If DataTables("订单").Find("品名=\'" & e.DataRow("品名") & "\' and 型号规格=\'" & e.DataRow("型号规格") & "\'") IsNot Nothing Then
    msgbox("不能删除")
    e.Cancel = True
End If

PrepareEdit事件
Select Case e.Col.Name
    Case "品名","型号规格"
        If DataTables("订单").Find("品名=\'" & e.Row("品名") & "\' and 型号规格=\'" & e.Row("型号规格") & "\'") IsNot Nothing Then
            e.Cancel = True
        End If
End Select