以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  值对于 Decimal 太大或太小  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=175816)

--  作者:狐表(小白)
--  发布时间:2022/3/20 15:20:00
--  值对于 Decimal 太大或太小
如图,鼠标点击<YW_销售生产单明细>表中最长的那行\'来源\'列提示错误,其它行不会提示,SQL server 数据对应数据列类型是nvarchar(500),<YW_销售生产单明细>表数据是通过存储过程从<YW_销售订单拆单明细>表插入过来的,代码如下,执行完成后也不报错。数据来源表<YW_销售订单拆单明细> 中的 \'来源\' 是通过这种方式处理过的  dr("来源")= dr("来源").PadLeft(2,"0")

存储过程代码:

INSERT INTO YW_销售生产单明细
......

SELECT
......

 [来源]= stuff((SELECT distinct \',\' + [来源] F ROM YW_销售订单拆单明细 t  

  WHERE t.产品名称=[YW_销售订单拆单明细].产品名称 and t.产品分类=[YW_销售订单拆单明细].产品分类  and t.产品型号=[YW_销售订单拆单明细].产品型号

  and t.订单编号=@订单编号  FOR xml path(\'\')),1,1,\'\')  
........


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2022/3/20 17:40:00编辑过]

--  作者:有点蓝
--  发布时间:2022/3/20 21:11:00
--  
调试看是那一句代码出现的错误
--  作者:狐表(小白)
--  发布时间:2022/3/21 10:39:00
--  
 AfterSelRangeChange 事件代码在计算求和、平均值时报的错,怎么修改?
代码:
Dim str As String = ""
        Dim t As Table =CurrentTable
        If Tables.contains(t.name)=False Then Return
        
        With e.NewRange
            Dim t1 As Integer=iif(t.Rows.Count-1<.TopRow,t.Rows.Count-1,.TopRow)
            Dim t2 As Integer=iif(t.Cols.Count-1<.LeftCol,t.Cols.Count-1,.LeftCol)
            Dim t3 As Integer=iif(t.Rows.Count-1<.BottomRow,t.Rows.Count-1,.BottomRow)
            Dim t4 As Integer=iif(t.Cols.Count-1<.RightCol,t.Cols.Count-1,.RightCol)
            If t.Aggregate(AggregateEnum.Sum, t1, t2, t3, t4) <> Nothing Then
                Str = Str & "求和:" & t.Aggregate(AggregateEnum.Sum, t1, t2, t3, t4) & "       "
                Str = Str & "计数:" & t.Aggregate(AggregateEnum.Count, t1, t2, t3, t4) & "  "
                Str = Str & "平均值:" & t.Aggregate(AggregateEnum.Average, t1, t2, t3, t4)
            Else
                Str = Str & "计数:" & t.Aggregate(AggregateEnum.Count, t1, t2, t3, t4) & "  "
            End If
        End With

--  作者:有点蓝
--  发布时间:2022/3/21 10:50:00
--  
应该是求和的问题,求和后的值超过电脑高精度能够表示的范围了。


try
3楼代码
catch
End try