使用从vb6到ms访问的查询计算总天数

时间:2013-04-14 17:32:02

标签: sql database vb6 ms-access-2007

我正在使用带有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

tblpayroll:

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

查询2013年4月之后,将添加1名员工1天的总工作时间,结果将保存到Totalhoursworkfor1month。

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

尝试过的代码:

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

1 个答案:

答案 0 :(得分:1)

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

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

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所以不能再帮忙了。你的整个项目可以在访问中完成吗?