我正在尝试过滤仅以电子邮件发送当前记录的表单。我试过做me.filter命令,但似乎无法使语法正确。我提供了以下代码。 “当前日期”字段是日期字段,“发现”,“尾部”和“FleetID”字段是文本字段。我被告知要在me.filter代码中输入表格链接到的表的主键,这样生成的pdf不会打印链接到表单的所有记录。如果您看到我的代码,请告诉我。在此先感谢:)
On Error GoTo errhandle
Me.Filter = "CurrentDate= #" & Me!CurrentDate & "#" And "Discover= '" & Me!Discover & "'" And "Tail= '" & Me!Tail & "'" And "FleetID= '" & Me!FleetID & "'"
Me.FilterOn = True
DoCmd.SendObject acSendForm, "frmETIC", acFormatPDF, "email address", "", "", "Recovery Report", "Attached is the submitted Recovery Report"
exitErr:
Exit Sub
errhandle:
If Err.Number <> 2501 Then
MsgBox ("Email cancelled!")
End If
Resume exitEr
答案 0 :(得分:1)
所有这些And运算符都用于过滤,因此它们需要位于filter-string中。否则它们在VBA中用作布尔运算符,这将在字符串上使用时导致类型不匹配错误。
您的代码的另一个问题是过滤字符串中的日期。除非日期格式正确以便在SQL条件中使用,否则您将无法获得所需的结果。
用以下内容替换Me.Filter = ...行以解决这两个问题。
Me.Filter = "CurrentDate= #" & Format(Me!CurrentDate, "yyyy\-mm\-dd") & "# AND Discover= '" & Me!Discover & "' AND Tail= '" & Me!Tail & "' AND FleetID= '" & Me!FleetID & "'"
如果此过滤器字符串未返回预期结果,请在下一行放置Debug.Print Me.Filter
。这会将实际的过滤字符串打印到立即窗口中,并允许您查看它是否包含预期值。为了进一步调试,在Access中创建一个新的Query,切换到SQL View并输入SELECT * FROM yourTable WHERE filterStringOutput
作为SQL。运行查询。如果它未返回预期记录,请逐个删除条件以找到导致问题的条件。