以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 同表查找价格与跨表查找价格 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=118830) |
-- 作者:DLW77 -- 发布时间:2018/5/11 18:21:00 -- 同表查找价格与跨表查找价格 老师,我想在这个表中填入单价,有两种条件,1.如果“来源”列中是销货单、领料单时,查找同表中上一行的单价,就是3.2元的单价填入第5行的单价中。2.如果“来源”列是生产入库单、进货单时,在生产入库明细表或进货明细表中,查找与“单据”列相同的单据号的产品单价。 |
-- 作者:有点甜 -- 发布时间:2018/5/11 19:01:00 -- 找上一行,参考代码
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=118797&skin=0
跨表引用,参考
http://www.foxtable.com/webhelp/scr/1451.htm
|
-- 作者:DLW77 -- 发布时间:2018/5/14 17:35:00 -- 代码是否有错?重置后没数据 Select Case e.DataCol.Name Case "品号","单据" Dim dr As DataRow = e.DataRow Dim pr As DataRow If dr.IsNull("品号") OrElse dr.IsNull("单据") Then dr("单价") = Nothing Else Dim filter1 As String filter1 = "品号 = \'" & dr("品号") & "\' And 进退货单号 = \'" & dr("单据") & "\'" pr = DataTables("进退货明细").Find(filter1) If pr IsNot Nothing Then dr("单价") = pr("单价") End If If dr.IsNull("品号") OrElse dr.IsNull("单据") Then dr("单价") = Nothing Else Dim filter2 As String filter2 = "主件品号 = \'" & dr("品号") & "\' And 生产入库单号 = \'" & dr("单据") & "\'" pr = DataTables("生产日报表").Find(filter2) If pr IsNot Nothing Then dr("单价") = pr("材料单价") End If If dr.IsNull("品号") OrElse dr.IsNull("单据") Then dr("单价") = Nothing Else Dim filter3 As String filter3 = "主件品号 = \'" & dr("品号") & "\' And 进退货单号 = \'" & dr("单据") & "\'" pr = DataTables("委外日报表").Find(filter3) If pr IsNot Nothing Then dr("单价") = pr("单价") End If If dr.IsNull("品号") OrElse dr.IsNull("单据") Then dr("单价") = Nothing Else Dim filter4 As String filter4 = "品号 = \'" & dr("品号") & "\' And 单据 = \'" & dr("单据") & "\'" pr = DataTables("期初结存").Find(filter4) If pr IsNot Nothing Then dr("单价") = pr("单价") End If If dr("单价") Is Nothing Then pr = DataTables("出入库明细").Find("品号 = \'" & dr("品号") & "\' and _Identify < " & dr("_Identify"), "_Identify desc") dr("单价") = pr("单价") End If End If End If End If End If End Select 代码红色前面的,都按代码填入了,但是红色部份,按重置键后,都没反映。我这个代码想要的效果是:如果单价列为空值的,就查找上一行的单价,并填到空值行的单价中。图中有一行的销售单,可以填入单价8.0795,但后面的都没填入。还有,我这些代码能简化吗?19303902
此主题相关图片如下:%~@64g$hyk1u6y@ngg_c.png [此贴子已经被作者于2018/5/14 17:37:51编辑过]
|
-- 作者:有点甜 -- 发布时间:2018/5/14 17:43:00 -- 单独写代码
[此贴子已经被作者于2018/5/15 15:27:17编辑过]
|
-- 作者:DLW77 -- 发布时间:2018/5/15 15:17:00 -- 写代码重置列后,出现了错误信息 写代码重置列后,出现的错误信息是: 错误所在事件:表,出入库明细, DataColChanged 详细错误信息: 调用的目标发生了异常。 未将对象引用设置到对象的实例。 MSGBOX(123)是什么意思?弹出了这个窗口,但我是要把值填到当前行的单价中,不是要弹出窗口显示。 [此贴子已经被作者于2018/5/15 15:19:45编辑过]
|
-- 作者:有点甜 -- 发布时间:2018/5/15 15:27:00 -- 代码改成这样
Select Case e.DataCol.Name |
-- 作者:DLW77 -- 发布时间:2018/5/15 16:05:00 -- 填入重置后,没显示单价 此主题相关图片如下:l)1gjhxl1b}m`459fh7px6.png |
-- 作者:DLW77 -- 发布时间:2018/5/15 16:08:00 -- 明白哪里有问题了,谢谢 明白哪里有问题了,谢谢 |
-- 作者:DLW77 -- 发布时间:2018/5/18 15:49:00 -- 同表中需要跨两个表引用数据,但只能显示一个表的内容 Select Case e.DataCol.Name Case "生产入库单号","子件品号","主件品号" Dim dr As DataRow = e.DataRow Dim pr As DataRow If dr.IsNull("子件品号") OrElse dr.IsNull("耗用量") Then dr("单价") = Nothing Else Dim filter1 As String filter1 = "品号 = \'" & dr("子件品号") & "\' And 单号 = \'" & dr("生产入库单号") & "\'" pr = DataTables("出入库成本").Find(filter1) If pr IsNot Nothing Then dr("单价") = pr("结存单价") End If If dr.IsNull("子件品号") OrElse dr.IsNull("耗用量") Then dr("单价") = Nothing Else Dim filter2 As String filter2 = "成品品号 = \'" & dr("主件品号") & "\' And 半成品品名 = \'" & dr("子件品号") & "\'" pr = DataTables("半成品成本").Find(filter2) If pr IsNot Nothing Then dr("单价") = pr("成本单价") End If End If End If |
-- 作者:有点甜 -- 发布时间:2018/5/18 16:06:00 -- Select Case e.DataCol.Name Case "生产入库单号","子件品号","主件品号" Dim dr As DataRow = e.DataRow Dim pr As DataRow Dim filter1 As String filter1 = "品号 = \'" & dr("子件品号") & "\' And 单号 = \'" & dr("生产入库单号") & "\'" pr = DataTables("出入库成本").Find(filter1) If pr IsNot Nothing Then dr("单价") = pr("结存单价") Else Dim filter2 As String filter2 = "成品品号 = \'" & dr("主件品号") & "\' And 半成品品名 = \'" & dr("子件品号") & "\'" pr = DataTables("半成品成本").Find(filter2) If pr IsNot Nothing Then dr("单价") = pr("成本单价") Else dr("单价") = Nothing End If End If End Select |