Foxtable(狐表)用户栏目专家坐堂 → 求助这种表怎么设计


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

主题:求助这种表怎么设计

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


加好友 发短信
等级:三尾狐 帖子:629 积分:4915 威望:0 精华:0 注册:2014/2/25 15:50:00
求助这种表怎么设计  发帖心情 Post By:2014/6/18 15:41:00 [显示全部帖子]

我有一个员工管理表,里面有姓名列、上岗日期列 离职日期列 
佣金明细表里面有性名列 佣金列 
由于佣金明细表里面有部分人没有业绩 自然就没有名字 只有员工管理表里面有所有的名字 但我只想要2014年5月29日至2014年6月28日上过班的人的名字并计算该员工在这个时间段的佣金合计  请问该如何设计这个佣金统计表呢 这个佣金统计表是自动生成吧


员工有可能涉及到2014年6月2号来然后6月20号就走了,这种也要包含在内  如果员工在职那么离职日期就是空的

不知道能实现我说的功能不 请帮帮忙
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb


[此贴子已经被作者于2014-6-18 16:01:49编辑过]

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


加好友 发短信
等级:三尾狐 帖子:629 积分:4915 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2014/6/18 16:04:00 [显示全部帖子]

每笔佣金都有个结佣日 

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


加好友 发短信
等级:三尾狐 帖子:629 积分:4915 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2014/6/18 16:33:00 [显示全部帖子]

bin老师 那个赵六并没有离职 应该在这表中显示 这就是重点

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


加好友 发短信
等级:三尾狐 帖子:629 积分:4915 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2014/6/18 16:38:00 [显示全部帖子]

是的 就是因为有些人没有佣金 我原来用交叉数据统计就统计不出来没有佣金的人员 所以想通过员工管理表来调用 
还应该有行 赵六 佣金为0

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


加好友 发短信
等级:三尾狐 帖子:629 积分:4915 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2014/6/18 16:41:00 [显示全部帖子]

应该是先调取员工管理表里面在这段时间内在职的人员(不管上满月没有)然后再来导入佣金列的数据 

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


加好友 发短信
等级:三尾狐 帖子:629 积分:4915 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2014/6/18 16:50:00 [显示全部帖子]

请问如何就员工管理表的上岗日期和离职日期来筛选2014年5月29日至6月28日在职的员工名单呢

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


加好友 发短信
等级:三尾狐 帖子:629 积分:4915 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2014/6/18 17:18:00 [显示全部帖子]

If e.Form.Controls("DateTimePicker1").Value Is Nothing AndAlso e.Form.Controls("DateTimePicker2").Value Is Nothing Then
    Tables("窗口1_Table1").Fill("select 姓名,门店,职务,结佣日,sum(佣金) as 佣金 from (select * from {员工管理} a inner join {佣金明细} b on a.姓名=b.员工姓名 where b.结佣日 >= #2014-05-29# and b.结佣日 <= #2014-06-28#) group by 姓名,门店,职务,结佣日",True)
Else
    Tables("窗口1_Table1").Fill("select 姓名,门店,职务,结佣日,sum(佣金) as 佣金 from (select * from {员工管理} a inner join {佣金明细} b on a.姓名=b.员工姓名 where b.结佣日 >= #" & e.Form.Controls("DateTimePicker1").Value & "# And b.结佣日 <= #" & e.Form.Controls("DateTimePicker2").Value & "#) group by 姓名,门店,职务,结佣日",True)
End If

请问老师 我想实现 上岗日期早于等于"DateTimePicker2" and 离职日期 = 空值 和 离职日期晚于等于"DateTimePicker1" and 离职日期 早于"DateTimePicker2"来显示员工姓名列 然后统计结佣日在"DateTimePicker1"and "DateTimePicker2"范围内的佣金 在这个表上加个上岗日期和离职日期列能实现不呢
[此贴子已经被作者于2014-6-18 17:18:44编辑过]

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


加好友 发短信
等级:三尾狐 帖子:629 积分:4915 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2014/6/18 17:49:00 [显示全部帖子]

