Foxtable(狐表)用户栏目专家坐堂 → 求助


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

主题:求助

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


加好友 发短信
等级:一尾狐 帖子:419 积分:3316 威望:0 精华:0 注册:2012/3/21 10:44:00
求助  发帖心情 Post By:2012/4/22 18:52:00 [只看该作者]

运行下面代码出错

Select Case e.DataCol.Name
    Case   "产品名称","产品颜色","产品规格","销售价"  

        Dim Filter As String  = "产品型号 =" & e.DataRow("产品型号")
        Dim drs As List(of DataRow) = DataTables("订单明细表").Select(Filter) 

        For Each dr As DataRow In drs
            dr("产品名称") = e.DataRow("产品名称")
            If dr.Locked = False AndAlso dr("已发货") = False  

                dr("销售价") = e.DataRow("销售价")
            End If
        Next
    Case  "产品型号"
        Dim Filter As String  = "产品型号 =" & e.DataRow("产品型号")
        e.DataRow("销售_数量") = DataTables("订单明细表").Compute("Sum(数量)", Filter)
        e.DataRow("销售_金额") = DataTables("订单明细表").Compute("Sum(金额)", Filter)
        e.DataRow("未发货订单_数量") = DataTables("订单明细表").Compute("Sum(数量)", Filter & " And 已付款 = true")
        e.DataRow("未发货订单_金额") = DataTables("订单明细表").Compute("Sum(金额)", Filter & " And 已付款 = true")

If e.DataCol.Name = "产品型号"
    Dim pr As DataRow
    If e.NewValue Is Nothing Then
        e.DataRow("销售价") = Nothing
        e.DataRow("产品名称") = Nothing
    Else
        pr = DataTables("产品信息表").Find("[产品型号] = " & e.NewValue)
        If pr IsNot Nothing Then
            e.DataRow("销售价") = pr("销售价")
            e.DataRow("产品名称") = pr("产品名称")
            If e.OldValue <> e.NewValue Then '如果新旧产品编号不同.
                DataTables("产品信息表").DataCols("产品型号").RaiseDataColChanged(pr)

            End If
        End If
     End If
     If e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then 

        pr = DataTables("产品信息表").Find("[产品型号] = " & e.OldValue)
        If pr IsNot Nothing Then
            DataTables("产品信息表").DataCols("产品型号").RaiseDataColChanged(pr)

        End If
     End If
End If
Select Case e.DataCol.Name
    Case "数量","折扣","已付款","销售价"
        If e.OldValue <> e.NewValue Then
            Dim pr As DataRow
            pr = DataTables("产品信息表").Find("[产品型号] = " & e.DataRow("产品型号") )
            If pr IsNot Nothing Then
                DataTables("产品信息表").DataCols("产品型号").RaiseDataColChanged(pr)
            End If
        End If
End Select


此主题相关图片如下:4-22.jpg
按此在新窗口浏览图片

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40574 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2012/4/22 19:09:00 [只看该作者]

