Foxtable(狐表)用户栏目专家坐堂 → 报错请教:值不能为 null,参数名: key


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

主题:报错请教:值不能为 null,参数名: key

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


加好友 发短信
等级:童狐 帖子:299 积分:2563 威望:0 精华:0 注册:2018/2/3 10:48:00
报错请教:值不能为 null,参数名: key  发帖心情 Post By:2021/11/15 19:30:00 [显示全部帖子]

如下代码:主要问题在第一行,如果这行去掉不报错,但这一行不能去掉。

DataTables("员工统计").datarows.clear  '清空全部行
Dim f As New Filler
f.SourceTable = DataTables("员工档案") '指定数据来源
f.SourceCols = "员工编号" '指定数据来源列
f.DataTable = DataTables("员工统计") '指定数据接收表
f.DataCols = "员工编号" '指定数据接收列
f.Filter = "[员工状态]='在职'or [员工状态]='试用期'" '指定填充条件
f.Append = False '在原有行中填充,行不够再增加新行
f.Fill() '填充数据


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


加好友 发短信
等级:童狐 帖子:299 积分:2563 威望:0 精华:0 注册:2018/2/3 10:48:00
  发帖心情 Post By:2021/11/15 19:33:00 [显示全部帖子]

试了一下,以开发者身份登录,好象不会报错,正常运行。

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


加好友 发短信
等级:童狐 帖子:299 积分:2563 威望:0 精华:0 注册:2018/2/3 10:48:00
  发帖心情 Post By:2021/11/15 19:50:00 [显示全部帖子]

只有开发者身份可以,其他管理员身份也是报错

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


加好友 发短信
等级:童狐 帖子:299 积分:2563 威望:0 精华:0 注册:2018/2/3 10:48:00
  发帖心情 Post By:2021/11/15 20:42:00 [显示全部帖子]

有的,第一行之前是这个:
If DataTables.Contains("员工统计") = False
    DataTables.Load("员工统计")
End If

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


加好友 发短信
等级:童狐 帖子:299 积分:2563 威望:0 精华:0 注册:2018/2/3 10:48:00
  发帖心情 Post By:2021/11/15 20:58:00 [显示全部帖子]

一个菜单命令,其他没有什么
If DataTables.Contains("员工统计") = False
    DataTables.Load("员工统计")
End If
DataTables("员工统计").datarows.clear  '删除全部行
Dim f As New Filler
f.SourceTable = DataTables("员工档案") '指定数据来源
f.SourceCols = "员工编号" '指定数据来源列
f.DataTable = DataTables("员工统计") '指定数据接收表
f.DataCols = "员工编号" '指定数据接收列
f.Filter = "[员工状态]='在职'or [员工状态]='试用期'" '指定填充条件
f.Append = False '在原有行中填充,行不够再增加新行
f.Fill() '填充数据
Dim t As Table = Tables("员工统计")
t.DefaultRowHeight  = 28 '所有行高
t.SysStyles("Alternate").BackColor = Color.FromARGB(224,224,224)
t.Grid.Styles("Normal").Border.Color = Color.SkyBlue
Forms("员工统计窗口").open
Tables("员工统计").OpenView("员工统计")
MainTable = Tables("员工统计")

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


加好友 发短信
等级:童狐 帖子:299 积分:2563 威望:0 精华:0 注册:2018/2/3 10:48:00
  发帖心情 Post By:2021/11/15 21:10:00 [显示全部帖子]

true
0


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


加好友 发短信
等级:童狐 帖子:299 积分:2563 威望:0 精华:0 注册:2018/2/3 10:48:00
  发帖心情 Post By:2021/11/15 21:18:00 [显示全部帖子]

开发者登录,只运行这段也是true,0
而且不管点多少次都不报错。

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


加好友 发短信
等级:童狐 帖子:299 积分:2563 威望:0 精华:0 注册:2018/2/3 10:48:00
  发帖心情 Post By:2021/11/15 21:25:00 [显示全部帖子]

在11 之后 12之前报错



If DataTables.Contains("员工统计") = False
    DataTables.Load("员工统计")
