以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  统计  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=51281)

--  作者:发财
--  发布时间:2014/5/23 11:21:00
--  统计
Forms("录入窗口").Close()
DataTables("收购").LoadFilter = "[日期] Between #" & vars("ddate") & "# And #" & vars("vdate") & "#"
DataTables("收购").Load()
DataTables("销售").LoadFilter = "[日期] Between #" & vars("ddate") & "# And #" & vars("vdate") & "#"
DataTables("销售").Load()
Dim drs As List(Of DataRow)
drs = DataTables("收购").Select("[重量] > 0")
Dim dr As List(Of DataRow)
dr = DataTables("销售").Select("[重量] > 0")
If vars("ddate") > vars("vdate") Or drs.count = 0 Or dr.count = 0 Then
    Dim aa As WinForm.DateTimePicker = e.Form.Controls("起始日期")
    Dim bb As WinForm.DateTimePicker = e.Form.Controls("终止日期")
    Dim cc As WinForm.TextBox = e.Form.Controls("收购头数")
    Dim dd As WinForm.TextBox = e.Form.Controls("收购重量")
    Dim ee As WinForm.textBox = e.Form.Controls("收购金额")
    Dim ff As WinForm.TextBox = e.Form.Controls("销售头数")
    Dim gg As WinForm.TextBox = e.Form.Controls("销售重量")
    Dim hh As WinForm.TextBox = e.Form.Controls("销售金额")
    Dim zz As WinForm.TextBox = e.Form.Controls("商品损耗")
    aa.Text=""
    bb.Text=""
    cc.Text=""
    dd.text=""
    ee.Text=""
    ff.Text=""
    gg.Text=""
    hh.text=""
    zz.text=""
    MessageBox.Show("统计日期范围收购或销售数据为零!")
    
ElseIf vars("ddate") <= vars("vdate") And drs.count > 0 And dr.count > 0 Then
    vars("Suma") =  DataTables("收购").Compute("Sum(头数)", "[日期] >= #" & Vars("ddate") & "# and [日期] <= #" & Vars("vdate") & "#")
    vars("Sumb") =  DataTables("收购").Compute("Sum(重量)", "[日期] >= #" & Vars("ddate") & "# and [日期] <= #" & Vars("vdate") & "#")
    vars("Sumc") =  DataTables("收购").Compute("Sum(收购金额)","[日期] >= #" & Vars("ddate") & "# and [日期] <= #" & Vars("vdate") & "#")
    vars("Sumaa") =  DataTables("销售").Compute("Sum(份数)", "[日期] >= #" & Vars("ddate") & "# and [日期] <= #" & Vars("vdate") & "#")
    vars("Sumbb") =  DataTables("销售").Compute("Sum(重量)", "[日期] >= #" & Vars("ddate") & "# and [日期] <= #" & Vars("vdate") & "#")
    vars("Sumcc") =  DataTables("销售").Compute("Sum(金额)", "[日期] >= #" & Vars("ddate") & "# and [日期] <= #" & Vars("vdate") & "#")
    vars("xx7") =  DataTables("收购").Compute("Sum(商品损耗)", "[日期] >= #" & Vars("ddate") & "# and [日期] <= #" & Vars("vdate") & "#")
End If
Dim dl As List(Of DataRow)
dl = DataTables("收购").Select("[商品损耗] > 0")
If dl.count = 0 Then
    MessageBox.Show("商品损耗为零!")
Else
    If vars("suma") = vars("sumaa") Then
        Forms("统计窗口").controls("label13").text = "收购与销售头数相同."
    Else
        Forms("统计窗口").controls("label13").text = "收购与销售头数不相同."
    End If
    If vars("sumb") = vars("sumbb") +vars("xx7") Then
        Forms("统计窗口").controls("label14").text = "收购与销售重量相同."
    Else
        Forms("统计窗口").controls("label14").text = "收购与销售重量不相同."
    End If
End If

--  作者:发财
--  发布时间:2014/5/23 11:21:00
--  
.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2014.5.6.1
错误所在事件:窗口,统计窗口,Button1,Click
详细错误信息:
Cannot set Column \'xx7\' to be null. Please use DBNull instead.

--  作者:发财
--  发布时间:2014/5/23 11:22:00
--  
我已将xx7的初始值设为0。
--  作者:发财
--  发布时间:2014/5/23 11:22:00
--  
为什么还会出现这种情况?
--  作者:Bin
--  发布时间:2014/5/23 11:26:00
--  
上个例子卡看
--  作者:有点甜
--  发布时间:2014/5/23 11:26:00
--  
 代码没错,请上传例子。
--  作者:发财
--  发布时间:2014/5/23 14:34:00
--  
当收购表中的商品损耗尚未输入数值时,就出现这种情况,当我全部将商品损耗列赋值为0时,就不出现这种情况,应该如何改变?
--  作者:有点甜
--  发布时间:2014/5/23 14:56:00
--  
以下是引用发财在2014-5-23 14:34:00的发言:
当收购表中的商品损耗尚未输入数值时,就出现这种情况,当我全部将商品损耗列赋值为0时,就不出现这种情况,应该如何改变?

 

代码没错,其它地方错了,请上例子。


--  作者:发财
--  发布时间:2014/5/23 15:58:00
--  
   vars("xx7") =  DataTables("收购").Compute("Sum(商品损耗)", "[日期] >= #" & Vars("ddate") & "# and [日期] <= #" & Vars("vdate") & "#")
代码中DataTables("收购").Compute("Sum(商品损耗)", "[日期] >= #" & Vars("ddate") & "# and [日期] <= #" & Vars("vdate") & "#")为空值时,出现错误,应如何修改?

--  作者:Bin
--  发布时间:2014/5/23 16:04:00
--  
判断一下.如果出现空值不执行.

if  Vars("ddate") <> "" andalso Vars("vdate") <> "" then
     vars("xx7") =  DataTables("收购").Compute("Sum(商品损耗)", "[日期] >= #" & Vars("ddate") & "# and [日期] <= #" & Vars("vdate") & "#")
end if