zsww-成功源于创新!

最新评论

共4页: 1 2 3 4 下一页 
请问使用水晶报表时,提示要输入用户名与密码,注意不是数据库的> 因为网站是放在服务器上去,请问在那里配置?文件配置读写权限了,IIS还须怎么样配置?
请问两个表关联起来怎么办?
Re:SQL Reporting Services 困惑的解决 直接传递参数并用ReportViewer来呈现报表 Mr.Ren 嘚、|遊 樂 場 2010-08-26 10:48  
我怎么找不到楼主说的那个项目呢,只有dll。
按照以上步骤操作 我用了一个联合查询集合赋给DataSet,但是绑定给报表对象后 rpt.SetDataSource(ds) this.CrystalReportViewer1.ReportSource = rpt; 没有数据显示 单独运行sql语句是正确 很是奇怪! 请问估计是我代码有什么问题?谢谢
XFire提供了四种身份验证的方式,分别是http验证,JSR181,Handler验证,WS-Security。

SOAP的原理告诉我们一个WS交互的流程是客户端发送请求->服务器接收请求->服务器发送数据->客户

端接收数据,handler可以让我们在这四个操作中之前进行编码,所以,我们的验证进行在客户端发送请

求和服务器接收请求的时候,因此,我们要写两个handler,然后把它们装配上就可以了。

Handler验证方式如下:

主要参考的实例是XFIREdemo中的BOOK

服务器的代码如下

package com.nstar.xfire.auth;

import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.XFireRuntimeException;
import org.codehaus.xfire.handler.AbstractHandler;
import org.jdom.Element;
import org.jdom.Namespace;

public class XfireAuthenticationHandler extends AbstractHandler {
private static final String USERNAME = "biansutao";
private static final String PASSWORD = "12345678";
private static final String NS = "http://xfire.codehaus.org/biansutao";

public void invoke(MessageContext ctx) throws Exception {
// Check if header exists

Element header = ctx.getInMessage().getHeader();
if (header == null) {
throw new XFireRuntimeException("Missing SOAP Header");
}
// Does it have version tag
Element name = header.getChild("USERNAME",Namespace.getNamespace(NS));
Element pass = header.getChild("PASSWORD",Namespace.getNamespace(NS));
if(name.getValue().equals(USERNAME) && pass.getValue().equals(PASSWORD)){
System.out.println("验证通过");
}
else{
System.out.println("验证未通过");
throw new XFireRuntimeException("Authentication Failure");
}
ctx.setProperty("USERNAME", USERNAME);
ctx.setProperty("PASSWORD", PASSWORD);
}
}

然后需要在services.xml中配置如下:

xml 代码

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>HelloWordService</name>
<serviceClass>com.nstar.xfire.IHelloWordService</serviceClass>
<implementationClass>
com.nstar.xfire.HelloWordServiceImpl
</implementationClass>
<style>wrapped</style>
<use>literal</use>
<scope>application</scope>
<inHandlers>
<handler handlerClass="com.nstar.xfire.auth.XfireAuthenticationHandler"></handler>
</inHandlers>
</service>
</beans>


客户端代码

package com.nstar.xfire.client.auth;

import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.handler.AbstractHandler;
import org.jdom.Element;

public class ClientHeaderHandler extends AbstractHandler {
//用户验证
private static final String USERNAME = "biansutao";
private static final String PASSWORD = "12345678";
private static final String NS = "http://xfire.codehaus.org/biansutao";
public void invoke(MessageContext ctx) throws Exception {
Element header = ctx.getOutMessage().getOrCreateHeader();
header.addContent(new Element("USERNAME",NS).addContent(USERNAME));
header.addContent(new Element("PASSWORD",NS).addContent(PASSWORD));
}

}



package com.nstar.xfire.client;

import java.util.List;
import java.lang.reflect.Proxy;
import java.net.MalformedURLException;
import java.util.ArrayList;

import org.codehaus.xfire.*;
import org.codehaus.xfire.client.Client;
import org.codehaus.xfire.client.XFireProxy;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import com.nstar.xfire.IHelloWordService;
import com.nstar.xfire.Student;
import com.nstar.xfire.client.auth.ClientHeaderHandler;