我原来的代码是

'=========生成佣金业绩表=========

Dim filter As String = "1=1"

With e.Form.Controls("ComboBox1")

    If .Value IsNot Nothing Then

        Filter = "所属区域 = '" & .Value & "'"

    End If

End With

With e.Form.Controls("ComboBox2")

    If .Value IsNot Nothing Then

        If Filter > "" Then

            Filter = Filter & " And "

        End If

        Filter = Filter & "门店 = '" & .Value & "'"

    End If

End With

With e.Form.Controls("ComboBox3")

    If .Value IsNot Nothing Then

        If Filter >"" Then

            Filter = Filter & " And "

        End If

        Filter = Filter & "员工姓名 = '" & .Value & "'"

    End If

End With

With e.Form.Controls("startDate")

    If .Text > "" Then

        filter &= " and 结佣日 >= '" & .text & "'"

    End If

End With

 

With e.Form.Controls("EndDate")

    If .Text > "" Then

        filter &= " and 结佣日 <= '" & .text & "'"

    End If

End With

If e.Form.Controls("rdoYifu").Checked = True ' 如果付款状态选择了"已付"

    If Filter >"" Then

        Filter = Filter & " And "

    End If

    Filter = Filter & "状态 Is Not Null"

End If

If e.Form.Controls("rdoWeifu").Checked = True ' 如果付款状态选择了"未付"

    If Filter >"" Then

        Filter = Filter & " And "

    End If

    Filter = Filter & "状态 Is Null"

End If

 



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


加好友 发短信
等级:三尾狐 帖子:629 积分:4915 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2014/6/18 17:50:00 [显示全部帖子]


Dim g As New SQLCrossTableBuilder("佣金业绩表","佣金明细")

g.ConnectionName = "外部数据源"

g.HGroups.AddDef("门店")

g.HGroups.AddDef("员工姓名")

g.VGroups.AddDef("类型")

g.Totals.AddDef("佣金", "佣金")

g.Totals.AddDef("套数", "套数")

g.OrderByTotal = True

g.HorizontalTotal = True

g.VerticalTotal = True

g.Decimals = 2

g.Subtotal = True

g.Filter = Filter

g.Build()

MainTable = Tables("佣金业绩表")

Forms("佣金业绩表").show()

MainTable = Tables("LILY")



以上代码不能实现显示所有在职人员 下面代码可以解决这个问题 但问题又来了 我是新手 不知道怎么把这两个代码合并到一起来

'=========生成佣金业绩=========

Dim dt As DataTable = DataTables("佣金业绩")

dt.DataRows.Clear

Dim d1 As Date = new Date(2014,5,29) 

Dim d2 As Date = new Date(2014,6,28)

Dim filter1 As String = "结佣日 >= #" & d1 & "# and 结佣日 <= #" & d2 & "#"

Dim filter2 As String = "离职日期 >= #" & d1 & "# and 离职日期 <= #" & d2 & "# or 上岗日期 >= #" & d1 & "# and 离职日期 is null"

For Each dr As DataRow In DataTables("员工管理").Select(filter2)

    Dim ndr As DataRow = dt.AddNew

    ndr("员工姓名") = dr("姓名")

    ndr("门店") = dr("门店")

    ndr("职务") = dr("职务")

    ndr("佣金") = DataTables("佣金明细").Compute("sum(佣金)", filter1 & " and 员工姓名 = '" & dr("姓名") & "'")

    ndr("结佣日") = DataTables("佣金明细").Compute("max(结佣日)", filter1 & " and 员工姓名 = '" & dr("姓名") & "'")

Next

[此贴子已经被作者于2014-6-18 17:49:53编辑过]

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


加好友 发短信
等级:三尾狐 帖子:629 积分:4915 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2014/6/18 17:58:00 [显示全部帖子]

日期是用两个日期输入框"startDate"代表(2014.5.29)和"EndDate"代表(2014.6.28)的

 回到顶部
总数 33 1 2 3 4 下一页