如何在Access中检查附件字段是否为空?

时间:2014-01-14 04:43:37

标签: vba ms-access access-vba ms-access-2010

我在使用MS Access 2010时遇到了一些问题。我正在尝试修改我下载的数据库,来自微软网站的模板,我正在做一些修改以跟踪食物营养。我对16位Atari时代的旧时代有一些经验。我对VBA并不完全是绿色的,只要知道就麻烦了。我有一个表单,使用选择查询来填充表单的下半部分。我在食品表中添加了一个附件字段,该表具有超过8500条记录,即查询表。我的问题是在模块中添加VBA代码以查看是否存在照片。我希望能够显示没有照片的灰色图标和常规图标(如果有照片文件)。但那是我开始工作的时候。我在字段属性中调用该函数:

Photo1: chkAttachment([Photo])

这个开始给我和错误说:“多值字段'[Photo]'在表达式'chkAttachment([Photo])'中无效。当我将其更改为:

Photo1: ChkAttachment([Photo].[FileName])

对于空字段我得到#Error,对于有文件的那个得到“有照片”。

以下代码是我引用的功能。显示我想要做的事情

Public Function chkAttachment(fldPhoto As String) As String

On Error GoTo chkAttachment_Err

chkAttachment = ""

'Debug.Print fldPhoto
If fldPhoto = Null Then
    chkAttachment = "No Photo"
Else
    chkAttachment = "Has Photo"
End If

chkAttachment_Exit:
     Exit Function

chkAttachment_Err:
    MsgBox " It don't like Error number: " & Err.Number & " " & Error$
    Resume chkAttachment_Exit

End Function

如果附件为空,查询甚至不会调用代码。我用Google搜索了以下问题,并在此网站上搜索了“Microsoft Access 2010 VBA如何查询附件字段”,没有任何运气。我试图使用一些代码来计算附件中的文件数量,我在2011年8月的帖子“如何从Microsoft Access中的附件字段查询附件数量?”中找到,但是无法弄清楚如何获取它工作。谈到SQL,我对那个部分一无所知。

感谢您提供帮助。

史蒂芬

4 个答案:

答案 0 :(得分:1)

如果您的表单上有一个名为[attachPhoto]的Attachment控件,并且该控件绑定到[Photo]字段(即,附件控件的Control SourcePhoto )然后你可以检查

的值
Me.attachPhoto.AttachmentCount

查看记录是否有任何附件。

(请注意,如果您不希望用户实际看到 [attachPhoto]控件,您只需将其Visible属性设置为No。)

答案 1 :(得分:0)

我相信这会导致您所在领域的#ERROR

If fldPhoto = Null Then

正确检查Null将如下:

If IsNull(fldPhoto) Then

但是在调用函数时你可能仍会得到Null异常。因此,您可能希望将整个代码编辑为以下内容:

If (fldPhoto = "") Then

并且在调用函数时:

Photo1: ChkAttachment(Nz([Photo].[FileName]))

希望我帮助

答案 2 :(得分:0)

您可以在where子句中的SQL语句“Not(tblxx.Pic.FileData)Is Null”中检查它。我是这样用记录集做的。

答案 3 :(得分:0)

我想在对表单运行查询之前检查是否已创建附件。我在表单中创建了一个文本框,并在文本框的控制源下,转到表达式生成器并输入“= [具有附件的列的名称].[AttachmentCount]”。 如果没有创建附件,文本框给我的计数为 0(零),1 个附件为 1。我可以使用文本框来运行我的查询。以上所有内容都在 Access 07 中。