0

我正在尝试使用我的字段中的一个模块进行查询,该查询查找培训的频率以及某个员工的到期时间。我有一个表格,其中包含所有员工信息(Workday_Excel_Update)以及培训课程编号,他何时注册以及是否完成。我还有第二张表,其中包含所有培训编号(CourseNumbers)、培训应该完成的月份和频率(以月为单位)。

我在模块中编写了用作字段的代码,但我不断收到以下错误:

“你作为查询参数输入的表达式产生了这个错误:'Microsoft Access 找不到你在表达式中输入的名称'CourseNum'”

dlookup 的原因是为了找到课程编号的相应日期和频率。

CourseNumbers 表具有以下字段: -CourseNumber -CourseName -Frequency(即月-日) -Months(再次需要培训之前的频率)

如果有人能告诉我原因,如果您有解决方案,我将不胜感激。

我的模块查询图像

在此处输入图像描述

Function getDueDate(CourseNum As String)


Dim yearCounter As Integer
Dim yearStart As Date
Dim yearNow As Integer
Dim monthFreq As Integer
Dim daysDue As Integer

If Not IsNull(DLookup("[Months]", "CourseNumbers", "CourseNumber = CourseNum")) Then

 
monthFreq = DLookup("[Months]", "CourseNumbers", "CourseNumber = CourseNum")

yearStart = DLookup("[Frequency]", "CourseNumbers", "CourseNumber = CourseNum")

yearCounter = Year(yearStart)

yearNow = Year(Date)

While yearCounter <= yearNow
    
    yearStart = DateAdd("m", monthFreq, yearStart)
    
    yearCounter = yearCounter + (monthFreq / 12)
    
Wend

daysDue = DateDiff("d", Date, yearStart)

Else

daysDue = 0

End If


getDueDate = daysDue

End Function
4

1 回答 1

0

CourseNum是一个变量。您不要在引号内包含变量。

您也没有指定该字段 CourseNumber是文本字段还是数字字段,因此根据此,您希望:

替换"CourseNumber = CourseNum"(在所有 3 个地方):

如果是数字字段,请将其替换为:

"CourseNumber = " & CourseNum 

如果是文本字段,请将其替换为:

"CourseNumber = '" & CourseNum & "'"

不相关:如果您的字段是文本,那么您可能不应该将其命名为包含“数字”一词的名称。

于 2021-12-02T00:45:55.237 回答