目前我正在使用VBA Excel,我正在尝试从sql server导入图像(.png)。我已完全将图像插入到二进制类型的sql server中。这是我已经完成的SQL查询。
INSERT INTO [DemoDatabase]。[dbo]。[well_image]([well_img]) SELECT BulkColumn 从openrowset(批量'C:\ Users \ Pictures \ 003.png',Single_Blob)as img
然后我尝试选择从sql server获取图像并将其显示在 image activex control 中,但它会给我一个错误。
运行时错误,需要对象。 (错误)
下面我提供您的概述代码。
Set rs = New ADODB.Recordset
Set stm = New ADODB.Stream
Dim sqlquery As String
sqlquery = "SELECT [well_img] FROM well_image WHERE [img_id] = 2"
rs.Open sqlquery, objConnection, adOpenStatic, adLockOptimistic
stm.Type = adTypeBinary
stm.Open
stm.Write rs("well_img").Value 'write bytes to stream
stm.Position = 0
'Sheet1.OLEObjects("well_img").Object.Picture = stm.Read 'load bytes into image control on form
Sheet1.well_img.Picture = stm.Read ***here is the problem
stm.Close
rs.Close
objConnection.Close
当我调试时,这一行是问题“Sheet1.well_img.Picture = stm.Read”。 我需要你的帮助。请帮助我,谢谢你的考虑。
答案 0 :(得分:1)
我没有真正为您提供解决方案,但我不相信您可以通过这种方式加载图片。来自msdn:
注意在运行时,Picture属性可以设置为任何其他属性 对象的DragIcon,Icon,Image或Picture属性,或者您可以分配 它是LoadPicture函数返回的图形。例外 这是ListImages对象的Picture属性,它是一个 只读属性。
LoadPicture函数也将文件路径作为参数。本文解释了how to store and load images from an Access database。不幸的是,这一切都没有解决您的问题,但我希望它可以告诉您为什么不能按照您尝试的方式完成。
答案 1 :(得分:0)
很抱歉迟到的回复。我已经尝试了所有你给出的解决方案,但仍然无效。然后我尝试用另一种方法来做到这一点。即使这不是回答问题,但我只是想分享我已经完成的事情。
现在我将图像数据类型设置为string / varchar。这是因为我打算保存图像名称,图像本身保存到我设置的特定文件夹中。这就是我这样做的方式。
代码
Dim imgDir as String, imgName as String
imgDir = "C:\Users\pc\Pictures\img\"
imgName = "test.jpg"
'copy img from source directory to destination directory
Dim destinationImg As String
destinationImg = "C:\Users\pc\Pictures\img\" & imgName
'FileCopy is a method that copy file to specific folder/directory
FileCopy imgDir, destinationImg
'-----------------
'insert imgName to database
'set up connection
Call serverConn
Dim sqlquery As String
sqlquery = "INSERT INTO well_img ([img_name]) " & _
"VALUES ('" & imgName & "') "
objConnection.Execute sqlquery
' close connection
objConnection.Close
Set objConnection = Nothing
这就是我显示图像的方式。我使用image activeX控件。
Dim destinationImg As String
destinationImg = "C:\Users\pc\Pictures\img\" & imgName
Sheet2.dwnload_img.Picture = LoadPicture(destinationImg)
这一切都来自我。欢迎任何改进,谢谢大家。 :)