以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]怎样把同一人同一月的数据生成到发放记录表中?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=2970)

--  作者:听雪落的声音
--  发布时间:2009/5/31 10:38:00
--  [求助]怎样把同一人同一月的数据生成到发放记录表中?

如题,怎么把人员表中的张三2009年5月工资汇总生成到第二个表中?

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


--  作者:blackzhu
--  发布时间:2009/5/31 11:11:00
--  
以下是引用听雪落的声音在2009-5-31 10:38:00的发言:

如题,怎么把人员表中的张三2009年5月工资汇总生成到第二个表中?

 下载信息  [文件大小:396.0 KB  下载次数:1]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

最简单办法做个关联,将姓名和性别关联起来,将发放记录的工资列改成表达式列.将表达式写成"Sum(Child(工资).工资)",就可以了.
  然后,写上姓名和性别,工资列自然会汇总.


--  作者:yangming
--  发布时间:2009/5/31 11:55:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:把同一人同一月的数据生成到发放记录.table

加了一个月份列
[此贴子已经被作者于2009-5-31 11:55:06编辑过]

--  作者:blackzhu
--  发布时间:2009/5/31 15:18:00
--  
以下是引用blackzhu在2009-5-31 11:11:00的发言:

最简单办法做个关联,将姓名和性别关联起来,将发放记录的工资列改成表达式列.将表达式写成"Sum(Child(工资).工资)",就可以了.
  然后,写上姓名和性别,工资列自然会汇总.

  老六说的,能用表达式解决的,千万不要用代码解决.看附件:

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:工资汇总.table


--  作者:nidecan
--  发布时间:2009/6/1 17:38:00
--  
以下是引用yangming在2009-5-31 11:55:00的发言:
 下载信息  [文件大小:396.0 KB  下载次数:10]
图片点击可在新窗口打开查看点击浏览该文件:把同一人同一月的数据生成到发放记录.table

加了一个月份列
[此贴子已经被作者于2009-5-31 11:55:06编辑过]

可以不加月份列吗?另外年份不能区别


--  作者:yangming
--  发布时间:2009/6/1 18:15:00
--  
你不会将几年的工资表都放在一张表中吧?
--  作者:yangming
--  发布时间:2009/6/1 18:38:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:把同一人同一月的数据生成到发放记录.table

还是要加年和月列,你可以隐藏这两列

--  作者:八婺
--  发布时间:2009/6/1 20:03:00
--  
以下是引用nidecan在2009-6-1 17:38:00的发言:

可以不加月份列吗?另外年份不能区别


将发放记录表的发放日期改成日期型。
发放记录表,DataColChanged事件代码。

Dim dr As DataRow =e.DataRow
if e.DataCol.Name ="发放日期" Then
    if dr.IsNull("发放日期") Then
        dr("工资") = Nothing
    Else
        Dim d As Date = dr("发放日期")
        Dim Month As Integer = d.Month
        Dim Year As Integer = d.Year
        Dim StartDate As Date = New Date(Year,Month,1)
        Dim EndDate As Date = New Date(Year,Month,Date.DaysInMonth(Year,Month))
        dr("工资") = DataTables("人员表").Compute("sum(工资)", "[姓名] = \'" & dr("姓名") & "\' And [开始时间] >= #" & StartDate & "# And [开始时间] <= #" & EndDate & "#")
    End If
End If


--  作者:yangming
--  发布时间:2009/6/2 9:07:00
--  
又学了一招,呵呵
--  作者:yangming
--  发布时间:2009/6/2 9:34:00
--  
学着八婺老师做的,加了一个自动填充姓名及性别的,放在按钮中的

Dim d As Date = Date.Today
Dim y As Integer = d.Year
Dim m As Integer = d.Month
Dim s As Date = New Date(y,m,1)
dim f As New Filler
 f.SourceTable = DataTables("人员表") \'指定数据来源
 f.SourceCols = "姓名,性别" \'指定数据来源列
 f.DataTable = DataTables("发放记录") \'指定数据接收表
 f.DataCols = "姓名,性别" \'指定数据接收列
 f.Fill() \'填充数据
         For Each dr As DataRow In DataTables("发放记录").DataRows
         
 if dr.IsNull("工资") = True Then
               dr("工资") = DataTables("人员表").Compute("Sum(工资)", "[姓名]= \'" & dr("姓名") &  "\' And [开始时间] = \'" & s & "\'")
    if dr.IsNull("发放日期") = True Then
        dr("发放日期") = d
 End If
End If
 Next