1、之前提过,没人答,再多问一次,请知道的朋友回答一下!
我做了一个数据库表,和一个简单的入库界面,由5个人操作,目的是储存订单的明细资料,但日前给订单增加了‘订单图样’的的字段后(Jpeg)格式,只是20来张的图片,数据库一下子增大了100兆,但每张图片也不超过1兆呀~,整个入库界面就像蜗牛一样慢,简单界面包含一个查询界面,就是用ADOQUERY的AfterScroll事件动态显示图片而已,真不明白,sql2000不至于这么不济吧几十幅不超过1M图片也容不下????晕! 还是有其它需要设置的,请知道大虾明示下,这个问题搅了好几天没搅好!
2、 我改过了关于存储的问题,改用openpicturedialog保存路径,但数据库内只保存有“d:\胸围图样\”我靠,文件名呢??? 而且AfterScroll事件显示也不太懂得如何做?请给个示例参考一下我是真正初学者,觉得delphi实在容易上手而用的!谢谢!
重分答谢!
我做了一个数据库表,和一个简单的入库界面,由5个人操作,目的是储存订单的明细资料,但日前给订单增加了‘订单图样’的的字段后(Jpeg)格式,只是20来张的图片,数据库一下子增大了100兆,但每张图片也不超过1兆呀~,整个入库界面就像蜗牛一样慢,简单界面包含一个查询界面,就是用ADOQUERY的AfterScroll事件动态显示图片而已,真不明白,sql2000不至于这么不济吧几十幅不超过1M图片也容不下????晕! 还是有其它需要设置的,请知道大虾明示下,这个问题搅了好几天没搅好!
2、 我改过了关于存储的问题,改用openpicturedialog保存路径,但数据库内只保存有“d:\胸围图样\”我靠,文件名呢??? 而且AfterScroll事件显示也不太懂得如何做?请给个示例参考一下我是真正初学者,觉得delphi实在容易上手而用的!谢谢!
重分答谢!
原来我弄个了个.他有20多G后来我把他的日心文件给删了.最一变成了7G
你还可以试一下收缩一下你的数据库.
保存:
adoquery.fieldbyname('photos').asstring:=openpicturedialog.filename 了
var
strm:tmemorystream;
ext:string;
begin
if image1.picture.Graphic <> nil then //避免image1中无图像保存出错
begin
ext:=extractfileext(openpicturedialog1.FileName); //取出文件的扩展名
strm:= tmemorystream.Create;
try
image1.Picture.Graphic.SaveToStream(strm);
ddadoquery.Edit;
strm.Position :=0;
tblobfield(ddadoquery.FieldByName('photo')).LoadFromStream(strm);
TBlobField(ddadoquery.FieldByName('photo')).LoadFromFile(OpenPictureDialog1.FileName);
if uppercase(ext)='.bmp' then
ddadoquery.FieldByName('isbmp').Value := 1
else if (uppercase(ext) = '.JPG') OR ( uppercase(ext) = '.JPEG') Then
ddadoquery.FieldByName('isbmp').Value :=
0; //JPEG型图像数据
ddadoquery.Post;
finally
strm.Free;
end;
end;
TBlobField(ddadoquery.FieldByName('photo')).LoadFromFile(OpenPictureDialog1.FileName);干嘛要load两次啊
然后在添加记录窗口上放上打开对话框penpicturedialog,和保存对话框组件SavePictureDialog,在插入新纪录的时候使用SavePictureDialog选择要保存的图片,
if SavePictureDialog1.execute then
begin
with DM.DataSet do
begin
insert;
.....
FieldByname('photo').asstring:=SavePictureDialog.filename;
post;
end;
end;
浏览时通过DataSet的AfterScroll事件里写加载图片
var
JPG:TJPEGImage;
begin
try
JPG:=TJPEGImage.Create;
if trim(DataSet.FieldByName('Photo').asstring)<>'' then
begin
JPG.LoadFromFile(DataSet.FieldByName('Photo').asstring);
fm_showPic.IMAGE1.Picture.Bitmap.Assign(JPG);
end;
Finally
JPG.Free;
end;
end;
一方面减慢你的速度,另一方面占用太好的数据库
我觉得应该像WEB中发送邮件那样,图片应该以附件的形式保存在磁盘中,然后在数据库中关联其文件名!