急!!-创建动态水晶报表成功,但显示的记录重复 如何解决?什么回事?

hywyjw 2007-07-23 11:58:24

一, 我建一个RPT 水晶报表, 里边就连了要连的数据库表,及字段都放到了水晶报表中,也打好了表格 排好了板。

二, 我建了一个ASPX 里边建了一个动态的数据库联接(数据库与RPT一样的表)

我就想通过ASPX调用该RPT水晶报表,这样一来我可以输入些条件 动态显示数据信息。 但是运行的结果是出现记录重复,如得到的结果应该是5条记录,水晶报表会显示 5X5=25条记录 (显示的记录是对的) 请问是什么一回事?

同时建了一个 GridView1 一起帮定数据库显示, 它的显示结果是正确的(记录条数)。



代码如下
--------------------------------------------------------------------------
protected void Page_Load(object sender, EventArgs e)
{
title = myclass.setwebtitle();
Conn1 = new SqlConnection(myclass.setconn());
if (!IsPostBack)
{
bind();
}
}


protected void bind()
{
string where = "",path_rpt=myclass.rpt_file()+"JH_SPQKB.RPT";
if (TextBox1.Text != "")
{
string y1, m1;
y1 = TextBox1.Text.Substring(0, 4);
m1 = TextBox1.Text.Substring(5, 2);
where = "WHERE (YEAR(B.SPSJ)={0})AND(MONTH(B.SPSJ)={1})AND(A.XMBH_1=B.XMBH_1)AND(B.SPR=C.YHM)AND(C.JS='计划项目负责人')";
where = string.Format(where, y1, m1);

string sqlstr = " SELECT A.XMBH,A.XMMC,A.JSGM,A.PZTZGSR,A.SBSJ,B.SPSJ,B.SPJG,B.SPR FROM LXSBB A , LXSPB B ,YHGLB C ";
if (where != "")
sqlstr += where;

CrystalDecisions.CrystalReports.Engine.ReportDocument cr = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
if (!cr.IsLoaded)
cr.Load(path_rpt);

cr.SetDatabaseLogon("sa", "12345678", "yy-program","tt_jhxmgl",true );
DataSet dwcustDs = new DataSet();
dwDap = new SqlDataAdapter(sqlstr, Conn1);
dwDap.Fill(dwcustDs,"LXSBB");
dwDap.Fill(dwcustDs, "LXSPB");
dwDap.Fill(dwcustDs, "YHGLB");


cr.SetDataSource(dwcustDs);
GridView1.DataSource = dwcustDs;
GridView1.DataBind();

CrystalDecisions.CrystalReports.Engine.TextObject objTitle = cr.ReportDefinition.ReportObjects["Title"] as CrystalDecisions.CrystalReports.Engine.TextObject;
objTitle.Text = "项目审批情况表 (" + TextBox1.Text + ")";

Label1.Text = objTitle.Text;

CrystalReportViewer1.ReportSource = cr;

CrystalReportViewer1.RefreshReport();


}



protected void Button1_Click(object sender, EventArgs e)
{
bind();
}




大家帮看一下呀。



如查我的查询结果 是 一条记录 那么这个结果在水晶报表是正确的。


假如你的查询结果 是多条记录, 那么 这个结果 在水晶报表就会出现 N x N 条得复了N次的记录

例如正确结果是2条记录 水晶报表会出现二次一样的两条记录 一共四条

例如正确结果是5条记录 水晶报表会出现5次一样的5条记录 一共25条记录


烦死俺了!!!

...全文
426 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hywyjw 2007-09-02
  • 打赏
  • 举报
回复
我的问题也解决了。 我把多个表做成一个视图, 然后报表就相当于只调用一个视图 SELECT * FROM 视图 相当于一个表,


问题已解决 多谢大家
tangserver 2007-09-02
  • 打赏
  • 举报
回复
那还不结帖!!!!
chenjaichang 2007-08-31
  • 打赏
  • 举报
回复
顶~
SUNSHINE2007 2007-08-15
  • 打赏
  • 举报
回复
---------帮顶-----------
---------帮顶-----------
---------帮顶-----------
tangserver 2007-08-13
  • 打赏
  • 举报
回复
我的问题解决了,你的还没解决阿?重复是你DataSet 的问题,把数据分开来传给子报表就好了
gxj022 2007-08-10
  • 打赏
  • 举报
回复
我在vs.net2003下用dataset 操作sql数据库,在水晶报表里面使用dataset中的数据表,但是出现这种情况,有些报表可以查询到结果,有些就查询不出来,请问这是什么问题呢?
  我操作的步骤:1.在水晶报表所在的项目中添加你要添加数据的Dataset(为了更直观而已),打开你要做的水晶报表,并选择“字段资源管理器”选项卡-》选中“数据库字段”-》右键-》添加/删除数据库-》在弹出的“数据库专家”窗中的项目数据中选择“ADO.NET数据集”,并找到你之前做好的Dataset选中便可以添加。
2.回到设计报表界面,将你要显示的字段从刚添加Dataset中拖到报表上,就可以。(至于放在什么地方好,放在什么那一节才能显示你想要的数据,那你自己都试试就知道了)
3.去到你控制打开报表的代码下加上:
Dim 报表实例 As New 你设计的报表
报表实例 .SetDataSource(你创建的Dataset)
4.再加代码把你的报表打开就可以了
 程序代码:
'打开数据库连接
Call openconn()
'定义 dataAdapter对象
Dim daPrintzhsjProEff As New SqlClient.SqlDataAdapter(strSearch, conn)
dsPrintzhsjProEff.Reset()
' 用定义的dataset对象dsPrintzhsjProEff 填充 DataAdapter对象daPrintzhsjProEff
daPrintzhsjProEff.Fill(dsPrintzhsjProEff, "zhsjProEff_rpt")
'设置 报表对象 rptPrintzhsjProEff 的数据源
rptPrintzhsjProEff.SetDataSource(dsPrintzhsjProEff.Tables(0))
Me.crv_zhsjProEff.DisplayToolbar = True
Me.crv_zhsjProEff.ReportSource = rptPrintzhsjProEff
Me.crv_zhsjProEff.Refresh()
  我的问题:
  1。dataset中为什么数据表中有些字段有“小钥匙”标记〔见图1〕,小钥匙标  记的是不是就是关键字?这个小钥匙标志我还可以在xsd文件中人工控制它是否显示。
    2.就是在水晶报表中添加完了“字段管理器”中的数据库中的表的字段后,程序运行后有些能够打印出来〔见图2〕,有些不能打印出来(见图3),请问这是什么原因呢?
请各位给我看看,谢谢了。
  我的qq19434696 ,邮箱xjx022@163.com
tangserver 2007-07-27
  • 打赏
  • 举报
回复
我的问题也是出现重复记录NxN次,来个大侠解决下阿
hywyjw 2007-07-24
  • 打赏
  • 举报
回复
如果是多表操作,注意设置好表间的连接关系,看看“数据库专家”里表的链接选项是否有问题!

------------------------------------------------------------------------------
我已经设置了三个表之间的联接, 因为年份与月份是程序给用户输入的 所以这个条件没有设置,只有程序运行时 才会让用户输入年份月份 并执行对应的SQL
xwdd129 2007-07-23
  • 打赏
  • 举报
回复
如果是多表操作,注意设置好表间的连接关系,看看“数据库专家”里表的链接选项是否有问题!

4,819

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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