public class HelloWorldClient {

/**
* @param args
*/
public static void main(String[] args) {
Service serviceModel = new ObjectServiceFactory().create(IHelloWordService.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
String url = "http://10.232.75.61:8090/Xfire/services/HelloWordService";
try {
IHelloWordService service = (IHelloWordService) factory.create(serviceModel, url);

XFireProxy proxy = (XFireProxy)Proxy.getInvocationHandler(service);
Client client = proxy.getClient();
client.addOutHandler(new ClientHeaderHandler());

List list = new ArrayList();
List list1 = new ArrayList();
list.add(new String("测试"));
int age = service.getAge("边苏涛");
String name = service.getName(1);
Student s = service.getOneStudent(27);
list1 = service.getStudent(list);
System.out.println("边苏涛's age =="+age);
System.out.println("学号为1的学生姓名 "+name);
System.out.println("age == "+s.getAge()+" name == "+s.getName()+" list content

"+s.getList().get(0).toString());
System.out.println(list1.size());
for(int i=0;i<list1.size();i++){
System.out.println(list1.get(i).toString());
}
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}






花了两天时间,终于把jasperreport与项目中使用的hibernate结合使用.最新版本的ireport支持HQL查询,可以在 ireport里面写HQL语句查询并设计好报表.需要注意的是把hibernate.cfg.xml包括进classpath!!(菜单options ->classpath进行设置)给张图:




设计好报表之后编译成jasper文件,在servlet中调用,我们需要实现自己的hibernate datasource:

public class HibernateQueryResultDataSource implements JRDataSource {

private String[] fields;

private Iterator iterator;

private Object currentValue;

public HibernateQueryResultDataSource(List list, String[] fields) {
this.fields = fields;
this.iterator = list.iterator();
}

public Object getFieldValue(JRField field) throws JRException {
Object value = null;
int index = getFieldIndex(field.getName());
if (index > -1) {
Object[] values = (Object[]) currentValue;
value = values[index];
}
return value;
}

public boolean next() throws JRException {
currentValue = iterator.hasNext() ? iterator.next() : null;
return (currentValue != null);
}

private int getFieldIndex(String field) {
int index = -1;
for (int i = 0; i < fields.length; i++) {
if (fields[i].equals(field)) {
index = i;
break;
}
}
return index;
}

}

此类构造函数需要两个参数,查询结果的list以及查询的所有属性名(这些属性名必须和报表界面的field名一致)

,使用方式如下:

1.导出pdf:

File reportFile = new File(getServletContext().getRealPath(
"/reports/" + queryResult.getReportFileName() + ".jasper"));

HibernateQueryResultDataSource dataSource = new HibernateQueryResultDataSource(
queryResult.getList(parameters), queryResult.getFields());
if (reportType.equals("pdf") || reportType.equals("")) {
try {
byte[] bytes = JasperRunManager.runReportToPdf(reportFile
.getPath(), null, dataSource);
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();

} catch (Exception e) {
e.printStackTrace();
}
}

2.导出excel,需要把poi-2.0-final-20040126.jar放进web的lib里:

try {

JasperPrint print = JasperFillManager.fillReport(
new FileInputStream(reportFile), null, dataSource);
// JRXlsExporter t=null;
JRXlsExporter jRXlsExporter = new JRXlsExporter();
ByteArrayOutputStream xlsReport = new ByteArrayOutputStream();
jRXlsExporter.setParameter(JRExporterParameter.JASPER_PRINT,
print);
jRXlsExporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
xlsReport);
jRXlsExporter
.setParameter(
JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,
Boolean.TRUE);
jRXlsExporter.setParameter(
JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,
Boolean.TRUE);
// jRXlsExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,ReportsConstants.bankDetailsHtml);

// jRXlsExporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,
// Boolean.TRUE);

jRXlsExporter.exportReport();
byte[] bytes = xlsReport.toByteArray();


response.setContentType("application/vnd.ms-excel");
response.setContentLength(bytes.length);
xlsReport.close();
OutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();

} catch (Exception e) {
e.printStackTrace();
}

this.ReportViewer1.Format=“pdf“;
为什么我的控件上没有Format这个属性
呵呵!!楼主的解释很详细,谢谢
我想问问,我是否在报表查询字符中用“SELECT * FROM IN_INVVEND_TBL WHERE(@Strcondition)”来给它传条件,
如果不可以,当条件为1个以上怎样组合条件,难道只能用存储器来拼条件吗
不知道还有没有人回答:
我发现如果报表取中文名字,打印js出错。还有一个问题请大家帮忙。
我做的是可以折叠的报表,直接在ie中输网址可以。但是用这个控件放到程序中
点击展开无效。
那为兄台,有这个控件吗?可否给小弟一份。在下感激不尽。。
msn:dennyhong1108@hotmail.com
安装不了大多是没有装IIS的原因 可以试一下
我们的项目正要用到报表功能,你的这个很有启发性,但是我还有另外一个问题是我们用的是Sql Server 2005 的Reporting Server ,但是开发环境用VS 2003, 这样的话还能用吗?因为VS2003 中没有ReportViewer控件,我该安装什么插件或者怎样才能解决我的这个问题?
谢谢你!
请好心大侠回信:zsy_1205@hotmail.com
感谢分享,正在研究中,SQL2KSP3A的标准版我有,KEKE如果还没找到可以与我联系。
re: SQL Reporting Services 使用感受 找奔 2006-08-24 17:04  
数据库的名称和密码
我进报表数据库的时候是用window集成,
老兄的这篇文章写的非常清楚。多谢
邀请楼主加入报表团队,不知可否? :)
re: SQL Reporting Services 使用感受 dianefang 2006-07-18 14:33  
回楼上的,你在配置数据源的地方,写下访问数据库的名称和密码,并记住。
我的出现以下错误,那位兄弟帮帮忙了。急啊
Server Error in '/Eform' Application.
--------------------------------------------------------------------------------

Error in File D:\Eform\PurchaseCry\PurCryKin.rpt: Access to report file denied. Another program may be using it.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: CrystalDecisions.CrystalReports.Engine.LoadSaveReportException: Error in File D:\Eform\PurchaseCry\PurCryKin.rpt: Access to report file denied. Another program may be using it.

Source Error:


Line 54: crExportOptions.ExportFormatType =ExportFormatType.PortableDocFormat ;
Line 55:
Line 56: oRpt.Export();
Line 57: oRpt.Close();

对于不用报表指定的参数来传参数,各位有什么好的意见吗?
(我想不用报表的参数,而是自己来写参数,让报表接收我传入的参数,来查询数据.只能用存储过程吗?)
第2步的ReportView.cs中的SetParameter方法在哪里定义的?
我这里是水晶报表华南的核心,有这方面疑问的可以给我有件!tliuz@todaychina.com
@我爱程序
我也遇到相同的問題,就是SQL設計器中的SQL語句不可以使用表達式,
一種解決方式是使用存儲過程,將參數傳入,存儲過程生成動態SQL語句,
我用的是Oracle,可以使用Excute Immediate "SQL" 語句
但是由於我這裡使用存儲過程很不方便,希望能採用其它方式解決,現在還沒有好的辦法。
楼主,我在使用的时候出现个问题:制作,部署报表都可以,但在http://localhost/reports里
查看报表时报:
登录失败。
登录失败: 未知的用户名或错误密码。 (异常来自 HRESULT:0x8007052E)
的错误.这是怎么回事.
re: SQL Reporting Services 使用感受 xiaobai 2005-12-02 10:38  
MSDN上面两位老师的在线课程看过了吗。也指出在预览界面看到的报表和最终部署的报表有可能不一样。所以你在做报表的时候先指定完部署之后按F5直接看部署后的报表格式。这样才能解决问题。不知道现在出的SQL2005里面的BI有没有这方面的改进。我还没有搞到2005
re: SQL Reporting Services 使用感受 xiaobai 2005-12-02 10:33  
打上SP2是否能好些。SP2出来了。在导出格式方面做了些相应的改进。还增强了部分模块的功能。
re: SQL Reporting Services 使用感受 lihli 2005-11-24 14:09  
谁知道用.NET 2003 开发的报表能够正常的 预览 但是部署后的图文件不能显示
请问那位指点.......(系统是WINGDOWS 2000server版)谢谢!!!!
REPORTING SERVERS 部署问题 lihli 2005-11-24 13:57  

为什么在IE中部署后的图型文件不能显示(是ie 设置的问题吗?)
本人想在WIN2003装REPORTING SERVICES,但是需要SQL2KSP3A的标准版,那里有免费下载呀?我找了半天了没有找到呀,那位好心大侠能否回信到HYF5210@HOTMAIL.COM。谢谢!!
rpt 内出错:拒绝访问报表文件。其他程序可能正在使用它。
在自己机器上可以用.放到别的机器上就不可以用了.
而且在别的机器上.可以打开报表.就是导出时出现了上面那个错误.

我的QQ107681435
email hjflmzhu@126.com
rpt 内出错:拒绝访问报表文件。其他程序可能正在使用它。
在自己机器上可以用.放到别的机器上就不可以用了.
中国用户需要什么样的web报表工具(转自中国java开发网)
1 .设计方便
根据报表的绘制方式,报表工具大致可以分为画布方式和单元格方式。

画布方式报表工具的特点是将报表水平分割成若干个区域,在各个区域上放置报表组件,报表组件位置可以是任意的,各组件可以互相重叠。画布式报表工具的优点是可以做到可视化数据绑定,组件位置自由。缺点是插入列、组件对齐困难,画表格线经常出现线与线之间的错开现象。比较著名的画布式报表工具主要有Crystal Report、FastReport、StyleReport等。

单元格式报表工具,是将报表看作是由一系列连续的单元格组成的区域。要改变报表组件(一般是文本或图形)的位置,只能通过改变行高列宽方式进行,组件之间不能重叠,单元格可以合并。单元格式报表工具的优点是画线,插入列,多行列标题绘制非常方便,但格子中的动态数据绑定,往往需要手写公式来进行。F1BOOK是一款比较著名的单元格式报表工具。

中国式报表的特点是报表由一系列的横线与竖线围成一个个封闭的格子,然后在各个格子中填充相应的数据。因此,画线的简单与否,直接关系到设计报表的效率。

报表工具应该根据国内报表用户的需求特点,融合两种报表工具的优点,使用户可以可视化地绑定数据,也可以象Excel一样来画线,从而大大提高了设计中国式报表的效率。杰表(www.jatools.com)提出的"超级cell"概念,很好地结合了这两类报表工具的优点,成为市面上唯一一款,抛弃画布,还是单元格的路线之争,坚持走两者融合道路的报表工具。

2.交叉报表功能
交叉报表是国内报表用户经常使用的一类报表,也是用户极为关心的考察报表工具适用性的重要指标,但这一块,也往往被许多国外的报表软件所忽视。

3. 集成方便
需要完整的api支持与扩展,所谓“授人以鱼,不若授人以渔”。因为报表工具,通常是作为产品型态存在,因为是产品,必须是可用的,可定制的。这一点不同于项目。
请教:
Reporting Services中传递中文参数时,具体应该如何处理?谢谢。
请教:我在报表定阅的时候只能发送局域网内部的邮件地址,外网的邮件收不到,请问是怎么回事,如何解决,谢谢.
请好心大侠回信 liuhh@softbrain.com.cn
SQL菜鸟求救 starsrive@xinhuanet.com 2005-09-22 11:36  
我这里有这样一个情况
数据库 客户 商品
在调用每个客户的商品的时候 发生窜表 出现其他客户名称 如何解决 菜鸟求救啊!!!!!!!!!!!!!!!!!!!!!
请好心大侠回信 starsrive@xinhuanet.com
报表工具,如果要做的表简单,有一大堆工具可以去挑。但是,如果要做的表复杂,就要首先考虑报表做不做得出来,要花多少时间做。

不相信的话可以看看这篇文章:你如何做这五张报表?(http://www.runqian.com.cn/tech/tech_016.htm

建议面对复杂报表的用户,评估一下润乾报表(www.runqian.com.cn),它采用了新一代的报表模型,设计复杂报表的效率比Crystal Report之类的高上若干倍,更不用说有些报表是拿那些传统工具做不出来的了。
报表增加参数字段后设定参数后可以显示,倒出时PDF时出错:

丢失参数字段当前值。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: CrystalDecisions.CrystalReports.Engine.ParameterFieldCurrentValueException: 丢失参数字段当前值。

源错误:


行 138: crExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
行 139:
行 140: oRpt.Export();
行 141: oRpt.Close();
行 142:
楼主能指点一二吗?我的QQ:123637765 MSN:owen_unico@msn.com
为什么我将一个联合查询的存储过程作为报表的数据源时,怎么也看不到字段信息呢。
你好,為什麼存儲過程中的自定議的字段在水晶報表中找不到呢,而實際存在的表的字段就可以找到,推的拉的方式都試過了,都沒有用哦,請指教
你好,為什麼存儲過程中的字段在水晶報表中找不到呢,推的拉的方式都試過了,都沒有用哦,請指教
为什么我导出PDF的时候只有表格没有数据呢?能不能指点一下?
请问楼主:能否通过传递参数来控制报表中的控件的显示或隐藏?
小弟使用Reporting Service中遇到一个问题,请问各位朋友知道:如何通过向报表传递参数来控制报表中表格某一列显示或者隐藏?
afaf
re: SQL Reporting Services 使用感受 metoo 2005-07-19 23:32  
互相交流一下reporting service学习体会好吗,我的qq:25719085
共4页: 1 2 3 4 下一页 
<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

导航

统计

公告

目前主要学习应用:


Counters
Counters
昵称:zsww
园龄:8年1个月
粉丝:3
关注:0

搜索

 
 

常用链接

随笔分类

随笔档案

经常光顾的@Blog

友情@Blog

最新评论

阅读排行榜

评论排行榜

推荐排行榜