在Access 2013中的最后修改记录上插入日期/时间

时间:2016-05-03 20:22:25

标签: access-vba ms-access-2013 datediff

我构建了一个简单的时钟数据库。该表有四列:

  • ID(自动编号)
  • 雇员
  • TimeIn(日期/时间)
  • TimeOut(日期/时间)。

员工只能看到一个带有两个按钮的表单,即“时钟输入”和“时钟输出”。 每个按钮都有一个On Click事件,可以在fOSUserNameNow()TimeInTimeOut下添加新记录,具体取决于点击的按钮。

所有这些都很有效,但是,我需要一份报告来显示每天的工作小时数。为了获得准确DateDiff()的报告,TimeInTimeOut数据必须位于同一行。我已经尝试过LastModified,MovePrevious / MoveNext和IfNull,我无法在同一行上获取TimeOut而无需手动移动它。

2 个答案:

答案 0 :(得分:0)

不完美,但你可以从这样的事情开始:

update clock 
set timeOut =  Now()
where employeeId = fOsUsername()
and id in (select top 1 id from clock where employeeId = fOsUsername() 
                  and timeOut is null and timeIn > Date()-1
                  order by id desc
          )    

答案 1 :(得分:0)

你可以这样做:

Select
    EmployeeID,
    Sum(TimeIn) As ClockIn,
    Sum(TimeOut) As ClockOut
From
    YourClockTable
Group By
    EmployeeID,
    DateValue(Nz(TimeIn, TimeOut))