Seagate Crystal 生成的Sql文件 和 Crystal Report 10的问题

duwa789 2008-01-11 02:08:44
客户要求使用VS2005 Crystal Report来完成水晶报表的制作,但有些要求.

客户使用Seagate Crystal设计水晶报表的时候可以生成一个SQL文件,这个文件包含了该报表所对应的数据源,而当报表设计完成后,他可以通过手动修改这个SQL文件同时在水晶报表RPT文件中增加和他向SQL文件中加入的字段别名相同的字段,从而达到向报表插入新字段的目的.

我使用VS2005自带Crystal Report设计(免费的那种~)的时候并无法为一个RPT的数据源生成一个SQL文件,我只知道水晶报表数据源可通过Push或者Pull模式来完成,并没有存在单独的SQL文件.

于是可以提出是否可以购买一个Crystal Report 10来设计报表. 但我不知道是否一个标准版或者开发版(专业版..等等等)的Crystal Report 10是否支持这样的功能.

如果利用VS2005 自带的Crystal Report Designer也可以有解决方案的话,忘不吝赐教.

客户原文如下:

I develop Crystal Reports using Seagate (Crystal’s Vendor) Crystal Reports NOT VS2005. When I develop in Crystal, I create a connection directly to the DB and create a NEW COMMAND and I have a separate sql file that has my crystal alias names (e.g. the field names). At any time I can change the sql file AND the Crystal DB Connection AND the COMMAND then I can add / remove fields to the report WITHOUT having to recompile the app.

The sql file has the filter parameters (e.g. the Batch ID) that pass to the sql statement or multiple statements. The fields in the sql statements have alias names. The alias names need to match EXACTLY the alias names in the rpt. So if developer updates the sql statement (or statements) then the rpt will need to be updated to (this is not automatic, but the developer can do it). This process is A LOT quicker than having the report sql in the app code and recompiling the app with each rpt change.


描述不尽完整,希望有经验的朋友能帮个忙~~

感谢.
...全文
183 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿泰 2008-01-17
  • 打赏
  • 举报
回复
让客户去买个可以动态创建的版本吧,嘿嘿~~

高级开发版支持这个特性,像我们平时用的标准版,企业版都不支持:)

可以到这里看下版本特性区别
http://www.cnblogs.com/babyt/archive/2005/04/20/141196.html
duwa789 2008-01-17
  • 打赏
  • 举报
回复
实际上客户使用的水晶报表设计器是可以生成这个Sql的,他给我的要求是
1.按照他的格式设计一个Sql file(但这样做我似乎无法测试,Crystal Report无法将sql file作为数据源);
2.他修改我的存储过程然后他再自己通过他的RPT设计器修改字段达到更新的目的(这里的问题就象你说的,我不知道如何去动态创建,增加或删除field).

所以还在想办法...希望能有更多朋友提供参考方案,

再次感谢~_~
阿泰 2008-01-17
  • 打赏
  • 举报
回复
Dynamic Data Sources 没问题

问题的关键是不能动态创建(增加或删除field),其实水晶报表是可以的~~
不过可惜的是,我使用的版本从来没支持过,所以也不知道具体是个什么样子

使用这个方案,关键的问题是需要做一个解析层,解析它的txt文件,客户并不需要更改rpt,用程序层自己去改就可以了



非常高兴你也曾用过这个方案~~ (*^__^*) 嘻嘻……

希望能多交流
duwa789 2008-01-17
  • 打赏
  • 举报
回复
阿泰你好,谢谢你的回帖和思路,

你的解决方案是这样,
——————————————————————————————————————
解决方案:
用“公式字段”
1、根据字段的最大数量,定义若干个“公式字段”,FormulaFeild1、FormulaFeild2……,公式为空;
2、把“公式字段”按顺序放在“详细资料”里;
3、在程序里动态将“公式字段”赋值为“具体字段”;
如:FormulaField1.Text= "{客户.客户 ID}"
——————————————————————————————————————(我直接复制了*_*)

这种方案我有向我的客户提交过,但他并没有采纳(不过也没有明确反对),他坚持希望得到通过一个可修改的txt文件(sql file)添加/删除/修改存储过程和自定义字段名来达到更新Rpt文件的目的.

现在客户提供了一本叫做“Crystal Reports .NET Programming” by “Brian Bischof”的书,其中有提及Dynamic Data Sources,很可惜,我没能找到完成的书做参考,不知道各位是否能提供信息?
阿泰 2008-01-16
  • 打赏
  • 举报
回复
修正一下
获得要显示的字段字数==>获得要显示的字段参数
阿泰 2008-01-16
  • 打赏
  • 举报
回复
这种实现方法我没有实际做过,不过我觉得用这个思路来做。

请先看一下我之前写的一篇有些类似的文章
http://www.cnblogs.com/babyt/archive/2008/01/03/1024941.html

首先要设定纸型可容纳的最大字段数目,如15列
然后构建一个15列的空报表

你的这种要求,需要多做一个动作,就是类似与界面上的字段选择一样
在拿到SQL语句后,需要做一个解析过程,获得要显示的字段字数,还有要显示的字段的题头名称
得到这两类参数后,传入报表,即可实现

当然这个也是有局限性的 :)
duwa789 2008-01-16
  • 打赏
  • 举报
回复
是误会了,发贴时比较急切推荐专家就是您就选上了,抱歉.

但不知有人可否帮忙提供下解决方案?或者推荐一下专家.

谢谢楼上各位.
十豆三 2008-01-16
  • 打赏
  • 举报
回复
那是因为
changechange
大侠在[其他数据库开发]大版的专家分是NO.1

呵呵,误会了。
OracleRoob 2008-01-15
  • 打赏
  • 举报
回复
楼主找错人了

changechange 2008-01-15
  • 打赏
  • 举报
回复
不知所云

怎么想起来问我?

我是 ACCESS 版主,不懂 VS 更不懂 Seagate Crystal

6,107

社区成员

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

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