以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]交叉统计日期分组漏日期  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=12147)

--  作者:zhangqinyun
--  发布时间:2011/8/24 12:02:00
--  [求助]交叉统计日期分组漏日期

如统计工资表:

         01日  02日  04日  05日  。。。

张三      30     40    30     20

李四      20     30    50     40

 

03日由于休息没工资,统计的时候03日就没了。

虽然标题上有日期,但是对应的列名确是

01日 金额_1

02日 金额_2

04日 金额_3

05日 金额_4

于是我统计后放入模板上就变成了。

 

         01日  02日  03日  04日  。。。

张三      30     40    30     20

李四      20     30    50     40

 

怎么办啊


--  作者:紙上不談兵
--  发布时间:2011/8/24 12:04:00
--  
紙上不談兵,用實例說話!
--  作者:狐狸爸爸
--  发布时间:2011/8/24 12:05:00
--  
生成之后,在用代码从统计表删除这些没有用的日期列
[此贴子已经被作者于2011-8-24 12:04:39编辑过]

--  作者:qhczy
--  发布时间:2011/8/24 12:31:00
--  
03日的,可以用0填充,或删除03日.
--  作者:zhangqinyun
--  发布时间:2011/8/24 12:47:00
--  

不是啊!

我需要的报表是这样的:

         01日  02日  03日  04日  05日  。。。

张三      30     40              30     20

李四      20     30              50     40

 

但是现在确是:

         01日  02日  03日  04日  。。。

张三      30     40    30     20

李四      20     30    50     40

 

 

我的代码:

Dim Filter As String = "[姓名]<>\'\'"
Dim Y As Integer = Forms("选择月份").Controls("TextBox1").Value
Dim M As Integer = Forms("选择月份").Controls("TextBox2").Value
Dim SD As Date = New Date(Y,M,1)
Dim Days As Integer = Date.DaysInMonth(Y,M)
Dim ED As Date = New Date(Y,M,Days)
Filter = Filter & "And [日期] >= #" & SD & "# And [日期]<= #" & ED & "#"
If Forms("选择月份").Controls("CheckBox1").Checked = False Then
    Filter = Filter & "And [部门]<>\'C\'"
End If
If Forms("选择月份").Controls("CheckBox2").Checked = False Then
    Filter = Filter & "And [部门]<>\'G\'"
End If
If Forms("选择月份").Controls("CheckBox3").Checked = False Then
    Filter = Filter & "And [部门]<>\'I\'"
End If
If Forms("选择月份").Controls("CheckBox4").Checked = False Then
    Filter = Filter & "And [部门]<>\'开后\'"
End If
If Forms("选择月份").Controls("CheckBox5").Checked = False Then
    Filter = Filter & "And [部门]<>\'小后\'"
End If
If Forms("选择月份").Controls("CheckBox6").Checked = False Then
    Filter = Filter & "And [部门]<>\'观澜\'"
End If
If Forms("选择月份").Controls("CheckBox7").Checked = False Then
    Filter = Filter & "And [部门]<>\'机器房\'"
End If
Dim g As New CrossTableBuilder("计件工资", DataTables("计件表"), Filter)
g.HGroups.AddDef("部门")
g.HGroups.AddDef("姓名")
g.VGroups.AddDef("日期", DateGroupEnum.Day, "{0}日")
g.Totals.AddDef("金额", "金额")
g.HorizontalTotal = True
g.VerticalTotal = True
g.Decimals = 1
g.Build()
Dim Book As New XLS.Book(ProjectPath & "Attachments\\计件工资模板.xls")
Dim fl As String = ProjectPath & "Reports\\计件工资" & Y & "-" & M & ".xls"
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Book.Build() \'生成细节区
Book.Save(fl) \'保存工作簿
Dim Proc As New Process \'打开工作簿
Proc.File = fl
Proc.Start()


--  作者:紙上不談兵
--  发布时间:2011/8/24 13:48:00
--  
上傳文件,給你搞定!
--  作者:zhangqinyun
--  发布时间:2011/8/24 14:44:00
--  

我细说一下

我需要的报表是这样的(Excel)

         01日  02日  03日  04日  05日  。。。

张三      30     40              30     20

李四      20     30              50     40

 

但是现在确是:

         01日  02日  03日  04日  。。。

张三      30     40    30     20

李四      20     30    50     40

 

在员工计件里面的月末基本工资统计

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


--  作者:狐狸爸爸
--  发布时间:2011/8/24 15:08:00
--  

代码在哪个表的那个窗口?你说的员工计件表和月末基本工资统计窗口,我没找到

 


--  作者:zhangqinyun
--  发布时间:2011/8/24 15:26:00
--  
导航进去
--  作者:狐狸爸爸
--  发布时间:2011/8/24 15:49:00
--  
Dim Filter As String = "[姓名]<>\'\'"
Dim Y As Integer = Forms("选择月份").Controls("TextBox1").Value
Dim M As Integer = Forms("选择月份").Controls("TextBox2").Value
Dim SD As Date = New Date(Y,M,1)
Dim Days As Integer = Date.DaysInMonth(Y,M)
Dim ED As Date = New Date(Y,M,Days)
Filter = Filter & "And [日期] >= #" & SD & "# And [日期]<= #" & ED & "#"
If Forms("选择月份").Controls("CheckBox1").Checked = False Then
    Filter = Filter & "And [部门]<>\'C\'"
End If
If Forms("选择月份").Controls("CheckBox2").Checked = False Then
    Filter = Filter & "And [部门]<>\'G\'"
End If
If Forms("选择月份").Controls("CheckBox3").Checked = False Then
    Filter = Filter & "And [部门]<>\'小线\'"
End If
If Forms("选择月份").Controls("CheckBox4").Checked = False Then
    Filter = Filter & "And [部门]<>\'开后\'"
End If
If Forms("选择月份").Controls("CheckBox5").Checked = False Then
    Filter = Filter & "And [部门]<>\'小后\'"
End If
If Forms("选择月份").Controls("CheckBox6").Checked = False Then
    Filter = Filter & "And [部门]<>\'佳洁云\'"
End If
Dim g As New CrossTableBuilder("计件工资", DataTables("计件表"), Filter)
g.HGroups.AddDef("部门")
g.HGroups.AddDef("姓名")
g.VGroups.AddDef("日期", DateGroupEnum.Day, "{0}日")
g.Totals.AddDef("金额", "金额")
g.HorizontalTotal = True
g.VerticalTotal = True
g.Decimals = 1
g.Build()
Dim Book As New XLS.Book(ProjectPath & "Attachments\\计件工资模板.xls")
Dim fl As String = ProjectPath & "Reports\\计件工资" & Y & "-" & M & ".xls"
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Book.Build() \'生成细节区
Sheet = Book.Sheets(0)
For i As Integer = sheet.Cols.Count - 1 To 0 Step -1
    Dim nm As String = sheet(1,i).text
    If nm.EndsWith("日")
        If Tables("计件工资").Cols.Contains("金额_" & val(nm)) = False Then
            Sheet.Cols.RemoveAt(i)
        End If
    End If
Next
Book.Save(fl) \'保存工作簿
Dim Proc As New Process \'打开工作簿
Proc.File = fl
Proc.Start()
Forms("选择月份").Close