Select Case e.DataCol.Name
    Case   "产品名称","产品颜色","产品规格","销售价"
        Dim Filter As String  = "产品型号 = '" & e.DataRow("产品型号") & "'"
        Dim drs As List(of DataRow) = DataTables("订单明细表").Select(Filter)
        For Each dr As DataRow In drs
            dr("产品名称") = e.DataRow("产品名称")
            If dr.Locked = False AndAlso dr("已发货") = False
                dr("销售价") = e.DataRow("销售价")
            End If
        Next
    Case  "产品型号"
        Dim Filter As String  = "产品型号 = '" & e.DataRow("产品型号") & "'"
        e.DataRow("销售_数量") = DataTables("订单明细表").Compute("Sum(数量)", Filter)
        e.DataRow("销售_金额") = DataTables("订单明细表").Compute("Sum(金额)", Filter)
        e.DataRow("未发货订单_数量") = DataTables("订单明细表").Compute("Sum(数量)", Filter & " And 已付款 = true")
        e.DataRow("未发货订单_金额") = DataTables("订单明细表").Compute("Sum(金额)", Filter & " And 已付款 = true")
       
       
        If e.DataCol.Name = "产品型号"
            Dim pr As DataRow
            If e.NewValue Is Nothing Then
                e.DataRow("销售价") = Nothing
                e.DataRow("产品名称") = Nothing
            Else
                pr = DataTables("产品信息表").Find("[产品型号] = '" & e.NewValue & "'")
                If pr IsNot Nothing Then
                    e.DataRow("销售价") = pr("销售价")
                    e.DataRow("产品名称") = pr("产品名称")
                    If e.OldValue <> e.NewValue Then '如果新旧产品编号不同.
                        DataTables("产品信息表").DataCols("产品型号").RaiseDataColChanged(pr)
                    End If
                End If
            End If
            If e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
                pr = DataTables("产品信息表").Find("[产品型号] = '" & e.OldValue & "'")
                If pr IsNot Nothing Then
                    DataTables("产品信息表").DataCols("产品型号").RaiseDataColChanged(pr)
                   
                End If
            End If
        End If
        Select Case e.DataCol.Name
            Case "数量","折扣","已付款","销售价"
                If e.OldValue <> e.NewValue Then
                    Dim pr As DataRow
                    pr = DataTables("产品信息表").Find("[产品型号] = '" & e.DataRow("产品型号") & "'")
                    If pr IsNot Nothing Then
                        DataTables("产品信息表").DataCols("产品型号").RaiseDataColChanged(pr)
                    End If
                End If
        End Select
End Select


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


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40574 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2012/4/22 19:24:00 [只看该作者]

从代码逻辑看,这样效果应该一样,有些判断有些多余:

 

Select Case e.DataCol.Name
    Case   "产品名称","产品颜色","产品规格","销售价"
        Dim Filter As String  = "产品型号 = '" & e.DataRow("产品型号") & "'"
        Dim drs As List(of DataRow) = DataTables("订单明细表").Select(Filter)
        For Each dr As DataRow In drs
            dr("产品名称") = e.DataRow("产品名称")
            If dr.Locked = False AndAlso dr("已发货") = False
                dr("销售价") = e.DataRow("销售价")
            End If
        Next
    Case  "产品型号"
        Dim Filter As String  = "产品型号 = '" & e.DataRow("产品型号") & "'"
        e.DataRow("销售_数量") = DataTables("订单明细表").Compute("Sum(数量)", Filter)
        e.DataRow("销售_金额") = DataTables("订单明细表").Compute("Sum(金额)", Filter)
        e.DataRow("未发货订单_数量") = DataTables("订单明细表").Compute("Sum(数量)", Filter & " And 已付款 = true")
        e.DataRow("未发货订单_金额") = DataTables("订单明细表").Compute("Sum(金额)", Filter & " And 已付款 = true")
        Dim pr As DataRow
        If e.NewValue Is Nothing Then
            e.DataRow("销售价") = Nothing
            e.DataRow("产品名称") = Nothing
        Else
            pr = DataTables("产品信息表").Find("[产品型号] = '" & e.NewValue & "'")
            If pr IsNot Nothing Then
                e.DataRow("销售价") = pr("销售价")
                e.DataRow("产品名称") = pr("产品名称")
                If e.OldValue <> e.NewValue Then '如果新旧产品编号不同.
                    DataTables("产品信息表").DataCols("产品型号").RaiseDataColChanged(pr)
                End If
            End If
        End If
        If e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
            pr = DataTables("产品信息表").Find("[产品型号] = '" & e.OldValue & "'")
            If pr IsNot Nothing Then
                DataTables("产品信息表").DataCols("产品型号").RaiseDataColChanged(pr)
               
            End If
        End If
    Case "数量","折扣","已付款","销售价"
        If e.OldValue <> e.NewValue Then
            Dim pr As DataRow
            pr = DataTables("产品信息表").Find("[产品型号] = '" & e.DataRow("产品型号") & "'")
            If pr IsNot Nothing Then
                DataTables("产品信息表").DataCols("产品型号").RaiseDataColChanged(pr)
            End If
        End If
End Select


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


加好友 发短信
等级:一尾狐 帖子:419 积分:3316 威望:0 精华:0 注册:2012/3/21 10:44:00
  发帖心情 Post By:2012/4/23 10:27:00 [只看该作者]

谢谢你程老师!

我的问提解决了


 回到顶部