Foxtable(狐表)用户栏目专家坐堂 → 动态筛选求助,请求老师协助


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

主题:动态筛选求助,请求老师协助

帅哥哟,离线,有人找我吗?
Saberzsp
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:76 积分:808 威望:0 精华:0 注册:2013/8/25 9:03:00
动态筛选求助,请求老师协助  发帖心情 Post By:2019/2/18 16:59:00 [只看该作者]

如果产品表和订单表是通过品名、型号、规格这三列联系起来的(不管是否建立了关联),在订单表输入品名、型号、规格后,再从产品表找出对应产品的单价,填入单价列中,那么订单表的DataColChanged事件可如下设置代码:

Select Case e.DataCol.Name
    Case
"品名","型号",
"规格"
       
Dim dr As DataRow = e.DataRow
       
Dim pr As DataRow
       
If dr.IsNull("品名") OrElse dr.IsNull("型号") OrElse dr.IsNull("规格") Then
            dr(
"单价") = Nothing
       
Else
           
Dim filter As String
            filter =
"品名 = '" & dr("品名") & "' And 型号 = '" & dr("型号") & "' And 规格 = '" & dr("规格") & "'"
            pr =
DataTables("产品").Find(filter)
            If
pr IsNot Nothing
Then
                dr(
"单价") = pr("单价")
            End
If
       
End If
End
Select


想请教老师,如果规格为空字符能否实现单价能显示,哪位能帮忙改一下?谢谢!

[此贴子已经被作者于2019/2/18 17:08:05编辑过]

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/2/18 17:46: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 filter As String
If dr.IsNull("规格")
    filter = "品名 = '" & dr("品名") & "' And 型号 = '" & dr("型号") & "' And 规格 is null"
Else
    filter = "品名 = '" & dr("品名") & "' And 型号 = '" & dr("型号") & "' And 规格 = '" & dr("规格") & "'"
End If
            pr = 
DataTables("产品").Find(filter)
            If
 pr IsNot Nothing 
Then
                dr(
"单价") = pr("单价")
            End
 
If
        
End If
End
 Select

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


加好友 发短信
等级:幼狐 帖子:76 积分:808 威望:0 精华:0 注册:2013/8/25 9:03:00
  发帖心情 Post By:2019/2/20 9:35:00 [只看该作者]

谢谢有点蓝老师

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


加好友 发短信
等级:幼狐 帖子:76 积分:808 威望:0 精华:0 注册:2013/8/25 9:03:00
  发帖心情 Post By:2019/2/21 11:27:00 [只看该作者]

有点蓝老师,动态筛选超过4个好像就不太好用了,测试了很多次,显示不全?
[此贴子已经被作者于2019/2/21 11:28:00编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
奶粉大王
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:168 积分:1814 威望:0 精华:0 注册:2018/1/26 16:11:00
  发帖心情 Post By:2019/2/21 11:31:00 [只看该作者]

代码贴出来 肯定漏写了参数

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


加好友 发短信
等级:幼狐 帖子:76 积分:808 威望:0 精华:0 注册:2013/8/25 9:03:00
  发帖心情 Post By:2019/2/21 15:58: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 filter As String
            filter = "名称 = '" & dr("名称") & "' And 规格型号 = '" & dr("规格型号") & "' And 材质 = '" &dr("材质") & "' And 技术参数备注 = '" &dr("技术参数备注") & "'And 品牌 = '" &dr("品牌") & "'" 
            pr = DataTables("基础数据").Find(filter)
            If pr IsNot Nothing Then
                dr("图号位号") = pr("图号位号")
            End If
        End If
End Select


老师帮忙看一下,哪里有遗漏,只要删除一个又能正常了

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/2/21 16:27:00 [只看该作者]

哪个列是可以为空的?

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


加好友 发短信
等级:幼狐 帖子:76 积分:808 威望:0 精华:0 注册:2013/8/25 9:03:00
  发帖心情 Post By:2019/2/21 17:07:00 [只看该作者]

If dr.IsNull("规格") OrElse dr.IsNull("其他列")
    filter = "品名 = '" & dr("品名") & "' And 型号 = '" & dr("型号") & "' And (规格 is null OrElse 其他列 is null)"
Else
    filter = "品名 = '" & dr("品名") & "' And 型号 = '" & dr("型号") & "' And 规格 = '" & dr("规格") & "And 其他列 = '" & dr("其他列") & "''"
End If

蓝老师,有多列空值这样写,对吗?

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


加好友 发短信
等级:幼狐 帖子:76 积分:808 威望:0 精华:0 注册:2013/8/25 9:03:00
  发帖心情 Post By:2019/2/21 17:09:00 [只看该作者]

材质或者技术参数列为空

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/2/21 17:24:00 [只看该作者]

Select Case e.DataCol.Name
    Case "名称","规格型号","材质","技术参数备注","品牌"
        Dim dr As DataRow = e.DataRow
        Dim pr As DataRow
        If dr.IsNull("名称") OrElse dr.IsNull("规格型号") OrElse dr.IsNull("品牌")  Then
            dr("图号位号") = Nothing
        Else
            Dim filter As String
            filter = "名称 = '" & dr("名称") & "' And 规格型号 = '" & dr("规格型号") & "' And 品牌 = '" &dr("品牌") & "'"
            If dr.IsNull("材质") = False
                filter = filter & "' And 材质 = '" &dr("材质") & "'"
            End If
            If dr.IsNull("技术参数备注") = False
                filter = filter & "' And 技术参数备注 = '" &dr("技术参数备注")  & "'"
            End If
            pr = DataTables("基础数据").Find(filter)
            If pr IsNot Nothing Then
                dr("图号位号") = pr("图号位号")
            End If
        End If
End Select

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