End If
msgbox(DataTables.Contains("员工统计")) 
msgbox(DataTables("员工统计").datarows.count) '能不能弹出,弹出什么内容?
DataTables("员工统计").datarows.clear  '删除全部行
msgbox(DataTables("员工统计").datarows.count) 
Dim f As New Filler
f.SourceTable = DataTables("员工档案") '指定数据来源
f.SourceCols = "员工编号" '指定数据来源列
f.DataTable = DataTables("员工统计") '指定数据接收表
f.DataCols = "员工编号" '指定数据接收列
f.Filter = "[员工状态]='在职'or [员工状态]='试用期'" '指定填充条件
msgbox(10) 
f.Append = False '在原有行中填充,行不够再增加新行
msgbox(11) 
f.Fill() '填充数据
msgbox(12) 
Dim t As Table = Tables("员工统计")
t.DefaultRowHeight  = 28 '所有行高
t.SysStyles("Alternate").BackColor = Color.FromARGB(224,224,224)
t.Grid.Styles("Normal").Border.Color = Color.SkyBlue
Forms("员工统计窗口").open
Tables("员工统计").OpenView("员工统计")
MainTable = Tables("员工统计")

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


加好友 发短信
等级:童狐 帖子:299 积分:2563 威望:0 精华:0 注册:2018/2/3 10:48:00
  发帖心情 Post By:2021/11/16 9:50:00 [显示全部帖子]

上面代码这样是没有问题的,员工编号顺利加载。

另:
员工档案加载了,最前面加上
If DataTables.Contains("员工档案") = False
    DataTables.Load("员工档案")
End If
也是一样报错。
[此贴子已经被作者于2021/11/16 9:51:34编辑过]

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


加好友 发短信
等级:童狐 帖子:299 积分:2563 威望:0 精华:0 注册:2018/2/3 10:48:00
  发帖心情 Post By:2021/11/16 9:55:00 [显示全部帖子]

员工统计表只有datacolchanged事件
If e.DataCol.Name = "员工编号" Then '发生变化的是人员编号吗?
    Dim dr As DataRow
    dr = DataTables("员工档案").Find("员工编号 = '" & e.DataRow("员工编号") & "'" )
    If dr IsNot Nothing '如果找到, 则设置各列内容
        e.DataRow("姓名")= dr("姓名")
    End If
End If
If e.DataCol.Name = "员工编号" Then '发生变化的是产品列.
    Dim Today As Date = Date.Today
    Dim year As Integer = Today.Year
    '则累计订单表中同名产品总的销售量,然后赋值给变动行的数量列
    e.DataRow("借款金额") = DataTables("员工借款").Compute("Sum(借款金额)","[员工编号] = '" & e.NewValue & "' And [借款年度] = " &  year & "")
    e.DataRow("报销金额") = DataTables("报销垫款").Compute("Sum(报销金额)","[员工编号] = '" & e.NewValue & "' And [报销年度] = " &  year & "")
    e.DataRow("借款余额") = e.DataRow("借款金额") - e.DataRow("报销金额")
    e.DataRow("销售线索") = DataTables("项目信息").Compute("Sum(线索折算量)","[销售负责人] = '" & e.DataRow("姓名") & "' And [线索年度] = " &  year & "")
    e.DataRow("项目规模") = DataTables("项目信息").Compute("Sum(项目规模)","[销售负责人] = '" & e.DataRow("姓名") & "' And [项目年度] = " &  year & "")
    e.DataRow("项目数量") = DataTables("项目信息").Compute("Count(项目编号)","[销售负责人] = '" & e.DataRow("姓名") & "' And [项目年度] = " &  year & "")
    e.DataRow("销售漏斗") = DataTables("项目信息").Compute("Sum(名义销售漏斗值)","[销售负责人] = '" & e.DataRow("姓名") & "' And [项目年度] = " &  year & "")
    e.DataRow("A级项目规模") = DataTables("项目信息").Compute("Sum(项目规模)","[销售负责人] = '" & e.DataRow("姓名") & "' And [项目年度] = " &  year & " And [项目等级] = 'A级'")
    e.DataRow("A级项目数量") = DataTables("项目信息").Compute("Count(项目编号)","[销售负责人] = '" & e.DataRow("姓名") & "' And [项目年度] = " &  year & " And [项目等级] = 'A级'")
    e.DataRow("已签约额") = DataTables("合同台账").Compute("Sum(名义结算金额)","[销售负责人] = '" & e.DataRow("姓名") & "' And [合同年度] = " &  year & "")
    e.DataRow("已回款额") = DataTables("合同台账").Compute("Sum(已回款金额)","[销售负责人] = '" & e.DataRow("姓名") & "' And [合同年度] = " &  year & "")
    e.DataRow("应收金额") = DataTables("合同台账").Compute("Sum(欠款金额)","[销售负责人] = '" & e.DataRow("姓名") & "' And [合同年度] = " &  year & "")
    e.DataRow("已开fa piao额") = DataTables("合同台账").Compute("Sum(已开piao金额)","[销售负责人] = '" & e.DataRow("姓名") & "' And [合同年度] = " &  year & "")
End If

 回到顶部
总数 17 1 2 下一页