我在使用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,我对那个部分一无所知。
感谢您提供帮助。
史蒂芬
答案 0 :(得分:1)
如果您的表单上有一个名为[attachPhoto]的Attachment
控件,并且该控件绑定到[Photo]字段(即,附件控件的Control Source
为Photo
)然后你可以检查
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 中。