以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  临时表的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=132204)

--  作者:edisontsui
--  发布时间:2019/3/16 15:39:00
--  临时表的问题
"员工每月工资报告"是从数据表"日薪计算"之“数据统计”之“分组统计”功能产生出来的临时表。
在"菜单,加上日薪工资,Click"里面有下面的代码:

If User.Group = "行政" Or User.name = "开发者"
    For Each r As Row In Tables("员工每月工资报告").rows
    Dim NY As String = r("年") & r("月")
        If NY > 201902 Then
            If r("成本中心") = "" Or r("姓名") = "" Then
            Else
                For Each dr As DataRow In DataTables("员工每月工资报告").DataRows
                    If dr("年月") = NY And dr("姓名") = r("姓名")
                        dr("计件工资") = r("计件工资")
                        dr("计时工资") = r("计时工资")
                        dr("误餐补贴") = r("餐补")
                        dr("新人补贴") = r("新人补贴")
                        Exit For
                    End If
                Next
            End If
        End If 
    Next
End If

但是当我在“员工每月工资报告”里面执行上述代码后,出现如下警告:

不存在名称为“员工每月工资报告”的table.
.NET Framework 版本:2.0.50727.8793
Foxtable 版本:2017.3.18.1
错误所在事件:菜单,加上日薪工资,Click
详细错误信息:
未将对象引用设置到对象的实例。

请问如何解决这个问题?谢谢。


--  作者:有点蓝
--  发布时间:2019/3/16 16:04:00
--  
If NY > "201902" Then
--  作者:edisontsui
--  发布时间:2019/3/16 16:17:00
--  
还是出现如下警告:
不存在名称为“员工每月工资报告”的table.
未将对象引用设置到对象的实例。

--  作者:有点蓝
--  发布时间:2019/3/16 16:47:00
--  
生成"员工每月工资报告"临时表的代码贴出来
--  作者:edisontsui
--  发布时间:2019/3/16 17:01:00
--  
Dim g As New GroupTableBuilder("统计表2", DataTables("日薪计算"))
g.Caption = "员工每月工资报告"
g.Groups.AddDef("姓名")
g.Groups.AddDef("成本中心")
g.Groups.AddDef("生产日期", DateGroupEnum.Year, "年")
g.Groups.AddDef("生产日期", "月")
g.Totals.AddDef("计件工资")
g.Totals.AddDef("计时工资")
g.Totals.AddDef("餐补")
g.Totals.AddDef("包工工资")
g.Totals.AddDef("新人补贴")
g.Totals.AddDef("工资合计")
g.Decimals = 0
g.Build()
MainTable = Tables("统计表2")

--  作者:有点蓝
--  发布时间:2019/3/16 17:25:00
--  
 "员工每月工资报告"是标题名,引用表要使用表名,不能使用标题名

For Each r As Row In Tables("统计表2").rows

或者

Dim g As New GroupTableBuilder("员工每月工资报告", DataTables("日薪计算"))
……
MainTable = Tables("员工每月工资报告")

--  作者:edisontsui
--  发布时间:2019/4/11 13:56:00
--  

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


If User.Group = "行政" Or User.name = "开发者"
    For Each r As Row In Tables("员工每月工资报告").rows
        Dim NY As String = r("年") & r("月")
        If NY.length = 5
           NY = r("年") & "0" & r("月")
        Else 
           NY = r("年") & r("月")
        End If
        If NY > "201902" Then
            If r("成本中心") = "" Or r("姓名") = "" Then
            Else
                For Each dr As DataRow In DataTables("员工每月工资报告").DataRows
                    If dr("年月") = NY And dr("姓名") = r("姓名")
                        dr("计件工资") = r("计件工资")
                        dr("计时工资") = r("计时工资")
                        dr("误餐补贴") = r("餐补")
                        dr("新人补贴") = r("新人补贴")
                        Exit For
                    End If
                Next
            End If
        End If 
    Next
End If

如上代码执行时,出现如下警告:

.NET Framework 版本:2.0.50727.8793
Foxtable 版本:2017.3.18.1
错误所在事件:菜单,日薪工资导入工资计算,Click
详细错误信息:
列“年月”不属于表 员工每月工资报告。

"员工每月工资报告"里面虽然没有“年月”这栏,但是我已经定义了"NY",但是为什么还是出现警告呢?谢谢。

--  作者:有点甜
--  发布时间:2019/4/11 14:08:00
--  

没看懂你这段代码要实现什么。

 

请具体说明你要做到的效果,并上传具体实例测试。


--  作者:edisontsui
--  发布时间:2019/4/11 16:16:00
--  
我知道问题所在了,这句话要修改一下:For Each dr As DataRow In DataTables("工资计算").DataRows