关于fastreport的简单问题
1.在fastreport中如何判断当某一数据为正数,则在报表中其前面加一个‘+’,当某一数据为负数,则在报表中其前面加一个‘-’,具体的操作如何?要怎么写语句?
2.我用DBImage1来直接连接一个image字段,为什么在保存很小的图片(几k)就可以,一旦保存大图片,根本无法保存。想知道这是为什么?大家在把图片保存在数据库中又是如何进行的啊!
谢谢!
问题点数:20、回复次数:10Top
1 楼yuanscar(塑料树)回复于 2005-11-06 10:26:33 得分 0
1。很容易,你的数据都是放在MEMO里面吧。在MEMO里面不是有BEGIN和END的输入框?在那里面写代码就可以了。参考一下FR的函数库Top
2 楼zhangjensy()回复于 2005-11-07 12:15:03 得分 0
第1個問題已解決,有誰能告訴我第2個問題的回答?謝謝!Top
3 楼surdon(ャ野马ャ)回复于 2005-11-07 12:20:18 得分 20
第二个问题 用流保存图片~~
设置Picture1的blobtype
设置Picture1的datafieldTop
4 楼surdon(ャ野马ャ)回复于 2005-11-07 12:23:21 得分 0
以下是我操作图片读存删 过程给你参考
function img_post_gkxb(img_z_E_Z:TcxImage;strLei:string;intLeiMing:integer):Boolean;//保存图片
var
msmem:TmemoryStream;
jpg:TJpegImage;
D_C_esql:TClientDataSet;
s:string;
begin
with D_C_esql do
begin
D_C_esql:=TClientDataSet.Create(nil);
D_C_esql.RemoteServer:=CDM.SockC;
D_C_esql.ProviderName:='DSPEsqldu';
s:='select * from Dimg where 类名 = '+inttostr(intLeiMing)+' and ID = '''+(strLei)+'''';
Close;
CommandText:=s;
Open;
if RecordCount>0 then
Edit else
begin
Append;
FieldByName('ID').AsString:=strLei;
FieldByName('类名').AsInteger:=intLeiMing;
end;
if img_z_E_Z.Picture.Graphic <> nil then
begin
msmem:=TmemoryStream.Create;
Jpg:=TjpegImage.Create;
jpg.Assign(img_z_E_Z.Picture.Graphic);
jpg.SaveToStream(msmem) ; // 1
// form2.Image1.Picture.Bitmap.SaveToStream(msmem); // 保存bmp图像的方法
msmem.Position :=0;
TBlobField(FieldByName('图片文件')).LoadFromStream(msmem);
Msmem.Free ;
jpg.Free;
end
else FieldByName('图片文件').AsString:='';
Post;
FUPDATE(d_C_esql);
Free;
end;
end;
//======================================
function img_gkxb(strLei:string;intLeiMing:integer):TJpegImage; //读取图片
var s:string; D_C_esql:TClientDataSet;
ms:TStringStream;
begin
with D_C_esql do
begin
D_C_esql:=TClientDataSet.Create(nil);
D_C_esql.RemoteServer:=CDM.SockC;
D_C_esql.ProviderName:='DSPEsqldu';
s:='select * from Dimg where 类名 = '+inttostr(intLeiMing)+' and ID = '''+strLei+'''';
d_C_esql.Close;
d_C_esql.CommandText:=s;
d_C_esql.Open;
if d_C_esql.FieldByName('图片文件').AsString<>'' then
begin
ms:=TstringStream.Create('');
img_gkxb:=TJpegImage.Create;
TBlobField(d_C_esql.FieldByName('图片文件')).SaveToStream(ms);
img_gkxb.LoadFromStream(ms);
ms.Position :=0;
img_gkxb.LoadFromStream(ms);
// Form2.Image1.Picture.Bitmap.LoadFromStream(ms); //调用bmp图像的方法
end else img_gkxb:=nil;
Free;
end;
end;
//=======================
procedure PDelimg(strLei:string;intLeiMing:integer);//删除图片
var D_C_esql:TClientDataSet;
begin
with D_C_esql do
begin
D_C_esql:=TClientDataSet.Create(nil);
D_C_esql.RemoteServer:=CDM.SockC;
D_C_esql.ProviderName:='DSPEsqldu';
Close;
CommandText:=' delete from Dimg where 类名 = '+inttostr(intLeiMing)+' and ID = '''+strLei+'''';
Execute;
Free;
end;
end;
Top
5 楼zhangjensy()回复于 2005-11-07 12:46:24 得分 0
surdon(ャ野马ャ) :
能说具体一点吗?是在DELPHI中的DATASET中字段设置Picture1的blobtype为那一个值?怎么找不到设置Picture1的datafield属性!
Top
6 楼surdon(ャ野马ャ)回复于 2005-11-08 18:20:13 得分 0
你用的是什么版本啊
我用的是
Picture1->blobtype> btJPG
FastReport.v2.52.FireRose中文版 在Picture1->blobtype 下面二个就是datafield属性
Top
7 楼surdon(ャ野马ャ)回复于 2005-11-08 18:21:18 得分 0
我说的是 FastReport Picture1图片打印控件 里面的~~Top
8 楼zhangjensy()回复于 2005-11-09 12:59:31 得分 0
我問的是這個問題"我用DBImage1来直接连接一个image字段,为什么在保存很小的图片(几k)就可以,一旦保存大图片,根本无法保存。想知道这是为什么?大家在把图片保存在数据库中又是如何进行的啊!"難道不是DBImage1控件而是用 FastReport Picture1图片打印控件?這樣能行?我主要是想把圖片通過感知控件DBImage1來從數據庫中讀取和存入!DBImage1是與相應的dataset的datasource相連啊!
Top
9 楼surdon(ャ野马ャ)回复于 2005-11-09 18:45:55 得分 0
就是用流保存 用Image1 不用DBImage1Top
10 楼zhangjensy()回复于 2005-11-10 09:58:46 得分 0
Image1無法直接連dataset!有更好的辦法?Top




