Foxtable(狐表)用户栏目专家坐堂 → 同表查找价格与跨表查找价格


  共有2627人关注过本帖树形打印复制链接

主题:同表查找价格与跨表查找价格

美女呀,离线,留言给我吧!
DLW77
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:188 积分:1699 威望:0 精华:0 注册:2018/2/26 13:15:00
同表查找价格与跨表查找价格  发帖心情 Post By:2018/5/11 18:21:00 [只看该作者]

老师,我想在这个表中填入单价,有两种条件,1.如果“来源”列中是销货单、领料单时,查找同表中上一行的单价,就是3.2元的单价填入第5行的单价中。2.如果“来源”列是生产入库单、进货单时,在生产入库明细表或进货明细表中,查找与“单据”列相同的单据号的产品单价。
请老师指导一下,这个代码怎么写?想了很久也没想明白。
图片点击可在新窗口打开查看此主题相关图片如下:o(ekp8)dr1zt$y9s%i)h5y9.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/11 19:01:00 [只看该作者]


 回到顶部
美女呀,离线,留言给我吧!
DLW77
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:188 积分:1699 威望:0 精华:0 注册:2018/2/26 13:15:00
代码是否有错?重置后没数据  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/14 17:43:00 [只看该作者]

单独写代码


Select Case e.DataCol.Name
    Case "品号","单据", "来源", "单价"
        msgbox(123)
        Dim dr As DataRow = e.DataRow
        If dr("来源") = "销货单" OrElse dr("来源") = "领料单" Then
            Dim pr = DataTables("出入库明细").Find("品号 = '" & dr("品号") & "' and _Identify < " & dr("_Identify"), "_Identify desc")
            If pr IsNot Nothing Then
                dr("单价") = pr("单价")
            End If
        End If
End Select

[此贴子已经被作者于2018/5/15 15:27:17编辑过]

 回到顶部
美女呀,离线,留言给我吧!
DLW77
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:188 积分:1699 威望:0 精华:0 注册:2018/2/26 13:15:00
写代码重置列后,出现了错误信息  发帖心情 Post By:2018/5/15 15:17:00 [只看该作者]

写代码重置列后,出现的错误信息是:

错误所在事件:表,出入库明细, DataColChanged
详细错误信息:
调用的目标发生了异常。
未将对象引用设置到对象的实例。


MSGBOX(123)是什么意思?弹出了这个窗口,但我是要把值填到当前行的单价中,不是要弹出窗口显示。

[此贴子已经被作者于2018/5/15 15:19:45编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/15 15:27:00 [只看该作者]

代码改成这样

 

Select Case e.DataCol.Name
    Case "品号","单据", "来源", "单价"
        msgbox(123)
        Dim dr As DataRow = e.DataRow
        If dr("来源") = "销货单" OrElse dr("来源") = "领料单" Then
            Dim pr = DataTables("出入库明细").Find("品号 = '" & dr("品号") & "' and _Identify < " & dr("_Identify"), "_Identify desc")
            If pr IsNot Nothing Then
                dr("单价") = pr("单价")
            End If
        End If
End Select


 回到顶部
美女呀,离线,留言给我吧!
DLW77
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:188 积分:1699 威望:0 精华:0 注册:2018/2/26 13:15:00
填入重置后,没显示单价  发帖心情 Post By:2018/5/15 16:05:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:l)1gjhxl1b}m`459fh7px6.png
图片点击可在新窗口打开查看

 回到顶部
美女呀,离线,留言给我吧!
DLW77
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:188 积分:1699 威望:0 精华:0 注册:2018/2/26 13:15:00
明白哪里有问题了,谢谢  发帖心情 Post By:2018/5/15 16:08:00 [只看该作者]

明白哪里有问题了,谢谢

 回到顶部
美女呀,离线,留言给我吧!
DLW77
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:188 积分:1699 威望:0 精华:0 注册:2018/2/26 13:15:00
同表中需要跨两个表引用数据,但只能显示一个表的内容  发帖心情 Post By:2018/5/18 15:49:00 [只看该作者]

我先做了个跨表引用“出入库成本表”引用了数据出来,但在另一个跨表引用数据时,就没办法引出数据。是不是我代码哪里出错了?
图片点击可在新窗口打开查看此主题相关图片如下:xj76v5ka827x8t(gtvuhnuh.png
图片点击可在新窗口打开查看

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


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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

 回到顶部
总数 14 1 2 下一页