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


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

主题:求助

美女呀,离线,留言给我吧!
朱女士
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:469 积分:3803 威望:0 精华:0 注册:2020/2/8 11:14:00
求助  发帖心情 Post By:2020/4/24 10:42:00 [只看该作者]

我的程序有一段不通过,出现了如下错误信息:NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.3.29.8
错误所在事件:窗口,订单核算,Butbegin,Click
详细错误信息:
未将对象引用设置到对象的实例。

我的代码如下,我排查到有误的代码为粉底颜色部分:不知道怎么改。请指教!

Dim dtb As New DataTableBuilder("订单核算表")

dtb.AddDef("制造令号", Gettype(String), 60)
dtb.AddDef("用户", Gettype(String), 12)
dtb.AddDef("订单类别", Gettype(String), 20)
dtb.AddDef("变压器型号", Gettype(String), 26)
dtb.AddDef("净重", Gettype(Double))
dtb.AddDef("毛重", Gettype(Double))
dtb.AddDef("含税金额", Gettype(Double))
dtb.AddDef("供应商", Gettype(String), 8)
dtb.AddDef("原料名称", Gettype(String), 16)
dtb.AddDef("原料规格", Gettype(String), 18)
dtb.AddDef("出库_数量", Gettype(Double))
dtb.AddDef("出库_重量", Gettype(Double))
dtb.AddDef("出库_含税额", Gettype(Double))

dtb.Build()

'计算订单数据
For Each nm As String In DataTables("ddpsb").GetValues("制造令号")
    Dim dr As DataRow = DataTables("订单核算表").AddNew()
    Dim pr As DataRow = DataTables("ddpsb").find("制造令号='" & nm & "'")
    Dim mr As DataRow = DataTables("ylckb").find("zzh='" & nm & "'")
    dr("制造令号") = pr("制造令号")
    dr("用户") = pr("用户")
    dr("订单类别") = pr("订单类别")
    dr("变压器型号") = pr("变压器型号")
    dr("供应商") = mr("供应商")
    dr("原料名称") = mr("ylmc")
    dr("原料规格") = mr("原料规格")
      
    dr("净重") = DataTables("ddpsb").Compute("Sum(净重)","[制造令号] = '" & dr("制造令号") & "'")
    dr("毛重") = DataTables("ddpsb").Compute("Sum(毛重)","[制造令号] = '" & dr("制造令号") & "'")
    dr("含税金额") = DataTables("ddpsb").Compute("Sum(含税金额)","[制造令号] = '" & dr("制造令号") & "'")
   
   
     dr("出库_数量") = DataTables("ylckb").Compute("Sum(出库_数量)","[zzh] = '" & dr("制造令号") & "'")
   
     dr("出库_重量") = DataTables("ylckb").Compute("Sum(出库_重量)","[zzh] = '" & dr("制造令号") & "'")
   
    dr("出库_含税额") = DataTables("ylckb").Compute("Sum(出库_含税额)","[zzh] = '" & dr("制造令号") & "'")
   
Next

'With DataTables("统计").DataCols  '用表达式列计算库存数据
'   .Add("库存_数量",Gettype(Double), "IsNull([期初_数量],0)+isnull([入库_数量],0)-ISNULL([出库_数量],0)")
'   .Add("库存_重量",Gettype(Double), "IsNull([期初_重量],0)+isnull([入库_重量],0)-ISNULL([出库_重量],0)")
'   .Add("库存_含税额",Gettype(Double), "IsNull([期初_含税额],0)+isnull([入库_含税额],0)-ISNULL([出库_含税额],0)")
'End With
MainTable= Tables("订单核算表")
Tables("订单核算_table1").datasource=Tables("订单核算表")


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


加好友 发短信
等级:超级版主 帖子:109728 积分:558356 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/24 10:53:00 [只看该作者]

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=50080

Dim mr As DataRow = DataTables("ylckb").find("zzh='" & nm & "'")
If mr isnot nothing then
    dr("供应商") = mr("供应商")
    dr("原料名称") = mr("ylmc")
    dr("原料规格") = mr("原料规格")
end if

示例三

通常应该在代码中判断是否找到了符合条件的行,然后再运行后续的代码。
例如要找出最近一次订购产品数量超过1000的订单,并显示订单的日期和客户:

Dim dr As DataRow
dr = 
DataTables("订单").Find("数量 > 1000","日期 Desc")
If 
dr IsNot Nothing Then '如果找到的话
    Output.Show(
"日期:" & dr("日期"))
    Output.Show(
"客户:" & dr("客户"))

End If

如果我们不加上判断,直接:

Dim dr As DataRow
dr = 
DataTables("订单").Find("数量 > 1000","日期 Desc")
Output.Show(
"日期:" & dr("日期"))
Output.Show(
"客户:" & dr("客户"
))

一旦订单表并不存在订购数量超过1000的订单,那么Find方法返回Nothing,导致后续代码运行出错。


 回到顶部