很怪很急的问题::(DBImage+Jpg+RM报表 (50分)

  • 主题发起人 主题发起人 shell~
  • 开始时间 开始时间
S

shell~

Unregistered / Unconfirmed
GUEST, unregistred user!
早上还好好的,下午就不行了。靠,每次添加一条记录,如果有添加图片,要马上预览报表预览不了,要重新启动软件后才能预览,而如果添加记录,不添加图片,就可以预览。55555555,明天要交工了。
我是先把jpg贴到DBimage,然后通过一个按钮提交。
先是jpg显示在DBimge,代码如下:
var
bmp :TBitmap;
jpg :TJpegImage;
begin
if openpicturedialog1.Execute then
begin
jpg :=TJpegImage.Create;
jpg.LoadFromFile(OpenPictureDialog1.FileName);
bmp :=TBitmap.Create;
bmp.Assign(jpg);
DBImage1.Picture.Assign(jpg);
bmp.Free;
jpg.Free;
end;
end;
估计错误是在上面代码里面,我如果不加图片的话就可以预览

提交就用insert
报表用ReportMachine2.6
 

DBImage1.Picture.Assign(jpg);
换成下面两句中的任一来试一试看??
DBImage1.Picture.Graphic.Assign(jpg);
DBImage1.Picture.bitmap.assign(Jpg);
 
有没有人碰到过把图片写进数据库就打印不了。分不够再加,只剩下195分了,全压上,大家讨论一下啊。
 
有没有人碰到过把图片写进数据库就打印不了。分不够再加,只剩下195分了,全压上,大家讨论一下啊。
 
有没有人碰到过把图片写进数据库就打印不了。分不够再加,只剩下195分了,全压上,大家讨论一下啊。
 
出错提示是什么??贴上来
 
app2001:没出错,就是打不出来
 
app2001:
如果提交jpg到数据库,分两步:
1,jpg贴在Dbimage
2,提交。
你是怎么做的??
 

声明:
Uses
JPEG,
type
TPicType=(bmp,jpg);
Tf_main = class(TForm)
.
.
.

声明函数:
private
procedure SaveToDBImage(APicType: TPicType; AFileName: string; ADBImage: TDBImage);
procedure LoadFromDBImage(APicType: TPicType; AFileName: string; ADBImage: TDBImage);

{ Private declarations }

函数如下:
procedure Tf_main.SaveToDBImage(APicType: TPicType; AFileName: string;
ADBImage: TDBImage);
var
myJpg: TJpegImage;
begin
if (ADBImage.DataSource.State = dsEdit) or (ADBImage.DataSource.State = dsInsert) then
begin
if APicType = bmp then
begin
ADBImage.Picture.LoadFromFile(AFileName);
Abort;
end;

if APicType = jpg then
begin
myJpg := TJpegImage.Create;
try
myJpg.LoadFromFile(AFileName);
ADBImage.Picture.Graphic.Assign(myJpg);
finally
myJpg.Free;
end;
end;
end;
end;

procedure Tf_main.LoadFromDBImage(APicType: TPicType;
AFileName: string; ADBImage: TDBImage);
var
myJpg: TJpegImage;
begin
if APicType = bmp then
begin
ADBImage.Picture.SaveToFile(AFileName + '.BMP');
exit;
end;

if APicType = jpg then
begin
myJpg := TJpegImage.Create;
try
myJpg.Assign(ADBImage.Picture.Graphic);
myJpg.SaveToFile(AFileName + '.JPG');
finally
myJpg.Free;
end;
end;
end;

调用:
在DBImage里
procedure Tf_main.DBImage1DblClick(Sender: TObject);
begin
f_dm.t_fy.Edit;
DBImage1.Field.Clear;
if OpenPictureDialog1.Execute then
SaveToDBImage(jpg,OpenPictureDialog1.FileName,DBImage1);
end;

清除DBimage
procedure Tf_main.FlatButton1Click(Sender: TObject);
begin
f_dm.t_fy.Edit;
DBImage1.Field.Clear;
end;
另存为:
procedure Tf_main.FlatButton2Click(Sender: TObject);
begin
if SavePictureDialog1.Execute then
begin
LoadFromDBImage(jpg,SavePictureDialog1.FileName,DBImage1);
end;
end;

Report里面的DBImage图象类型属性 一般都要设置为Bmp,即使你是Jpg 或 jpeg型
祝你好运,兄弟!
 
来得太迟了,不过晚上都是专门找你未答的问题看,希望可以赚一点分数 ^-^
 
调试了好久,才知道不是代码有问题,而是reportmachine2.6的一个bug,同样FastReport也存在同样问题,可能因为他们同根生的吧。找王老大问去了,可他不在。用QR就一切OK。如果真不行的话,报表改QR,谢谢大家的解答,明天结掉。
 
如果是FR的话,是可以用JPG的,我就用过,但要改一下设置,
修改 FASTREPORT SOURCE 目录下的 FR.INC ,将 {$DEFINE JPEG} 前面的两个 // 删除(取消注释),然后重新编译 FR 控件包,重新编译 APP。
 
To app2001:
JPG图片保存到数据库可以,下面才是问题:想马上打印就不行,你改过行吗?有没有测试过.
我做了测试,应该FR的BUG
 
当然有做过,我这人很小胆,没把握的事是不会乱嚷嚷的,我的FR是2.45版本,没有问题
 
TO: app2001:
[:(][:(]我刚又试过了(我也不知道试了多少次了。),真的不行,能不能发个demo看一下啊~,我一个朋友也跟我一样,没办法打出来,我是说马上添加进去马上打印~[?],用QR一切OK,晕啊
wyxdream@hotmail.com
有没有上MSN上,上面聊比较快,QQ也行,加我:43521261
 
后退
顶部