使用VBA从附加图像设置MS-Access图像控制源

时间:2014-03-25 21:35:54

标签: vba ms-access attachment

我正在为表单添加一张照片,以便为每个用户显示该用户的其他信息。我创建了一个选项卡式表单,在第一页上我选择了一个用户并按下一个运行以下代码的按钮:

Private Sub Command106_Click()
Dim qry_rs As DAO.Recordset
Dim qry_db As Database
Set qry_db = CurrentDb
SQLString = "SELECT [Clients Info].* FROM [Clients Info] WHERE ((([Clients Info].Info_Client)='" & [Forms]![Form-1]![Combo13_PageOne_Name] & "'));"
Set qry_rs = qry_db.OpenRecordset(SQLString)
Forms![Form-1].[Info_Member].Value = qry_rs![Info_Member]
Forms![Form-1].[Info_Tower].Value = qry_rs![Info_ID]
End Sub

我尝试使用与设置图像控件值

时设置文本框值的方法相同的方法
Forms![Form-1].[Info_Picture].Value = qry_rs![Info_UserIDPhoto]

但它没有用,有人可以帮忙吗? 我收到此消息:

  

运行时错误2465:   Microsoft Office Access找不到字段“|”在你的表达中提到

我在Windows 7上使用Office 2007

2 个答案:

答案 0 :(得分:1)

据我所知,没有办法通过vba引用ControlSource属性。但是,在“设计视图”中使用属性表可以正常工作。使用组合框的值作为DLookup表达式中的条件。

输入此作为图像控件的ControlSource:
= DLookUp(“[YourAttachmentField]”,“[YourTable]”,“[YourNameField] ='”& [YourComboBox]。[Column](x)&“'”)

(确保您引用了正确的列;我只是使用x作为示例。)
如果您更改附件的名称或位置后,这将不起作用,因此如果进行任何更改,您必须重新附加。

答案 1 :(得分:0)

VBA允许您设置图片属性:

窗体![表-1]。[Info_Picture] .Picture = qry_rs![Info_UserIDPhoto]

Picture属性值必须是文件名 - 如果在Access选项中设置的默认文件夹中找不到,则必须是完整的路径和文件名。

从VBA设置时,该值可以是一个语句或变量,其值为(路径和)文件名。在上面的例子中,字段[Info_UserIDPhoto]将包含每个用户的ID照片的完整路径和文件名。

(与ControlSource属性不同,您不能直接在设计视图属性页中输入此属性的变量或字段名称。)