以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 阶梯价格取出  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=151820)

--  作者:susanhe
--  发布时间:2020/7/4 12:04:00
--  [求助] 阶梯价格取出
老师,有个难题帮忙解决一下,从表B中取出相应的单价和供应商到表A相应列中,其中价格是根据表B中数量的不同而取出的。,在窗口1中如何实现 ?实在难点难了,谢谢。



--  作者:susanhe
--  发布时间:2020/7/4 12:05:00
--  
附上实列。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:阶梯价格.foxdb


--  作者:有点蓝
--  发布时间:2020/7/4 13:26:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:阶梯价格.zip


--  作者:susanhe
--  发布时间:2020/7/5 9:04:00
--  
谢谢,老师。

还请问一下在表B中,起始数量和结束数量如何来控制录入。

即相同产品时:第一条记录录入 0 到 10, 这个产品的第二条记录就只能从 11开始,不可以从0到10的数量起始,不可以交叉。这样可以吗 ? 谢谢。 

--  作者:有点蓝
--  发布时间:2020/7/5 20:49:00
--  
使用compute获取已录入数据结束数量的最大值,判断起始数量录入的数据不能小于这个最大值,当前行结束数量不能小于起始数量。到datacolchanging数据处理
--  作者:susanhe
--  发布时间:2020/7/6 9:08:00
--  
老师,这个不是很懂,麻烦老师。
--  作者:有点蓝
--  发布时间:2020/7/6 9:33:00
--  
datacolchanging事件

If e.DataCol.Name = "起始数量"
    Dim cnt As Integer = e.DataTable.Compute("max(结束数量)","供应商=\'AA\' and 产品=\'电视机\' and _Identify <" & e.DataRow("_Identify"))
    If cnt >= e.NewValue Then
        msgbox("不能大于结束数量")
        e.Cancel = True
    End If
End If

--  作者:susanhe
--  发布时间:2020/7/6 22:23:00
--  
谢谢老师,可是这个供应商和产品不是固定的,多变的,如何修改,谢谢。
--  作者:有点蓝
--  发布时间:2020/7/6 22:35:00
--  
我是故意这样写的,看看帮助自己思考一下:http://www.foxtable.com/webhelp/topics/1284.htm


--  作者:susanhe
--  发布时间:2020/8/1 14:00:00
--  

教师,麻烦纠正一下。谢谢。

If e.DataCol.Name = "起始数量"
    Dim cnt As Integer = e.DataTable.Compute("max(结束数量)","供应商=e.row() and 产品=e.row( and _Identify <" & e.DataRow("_Identify"))
    If cnt >= e.NewValue Then
        msgbox("不能大于结束数量")
        e.Cancel = True
    End If
End If