delphi中各个水晶报表控件的作用和使用方法

cxy815 2004-04-13 08:56:56
我需要在delphi中调用若干个已经制作完毕的水晶报表,这些水晶报表的数据源是服务器上的数据库,需要实现的功能是:
1.用户在delphi应用程序中可以自己选择报表统计的日期区间。
请问要用到哪个控件,参数如何设置?
2.用户可以刷新和保存报表中的数据。
水晶报表的数据库源有密码,请问我在delphi应用程序中怎么登录数据库?使用哪个控件,参数怎么设置?

另外补充一个问题,在delphi中需要用到Report控件吗?目前我只用了Application和CRViewer控件,好像也能调用水晶报表,不知道什么情况下需要Report控件?

我看到delphi中有Report,Application,ParameterValue,ParameterValueInfo,CRViewer,CRFields等等水晶报表控件,但是不知道怎么用,还请高手指点具体的使用方法,或者告知哪里有这方面的资料下载?感激不尽,定高分相赠。
...全文
779 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongping 2004-08-26
  • 打赏
  • 举报
回复
收藏
linnet2000 2004-07-18
  • 打赏
  • 举报
回复
收藏
cxy815 2004-04-16
  • 打赏
  • 举报
回复
我是想让用户能够在应用程序中调取最新的数据,而不是非得先使用水晶报表刷新然后再运行delphi应用程序才能获得最新数据。
我刚才这样试过了:
Crpe1.ReportName:='e:\Report1.rpt';
Crpe1.Connect.DatabaseName:='databasename';
Crpe1.Connect.Password:='password';
Crpe1.Connect.Propagate:=true;
Crpe1.Connect.ServerName:='oraclea';
Crpe1.Connect.UserID:='userid';
Crpe1.DiscardSavedData;
Crpe1.Refresh;
Crpe1.Execute;
但是运行发生异常,这是为什么?
eastliangliang 2004-04-16
  • 打赏
  • 举报
回复
你不是要用Delphi调用设计好的水晶报表吗?当然是启动你的应用程序,然后设置好报表的数据库连接属性,设置报表名称,报表的参数,然后执行报表,如果你的报表内存有设计时留下的数据,用DiscardSavedData方法去掉它们,你说的刷新是不是就是指去掉报表设计时留下的数据呢?
cxy815 2004-04-16
  • 打赏
  • 举报
回复
不写Crpe1.refresh也运行错误
eastliangliang 2004-04-16
  • 打赏
  • 举报
回复
异常都有错误代码的,水晶报表的帮助里有错误代码相应的错误信息。看一下是什么错误,另外,不用写Crpe1.Refresh啊。
eastliangliang 2004-04-15
  • 打赏
  • 举报
回复
制作水晶报表模板时就把日期字段设为参数。外部传递进去的CurrentValue都是字符串,我是用的Delphi的DateTimePicker控件提取用户输入,所以用函数CrDateTimeToStr(日期时间值,false);转换成字符串。
cxy815 2004-04-15
  • 打赏
  • 举报
回复
请问eastliangliang(青苹果):
“CrpeReport.ParamFields[i].CurrentValue := 某值;其中i是第几个参数。”
我如何获知我所用的报表的日期参数的i值是多少?我需要在制作水晶报表模板时就把日期字段设为参数吗?还是说只需要在delphi中直接将日期字段视为参数,通过用户输入来赋值就行了?
eastliangliang 2004-04-15
  • 打赏
  • 举报
回复
我的控件只用到一个TCrpe。水晶报表For Delphi控件的8.5版。
CrpeReport:TCrpe;

CrpeReport.ParamFields[i].CurrentValue := 某值;其中i是第几个参数。
如果参数是日期时间,需要用这个函数:CrDateTimeToStr(日期时间值,false);

设置数据库连接用
CrpeReport.Connect.ServerName := 数据库服务器名
CrpeReport.Connect.DatabaseName := 数据库名;
CrpeReport.Connect.UserID := 用户ID;
CrpeReport.Connect.Password := 用户密码;

如果你装了控件,应该装了帮助的,里面东西还挺全的,自己看看就可以了。
zfang 2004-04-15
  • 打赏
  • 举报
回复
哦!是楼主你啊,呵呵!

好久没有来好好看了,呵呵..................
zfang 2004-04-15
  • 打赏
  • 举报
回复
用Crystal report
用控件:CRPE(在Delphi面板上DataAccess)
建立连接:
Crpe.ReportName := '';
Crpe.Connect.ServerName := '';
Crpe.Connect.DatabaseName := '';
Crpe.Connect.UserID := '';
Crpe.Connect.Password := '';
Crpe.Connect.Propagate := True;
SQL查寻:
Crpe.SQL.Query.Text := '';
给报表文本赋值:
Crpe.TextObjects[2].Lines.Text := '';

显示:
Crpe.Show;
cxy815 2004-04-15
  • 打赏
  • 举报
回复
楼上这位笑什么,是不是我的问题太简单了。
唉,没办法,偶就是菜鸟!
dickeybird888 2004-04-15
  • 打赏
  • 举报
回复
哈哈!
cxy815 2004-04-15
  • 打赏
  • 举报
回复
to firmamenthy:
控件在...borland\delphi6\Crystal目录下


to eastliangliang(青苹果):
如果要刷新数据的话是不是就只能先打开水晶报表,刷新,然后启动delphi应用程序?
就不能在delphi中由用户自己刷新吗?


eastliangliang 2004-04-15
  • 打赏
  • 举报
回复
刷新按钮?没注意过,我一般都是再打开一遍报表。

控件在水晶报表9.2的安装包里有,下载?我没找过。控件没有什么注册码。
firmamenthy 2004-04-15
  • 打赏
  • 举报
回复
水晶报表For Delphi控件的8.5版,那里有下载?

有安装注册码和使用注册码吗?
cxy815 2004-04-15
  • 打赏
  • 举报
回复
我点了crpe的refresh按钮之后报表变成空的了,并没有更新数据,这是为什么?是不是要对refresh按钮另外写事件?
什么情况下才会弹出登录数据库的窗口?
masterlee 2004-04-14
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/TopicView1.asp?id=2843587

建议使用VCL,可以连接很多数据库。
可以设置过滤条件等。

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