主题:用代码控制rave reports做报表
各位高手:
我花了一个月业余时间去摸索Delphi自带的Rave reports报表,结果最后一个问题解决不了,不知道你能否帮我看下,希望我们能成为好朋友!
我在rave report做动态报表,添加了25个dataText控件和25个dataMemo,每个控件指定了相同dataView,而dataFiled则依次为1,2,3...25,假如字段20-25不存在时(查询出的数据集有些字段没有),报表预览会显示为(invalid),我现在想让没有的字段显示为空,而不是显示为(invalid),请指点迷津!是不是应该在delphi里面写代码来控制呢?我看到这样一段代码:
运行时动态向RAVE报表增加一个TEXT对象
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, RpBase, RpSystem, RpDefine, RpRave,RvCsRpt,RVProj,RVClass,RVCsStd;
type
TForm1 = class(TForm)
RvProject1: TRvProject;
RvSystem1: TRvSystem;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
MyBand: TRaveBand;
MyRegion: TRaveRegion;
MyPage: TRavePage;
MyText: TRaveText;
begin
RvProject1.Open;
With RvProject1.ProjMan do
begin
MyPage := FindRaveComponent('Report1.Page1',nil) as TRavePage;
MyRegion:= FindRaveComponent('Region1',MyPage) as TRaveRegion;
MyBand := FindRaveComponent('Band1',MyRegion) as TRaveBand;
MyText:=TRaveText.Create(Myband);
MyText.Parent:=Mypage;
MyText.Name:=GetUniqueName('Text1',MyPage,false);
MyText.Top:=0.2;
MyText.Left:=0.7;
MyText.Width:=200;
MyText.Height:=200;
MyText.Text:='SCYANGYU@163.COM';
MyText.Font.Size :=20; //设置字体的属性
MyText.Font.Color :=ClRed;
MyText.Font.Name :='隶书';
AddComponent(MyText);
end; { with }
RvProject1.ExecuteReport('Report1');
RvProject1.Close;
end;
end.
上面用的是Rave控件是Text,现在我的rave控件是DataText和DataMemo该如何声明,代码怎么写!(我的思路是先只设定DataText和DataMemo的DataView参数,而DataField在代码中写入应该就可以实现我要的功能,当然如果有直接探测到错误(invalid)就不显示这个功能那就更好了),先谢谢了!
我花了一个月业余时间去摸索Delphi自带的Rave reports报表,结果最后一个问题解决不了,不知道你能否帮我看下,希望我们能成为好朋友!
我在rave report做动态报表,添加了25个dataText控件和25个dataMemo,每个控件指定了相同dataView,而dataFiled则依次为1,2,3...25,假如字段20-25不存在时(查询出的数据集有些字段没有),报表预览会显示为(invalid),我现在想让没有的字段显示为空,而不是显示为(invalid),请指点迷津!是不是应该在delphi里面写代码来控制呢?我看到这样一段代码:
运行时动态向RAVE报表增加一个TEXT对象
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, RpBase, RpSystem, RpDefine, RpRave,RvCsRpt,RVProj,RVClass,RVCsStd;
type
TForm1 = class(TForm)
RvProject1: TRvProject;
RvSystem1: TRvSystem;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
MyBand: TRaveBand;
MyRegion: TRaveRegion;
MyPage: TRavePage;
MyText: TRaveText;
begin
RvProject1.Open;
With RvProject1.ProjMan do
begin
MyPage := FindRaveComponent('Report1.Page1',nil) as TRavePage;
MyRegion:= FindRaveComponent('Region1',MyPage) as TRaveRegion;
MyBand := FindRaveComponent('Band1',MyRegion) as TRaveBand;
MyText:=TRaveText.Create(Myband);
MyText.Parent:=Mypage;
MyText.Name:=GetUniqueName('Text1',MyPage,false);
MyText.Top:=0.2;
MyText.Left:=0.7;
MyText.Width:=200;
MyText.Height:=200;
MyText.Text:='SCYANGYU@163.COM';
MyText.Font.Size :=20; //设置字体的属性
MyText.Font.Color :=ClRed;
MyText.Font.Name :='隶书';
AddComponent(MyText);
end; { with }
RvProject1.ExecuteReport('Report1');
RvProject1.Close;
end;
end.
上面用的是Rave控件是Text,现在我的rave控件是DataText和DataMemo该如何声明,代码怎么写!(我的思路是先只设定DataText和DataMemo的DataView参数,而DataField在代码中写入应该就可以实现我要的功能,当然如果有直接探测到错误(invalid)就不显示这个功能那就更好了),先谢谢了!