Access 2007 请求 SQL Server 日期和时间

Posted

技术标签:

【中文标题】Access 2007 请求 SQL Server 日期和时间【英文标题】:Access 2007 Requesting SQL Server Date and Time 【发布时间】:2020-10-29 15:10:26 【问题描述】:

我正在运行 MS Access 2007 前端和 SQL 2014 服务器后端。

我有一个计时系统,可以跟踪员工的时间。员工可以使用多台计算机登录/退出并跟踪他们的时间并用于支付工资,因此确保其正常工作非常重要。

我们遇到了计算机日期和时间混乱的问题。这导致了工资单方面的各种问题。理想的解决方案是始终使用服务器的日期/时间,这样我们就有了一个跟踪时间的黄金标准。

基本上在创建记录时,它会将服务器时间戳记为“开始时间”。当用户跟踪他们的时间时,“时间结束”字段会被填写。

是否有某种方法可以让服务器在不使用 Now() 函数访问或查询服务器日期/时间的情况下填写时间戳,以便我可以使用它来填充记录? Now() 函数使用当前系统日期和时间以及导致此问题的原因。

编辑 1:

更新查询见下文

DoCmd.RunSQL "UPDATE dbo_tbl_Timekeeping SET fld_End_Time = Now() WHERE fld_Employee_ID = " & Me.EmployeeID

这里的问题是 Access 无法识别诸如 GETDATE() 之类的函数,它告诉我该函数未定义(参见 this link)

【问题讨论】:

向我们展示您现有的代码将极大地帮助我们帮助您。 SQL Server 有很多获取时间的方法; GETDATE(),SYSDATETIME(),SYSDATETIMEUTC(),SYSDATETIMEOFFSET(),CURRENT_TIMESTAMP.... 澄清点:问题应该是:有没有办法用服务器时间填写“时间结束”字段,因为该字段开始为空并且刚刚被更新? 那么使用计算机时间作为开始时间,使用服务器时间作为时间结束?好吧,我将 PC 的时钟更改为 7 小时前,然后我将立即退出。 :) 这个想法是该服务器同时处理...开始和结束 【参考方案1】:

为此使用传递查询。 Doc link 在那里您可以使用所有 SQL Server 函数。

例如使用已保存的 PT 查询,如图所示 here:

With CurrentDb.QueryDefs("MyPass")
  .SQL = "UPDATE dbo.tbl_Timekeeping SET fld_End_Time = GETDATE() WHERE fld_Employee_ID = " & Me.EmployeeID
  .Execute
End With

注意不要使用链接表名称 (dbo_...),而是使用 SQL Server 中显示的名称 (dbo. ...)。

或者如here所示那样即时创建它 但要运行操作查询,您必须设置

qdf.ReturnsRecords = False

【讨论】:

这非常有效!我使用 Access 中的直通查询设计器创建查询并使用 VBA 执行它,但直通查询正是我所需要的。谢谢!

以上是关于Access 2007 请求 SQL Server 日期和时间的主要内容,如果未能解决你的问题,请参考以下文章

将表从 SQL Server 2008 复制到 MS Access 2007

从 Microsoft Access 2007 迁移到 Sql Server 2005

MS Access 2007 查询不在 SQL Server 2008 上运行

从 SQL Server 2008 迁移到 MS access 2007

如何在 MS Access 2007 或 MS SQL Server 2005 中通过 SQL 将字段转换为行

使用 SSMA 将 Access 2007 数据库应用程序迁移到 SQL Server 2005 - 问题