以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  帮我看看是什么情况?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=141695)

--  作者:hc-mall
--  发布时间:2019/10/8 20:45:00
--  帮我看看是什么情况?
这个是订单表drawcell事件的代码--------
Select Case e.Col.name
    Case "金额"
        If e.Row(e.Col.name) <> "" Then
            If e.Row(e.Col.name)< 100 Then
                e.Style = "小额订单"
            Else If e.Row(e.Col.name) > 20000 Then
                e.Style = "大额订单"
            End If
        End If
    Case "客户"
        If User.Group <> "管理"
            e.Text = "******"
        End If
End Select
这个是统计表DataColChanged事件的代码--------
Select Case e.DataCol.Name
    Case "产品","客户"
        If e.DataRow.IsNull("产品") OrElse e.DataRow.IsNull("客户") Then
            If e.DataRow.IsNull("产品")  And  e.DataRow.IsNull("客户") = False Then
                e.DataRow("数量") = DataTables("订单").Compute("sum(数量)","客户 =\'" & e.DataRow("客户") & "\'")
                e.DataRow("金额") = DataTables("订单").Compute("sum(金额)","客户 =\'" & e.DataRow("客户") & "\'")
            Else If e.DataRow.IsNull("客户") And e.DataRow.IsNull("产品") = False Then
                e.DataRow("数量") = DataTables("订单").Compute("sum(数量)","产品 =\'" & e.DataRow("产品") & "\'")
                e.DataRow("金额") = DataTables("订单").Compute("sum(金额)","产品 =\'" & e.DataRow("产品") & "\'")
            Else
                MessageBox.show("请输入客户或产品信息再进行查询!")
                e.DataRow("数量") = Nothing
                e.DataRow("金额") = Nothing
            End If
        Else
            e.DataRow("数量") = DataTables("订单").Compute("sum(数量)","客户 =\'" & e.DataRow("客户") & "\' and 产品 =\'" & e.DataRow("产品") & "\'")
            e.DataRow("金额") = DataTables("订单").Compute("sum(金额)","客户 =\'" & e.DataRow("客户") & "\' and 产品 =\'" & e.DataRow("产品") & "\'")
        End If
End Select
不知道什么原因,我是不懂!订单表的金额列是表达式列!数据类型选为双精度小数的时候订单表的drawcell事件代码就发生错误,系统都崩溃了,如果改类型改成字符型的,统计表的
DataColChanged事件就发生错误了,无法统计金额合计了!高手给看一下!

--  作者:hc-mall
--  发布时间:2019/10/8 20:48:00
--  
这是订单表的drawcell事件代码就发生错误的截图
[此贴子已经被作者于2019/10/8 20:49:59编辑过]

--  作者:hc-mall
--  发布时间:2019/10/8 20:49:00
--  

此主题相关图片如下:运行错误222111.png
按此在新窗口浏览图片

此主题相关图片如下:运行错误222.png
按此在新窗口浏览图片
统计表的
DataColChanged事件的错误截图
此主题相关图片如下:订单表表结构2222.png
按此在新窗口浏览图片

--  作者:hc-mall
--  发布时间:2019/10/8 20:51:00
--  

此主题相关图片如下:运行错误111.png
按此在新窗口浏览图片

此主题相关图片如下:drawceell事件错误.png
按此在新窗口浏览图片
这是订单表的drawcell事件代码就发生错误的截图
此主题相关图片如下:订单表表结构.png
按此在新窗口浏览图片

--  作者:有点蓝
--  发布时间:2019/10/8 21:03:00
--  
金额改为双精度列

drawcell事件的代码--------
Select Case e.Col.name
    Case "金额"
            If e.Row(e.Col.name)< 100 Then
                e.Style = "小额订单"
            Else If e.Row(e.Col.name) > 20000 Then
                e.Style = "大额订单"
            End If
    Case "客户"
        If User.Group <> "管理"
            e.Text = "******"
        End If
End Select

--  作者:hc-mall
--  发布时间:2019/10/8 21:31:00
--  
我改这样好了,是不是我可以这样理解,双精度小数是有默认值的,默认是空值,不能是“”,不知道理解对了吗?还是谢谢!
Select Case e.Col.name
    Case "金额"
        If e.Row(e.Col.name) IsNot Nothing Then
            If e.Row(e.Col.name)< 100 Then
                e.Style = "小额订单"
            Else If e.Row(e.Col.name) > 20000 Then
                e.Style = "大额订单"
            End If
        End If
    Case "客户"
        If User.Group <> "管理"
            e.Text = "******"
        End If
End Select

--  作者:hc-mall
--  发布时间:2019/10/8 21:31:00
--  
谢谢!
--  作者:有点蓝
--  发布时间:2019/10/8 21:39:00
--  
数值列默认值都是0,""表示空字符串,数值和字符串是不能比较的