Ms access 访问VBA获取DateDiff结果以使用Update SQL语句

Ms access 访问VBA获取DateDiff结果以使用Update SQL语句,ms-access,vba,datediff,Ms Access,Vba,Datediff,我正在使用Access 2007本身,没有连接到SQLserver或用于此过程的任何东西 我想获取一些DateDiff函数的结果,并使用Update SQL语句将它们放入表中的字段中。我的表的字段是数字字段,我的印象是DateDiff返回一个数字 我尝试了这个方法,但是在第一个DateDiff(Pause1)上出现了一个数据类型不匹配错误。我尝试从字段中删除引号,但出现了另一个错误(找不到表达式中引用的字段“|”) 这是我的密码。它真正开始于注释此处的时间报告代码: Private Sub St

我正在使用Access 2007本身,没有连接到SQLserver或用于此过程的任何东西

我想获取一些
DateDiff
函数的结果,并使用Update SQL语句将它们放入表中的字段中。我的表的字段是数字字段,我的印象是
DateDiff
返回一个数字

我尝试了这个方法,但是在第一个
DateDiff
(Pause1)上出现了一个
数据类型不匹配
错误。我尝试从字段中删除引号,但出现了另一个错误(
找不到表达式中引用的字段“|”)

这是我的密码。它真正开始于注释
此处的时间报告代码

Private Sub StopNextButton_Click()
'
GetID = Forms!frm_MainMenu!AssocIDBox
CurRecord = Forms!frm_EC_L1_L2![L#].Value
'
DoCmd.RunSQL "UPDATE tbl_Data SET tbl_Data.[tsEndAll] = Now WHERE tbl_Data.[L#] = " & CurRecord & " AND (tbl_Data.[ECName] Like 'L1*' OR tbl_Data.[ECName] Like 'L2*') "
'
'TIME REPORTING CODE HERE'
'
Pause1 = DateDiff("s", "[tsPause1]", "[tsResume1]")
Pause2 = DateDiff("s", "[tsPause2]", "[tsResume2]")
ECTime = (DateDiff("s", "[tsECStart]", "[tsUpdated]") - (Pause1 + Pause2))
LTime = DateDiff("s", "[tsStartAll]", "[tsEndAll]")
'
DoCmd.RunSQL "UPDATE tbl_Data SET [ECTime] = " & ECTime & ", [LoanTime] = " & LTime & " WHERE tbl_Data.[L#] = " & CurRecord & " AND (tbl_Data.[ECName] Like 'L1*' OR tbl_Data.[ECName] Like 'L2*') "
'
'END OF TIME REPORTING CODE'
'
DoCmd.GoToRecord , , acNext
'
ETC.

根据您的评论,我假设这些字段在您的表单当前“查看”的记录上。如果是这样,您可以将它们称为Me.tsPause1,不带[]或引号。非常确定你也可以只做tsPause1,但我找到了我。tsPause1让你做的事情更加明显

但是,我认为您正在更新当前查看的字段,然后立即尝试访问这些更新的字段。我很确定,在访问这些字段的新值之前,您将需要进行Me.Refresh。如果我错了,希望有更具体经验的人会纠正我。我认为这样的事情应该适合你:

Me.Refresh
Pause1=DateDiff(“s”,Me.tsPause1,Me.tsResume1)
Pause2=DateDiff(“s”,Me.tsPause2,Me.tsResume2)
ECTime=(DateDiff(“s”,Me.tsECStart,Me.T更新)-(暂停1+暂停2))
LTime=DateDiff(“s”,Me.tsStartAll,Me.tsEndAll)

当你说tsPause1或tsresume1时,你认为/打算指什么?表中的字段、窗体上的控件或其他可能的内容?表中包含日期时间值的字段。对不起,谢谢你的提问。没问题,只是想澄清一下。根据我认为您正在尝试做的事情,我已经发布了我认为是以下答案的内容。我希望它能够对许多记录执行此操作,这些记录都由相同的
[L#]
值关联。所以他们不会在表格上。我想我可以把它放在其他地方,让它为每个记录工作,所以这是一个很大的帮助,但是如果我的
DateDiff
所需的所有字段都不在表单上,我该怎么做呢?有点像循环,但只通过与
[L#]
值相关的记录。谢谢为此,您需要熟悉记录集。我建议通过这个链接阅读,艾伦·布朗的网站对所有东西的访问都是令人惊奇的。艾伦·布朗是我的灵兽。我还没有完全掌握唱片集,但我会继续努力。谢谢