我用access做数据库存储图片的字段类型为ole型
保存的代码如下:
var
strm: TMemoryStream;
myjpeg: TJPEGImage;
begin
//ExtName是一个全局变量,它通过ExtractFileExt(openpicturedialog1.FileName)获得扩展名;
if (ExtName = '.jpg') then
begin
ClientDataSet1.Edit;
strm := TMemoryStream.Create;
myjpeg := TJPEGImage.Create;
myjpeg.Assign(image1.Picture.Graphic);
myjpeg.SaveToStream(strm);
strm.Position := 0;
tblobfield(ClientDataSet1.FieldByName('相片')).LoadFromStream(strm);
strm.Free;
ClientDataSet1.post;
end
end;
每次保存是都提示"Bitmap image is not valid"这是为什么?我该怎样做才行?谢谢!
保存的代码如下:
var
strm: TMemoryStream;
myjpeg: TJPEGImage;
begin
//ExtName是一个全局变量,它通过ExtractFileExt(openpicturedialog1.FileName)获得扩展名;
if (ExtName = '.jpg') then
begin
ClientDataSet1.Edit;
strm := TMemoryStream.Create;
myjpeg := TJPEGImage.Create;
myjpeg.Assign(image1.Picture.Graphic);
myjpeg.SaveToStream(strm);
strm.Position := 0;
tblobfield(ClientDataSet1.FieldByName('相片')).LoadFromStream(strm);
strm.Free;
ClientDataSet1.post;
end
end;
每次保存是都提示"Bitmap image is not valid"这是为什么?我该怎样做才行?谢谢!
解决方案 »
- DBGrid+ADOTable分页
- QRReport报表预览的横线可以看到, 但是我想在打印之后, 这个横线就不用打印出来, 如何实现?
- 请问如何将DBGRID的标题字段名改为中文的?要求动态实现。解决立即给分。老有人发了问题就没回音了呵呵。
- 一个小问题
- 一个利用ADO连接的三层结构问题。。希得大侠指点
- 如何在两个数据库服务器之间的数据搬移?
- 【散分】idHTTP登录NTLM验证方式的网页,终于解决了,留作备忘以助后来人
- 请问有开发经验的大大,用delphi开发小型的网络信息管理系统,用什么数据库最好?
- C/S方式实现连锁店的进消存方案1。
- 新手求助,设计登陆问题
- delphi里怎么把excel导入access?
- 关于TQuery的问题
我用流保存*.bmp文件没问题啊!
Stream:TMemoryStream;
Jpg:TjpegImage;
begin
try
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('');
ADOQuery2.Open;
if not ADOQuery2.FieldByName('pic').IsNull then begin
if ADOQuery2.FieldByName('pic_type').AsInteger = 2 then begin
try
Stream:=TMemoryStream.Create;
Jpg:=TjpegImage.Create;
TBlobField(ADOQuery2.FieldByName('pic')).SaveToStream(Stream); // 显示的转换为BlobField并保存到内存流
Stream.Position :=0;
jpg.LoadFromStream(Stream);
image1.Picture.Assign(Jpg);
finally
Stream.Free;
Jpg.Free;
end;
end else if ADOQuery2.FieldByName('pic_type').AsInteger = 1 then begin
Image1.Picture.Bitmap.Assign(ADOQuery2.FieldByName('pic'));
end else begin
image1.Picture := nil;
end;
end else begin
image1.Picture := nil;
end;
except
common.InfoMessage('提取图片数据失败!');
exit;
end;
var
Stream:TMemoryStream;
ext:string;
pictype: integer;
begin
try
try
ext:=extractfileext(openpicturedialog1.FileName);
if ext = '' then exit;
if uppercase(ext) ='.BMP' then begin
pictype := 1;
end else if (uppercase(ext) = '.JPEG') or (uppercase(ext) = '.JPG') then begin
Pictype := 2;
end;
Stream := TMemoryStream.Create;
Image1.Picture.Graphic.SaveToStream(Stream);
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('update member set pic =:pic,pic_type =:pictype where ---');
ADOQuery1.Parameters.ParamByName('pic').LoadFromStream(Stream,ftBlob);
ADOQuery1.Parameters.ParamByName('pictype').Value := pictype;
ADOQuery1.ExecSQL;
finally
Stream.Free;
end;
except
InfoMessage('保存图片失败!');
exit;
end;
给你个现成的,我的数据库是sql
谢谢你的代码
可我想知道我的代码有何问题?
你说的没错!确实是DBImage的问题,是不是DBImage不能显示jpg文件.