【200分】access数据库.mdb查看长二进制图片
见如下部分代码,我已试过可以提取文件,也可自己编辑一下,实现循环取图等等!
提供一下excel文件下载网址,自己研究下吧!
Sub GetPic()
Dim adoCnn
Dim adoRs
Dim strSql As String, strDataSource As String '<==打开数据库用的字符串变量
Dim strImgFile As String '<==图像文件名字
Dim lngImgSize As Long '<==数据库里的图像字节长度
Dim binImg() As Byte '<==用来取图像的二进制文件
Set adoCnn = CreateObject("adodb.connection")
Set adoRs = CreateObject("adodb.recordset")
strDataSource = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & ThisWorkbook.Path & "\取出相片.mdb"
adoCnn.Open strDataSource
strSql = "Select * from 数据"
adoRs.Open strSql, adoCnn
'以上 ADO一般操作 自已研究
strImgFile = ThisWorkbook.Path & "\temp.jpg" '临时图像文件起名为TEMP,喜欢什么随意
'应该注意的是,你这个数据,其实是JPG,应该起什么后缀,请试过以后再说
adoRs.MoveFirst '<===从第一行记录开始,要全部遍历,请做MOVENEXT到EOF的循环
'下面只演示取第一个记录的图像
我来给你解答下:大体思路如下
1、建立一个form,在form上加入一个图像显示控件和一个按钮、adoconnction1,query1
2、双击按钮进行代码输入
procedure TForm1.Button1Click(Sender: TObject);
var tempstream:TStringStream;
tempjpeg:TJPEGImage;
aa:integer ;bb:string;
begin
aa :=1 ;
query1.open ;
query1.first ;
while not query1.eof() then
begin
bb:='pict'+inttostr(aa)+'.jpg'
try
tempstream:=TStringStream.Create('PicSource ');
TBlobField(Query1.FieldByName('PicSource')).SaveToStream(tempstream);
tempstream.Position:=0;
tempjpeg:=TJPEGImage.Create;
tempjpeg.LoadFromStream(tempstream);
Image1.Picture.Bitmap.Assign(tempjpeg);
image1.Picture.SaveToFile(bb);
finally
tempstream.Free;
tempjpeg.Free;
end;
aa:= aa+1 ;
query1.next ;
end; ///while
query1.close;
end ;