以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]代码运行问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=54069)

--  作者:utcxray
--  发布时间:2014/7/21 13:39:00
--  [求助]代码运行问题

If e.DataCol.Name = "单价" Then \'如果正在输入的是单价列
    If e.newvalue IsNot Nothing Then \'如果已经输入内容

        Dim dr As DataRow = DataTables("采购明细").Find("[型号] = \'" & e.Datarow("型号") & "\'")
        Dim v As Double = Val(e.newValue)
        If v <> dr("单价")  Then \'将输入的内容与以往同名产品价格做比较.
            MessageBox.Show("此价格与历往价格有差异,确定要修改,请在价格较低的型号后加"特价"两字,否则系统将无法区分!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Information)           
            e.Cancel = True \'则取消输入
        End If
    End If
End If


此段代码在DATACOLCHANGING中,现在价格中输入与原来一样的价格,他也说价格有差异,为什么


--  作者:有点甜
--  发布时间:2014/7/21 14:00:00
--  
  是不是你的采购明细表,同一个型号,有多行的内容?不唯一导致了查找到的不是对应的行?

--  作者:utcxray
--  发布时间:2014/7/21 14:02:00
--  
采购明细表中同一型号是有多行内容,分布记录着不同时期不同批次的采购明细
--  作者:utcxray
--  发布时间:2014/7/21 14:06:00
--  
正是因为同一型号有不同时期不同批次的产品,数据多了,我要在每次输入同一型号时找以前采购过的价格信息,做判断。
--  作者:有点甜
--  发布时间:2014/7/21 14:22:00
--  
 那你查找的时候,要查的,是那一次的采购单价?最近一次?还是怎样?必须要有一个规则的。

--  作者:有点甜
--  发布时间:2014/7/21 14:22:00
--  
 如果要查最后一次,代码这样写

Dim dr As DataRow = DataTables("采购明细").Find("[型号] = \'" & e.Datarow("型号") & "\'", "采购日期 desc")

--  作者:utcxray
--  发布时间:2014/7/21 15:04:00
--  谢谢!有点甜
这的确是个问题,我再考虑下