0

我正在使用带有 ms 访问权限的 vb6 作为数据库制作工资单系统。我在 ms 访问中有 3 个表,即:

tblemployee,   tblattendance,   tblpayroll

我想获得 2013 年 4 月前所有员工的工资单。所有这些数据都来自 tblattendance。

前任。(有些字段是隐藏的)tblattendance:

        Empid  Day  Month  Year  totalhourworkfor1day  
        1      1    april  2013  8
        2      1    april  2013  5
        1      2    april  2013  8
        2      2    april  2013  5

tbl工资单:

        empid  month  year  Totalhoursworkfor1month
        1      april  2013  16
        2      april  2013  10

查询 2013 年 4 月后,将添加 1 名员工的所有 totalhoursworkfor1day,结果将保存到 Totalhoursworkfor1month。

这个怎么做?考虑到从我的 vb6 中,我只需要选择月份和年份来生成工资单,然后它将显示到列表视图中

试过的代码:

insert into tblpayroll(empid,month,year,hourswork)
select id,month, year, sum(hourswork) from tblattendance where empid=id group by empid;
4

1 回答 1

1

这有帮助吗?日期只是一个字段。我使用了 MinOfWorkDay 以避免在 28、29、30、31 结束的月份出现并发症。但是,如果您想要“月末”,这可以解决。在任何情况下,您都可以将结果格式化为简单地显示月/年。

它可以通过默认为刚刚结束的月份的 HAVING 子句或使用在表单上输入的“从”和“到”日期来进一步增强。

INSERT INTO tblPayroll ( Empid, HoursWorked, MonthEnd )
SELECT tblWork.Empid, Sum(tblWork.WorkHours) AS SumOfWorkHours, Min(tblWork.Workday) AS MinOfWorkday
FROM tblWork
GROUP BY tblWork.Empid
HAVING (((Min(tblWork.Workday)) Between #4/1/2013# And #4/30/2013#));

如果您有更多问题回来,我很乐意提供更多帮助。

4 月 15 日:我嘘!我假设您将在 MS Access 中处理您的数据。我不知道vb6,所以不能再帮忙了。您的整个项目可以在访问中完成吗?

于 2013-04-14T18:50:25.040 回答