DateAdd + DLookup

时间:2012-11-26 21:10:18

标签: vba ms-access

我正在请求一些指导来解决我在尝试编辑数据库中的“AfterUpdate”事件时遇到的问题。它似乎在我的本地机器上正常工作,但当我尝试在网络数据库中实现它时,它无法正常工作(偶尔在其中一个字段中放入一个随机日期,不会删除我提供新的日期ID等。)

以下是我的VBA代码:

Private Sub provider_surveyID_AfterUpdate()

provider_survey_dueDate = DateAdd("ww", 2, DLookup("completed_on",
 "qry_ProviderSurveyInfo", "provider_surveyID=" & provider_surveyID))
provider_survey_reminder2weeks = DateAdd("ww", 4, DLookup("completed_on", 
 "qry_ProviderSurveyInfo", "provider_surveyID=" & provider_surveyID))
provider_survey_reminder4weeks = DateAdd("ww", 6, DLookup("completed_on", 
 "qry_ProviderSurveyInfo", "provider_surveyID=" & provider_surveyID))

End Sub

查询正确,将调查ID加入相应的参与者,以确定DateAdd函数中使用的原始“completed_on”日期。

你能看到为什么它不能像在本地那样工作的原因 - 在输入当前未使用的ID时删除日期?另外,认为在这个实例中使用Nz(provider_surveyID,0)是明智的吗?我还没有实现它,因为我想让它正常工作,因为它在我的本地没有任何问题 - 我输入ID,它填充;我输入20(尚未使用),它使所有日期再次为空。

1 个答案:

答案 0 :(得分:1)

Dlookups使用起来既慢又棘手,在未输入Criteria时也会返回随机值。我不确定你的表格是如何组合在一起的(我假设它是一个表格),这可能是一个部分答案:

Private Sub provider_surveyID_AfterUpdate()
Dim dtComplete as Date

If IsNull(provider_serveyID) then
    provider_survey_dueDate=""
    provider_survey_reminder2weeks=""
    provider_survey_reminder4weeks=""
Else
    dtComplete = DLookup("completed_on","qry_ProviderSurveyInfo", "provider_surveyID=" & provider_surveyID)
    provider_survey_dueDate=DateAdd("ww",2,dtComplete)
    provider_survey_reminder2weeks=DateAdd("ww",4,dtComplete)
    provider_survey_reminder4weeks=DateAdd("ww",6,dtComplete)
End if
End sub