水晶报表主从表问题

wcfboy1 2010-12-21 10:33:22
我用的dataset.xsd作为数据源
报销设计用到主从表 出库和出库明细 浏览时候报
登录失败。详细资料: crdb_adoplus : 未将对象引用设置到对象的实例。文件 C:\DOCUME~1\wang\LOCALS~1\Temp\UplowReport {518B3CFD-9F92-490A-8950-3E2B6FAF111E}.rpt

但是我把自表数据源和报表字段全部删掉 只留主表就没问题

我后台代码如下

string uplowid = "55";

string sql = string.Format(@"SELECT SerialID, BillId, DepotClass, CreateTime,CheckTime,TotalNum, TotalWeight, Memo, CreatePerson, CheckPerson, State, YSerialID, Flag FROM tblUpLow where serialid={0};", uplowid);
string sql1= string.Format(@"SELECT tblUPLowDetail.DetailID, tblUPLowDetail.MainID, tblUPLowDetail.ProductID,
tblUPLowDetail.LocationID, tblUPLowDetail.Num, tblUPLowDetail.Level,
tblUPLowDetail.Batch, tblUPLowDetail.Weight, tblUPLowDetail.LocationCode,
tblUPLowDetail.DepotID, tblDLocation.LocationName, tblDepot.DepotName,
tblProduct.ProductCode, tblProduct.ProductName
FROM tblUPLowDetail INNER JOIN
tblProduct ON tblUPLowDetail.ProductID = tblProduct.ProductId INNER JOIN
tblDepot ON tblUPLowDetail.DepotID = tblDepot.DepotID INNER JOIN
tblDLocation ON tblUPLowDetail.LocationID = tblDLocation.LocationID where mainid={0};", uplowid);

DataTable dt = ACO.DBUtility.DbHelperSQL.ExecuteDataTable(sql, "tblUpLow");
DataTable dt1 = ACO.DBUtility.DbHelperSQL.ExecuteDataTable(sql1, "tblUpLowDetail");
CrystalReportSource1.ReportDocument.Load(Server.MapPath("~/cryreport/UplowReport.rpt"));
CrystalReportSource1.ReportDocument.SetDataSource(dt);
CrystalReportSource1.ReportDocument.SetDataSource(dt1);
CrystalReportSource1.DataBind();
CrystalReportViewer1.ReportSource = CrystalReportSource1;
CrystalReportViewer1.DataBind();


请问是怎么回事
...全文
127 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wcfboy1 2010-12-27
  • 打赏
  • 举报
回复
谢谢上面两位,问题解决
东莞寻香苑 2010-12-21
  • 打赏
  • 举报
回复
不好意思,我在上贴做的和你一样了.
设你的水晶报表中存在这两个表tblUpLow,tblUpLowDetail

DataTable dt = ACO.DBUtility.DbHelperSQL.ExecuteDataTable(sql, "tblUpLow");
DataTable dt1 = ACO.DBUtility.DbHelperSQL.ExecuteDataTable(sql1, "tblUpLowDetail");
ReportDocument oCR = new ReportDocument();
oCR.Load(Server.MapPath("~/cryreport/UplowReport.rpt"));
oCR.Database.Tables["tblUpLow"].SetDataSource(dt);
oCR.Database.Tables["tblUpLowDetail"].SetDataSource(dt1);
CrystalReportViewer1.ReportSource = oCR;


当DataSet中有多个表时(或有子报表时),尽可能用这种方式赋值:http://blog.csdn.net/csui2008/archive/2010/06/18/5678281.aspx
省得出错



东莞寻香苑 2010-12-21
  • 打赏
  • 举报
回复
DataTable dt = ACO.DBUtility.DbHelperSQL.ExecuteDataTable(sql, "tblUpLow");
DataTable dt1 = ACO.DBUtility.DbHelperSQL.ExecuteDataTable(sql1, "tblUpLowDetail");
ReportDocument oCR = new ReportDocument();
oCR.Load(Server.MapPath("~/cryreport/UplowReport.rpt"));
oCR.SetDataSource(dt);
oCR.SetDataSource(dt1);
CrystalReportViewer1.ReportSource = oCR;


阿泰 2010-12-21
  • 打赏
  • 举报
回复
CrystalReportSource1.ReportDocument.SetDataSource(dt);
CrystalReportSource1.ReportDocument.SetDataSource(dt1);

第2句代码覆盖掉了第1句代码的效果,达不到一次性传递两个表给报表的目的。
先把两个表放到一个dataset中,然后把ds传递给报表试试

DataSet ds1 = new DataSet();
ds1.Tables.Add(dt);
ds1.Tables.Add(dt1);
CrystalReportSource1.ReportDocument.SetDataSource(ds);
代码下载链接: https://pan.quark.cn/s/a22871fb98ec 在当前高度竞争的商业环境中,个体经营者与小型仓储管理者正承受着市场压力和不断攀升的运营开支。为了有效应对这些挑战,他们迫切需要一套能够提升工作效率和经营成效的管理工具。基于此需求,一款免费的正版单机版进销存管理软件应时而生,为个体经营者和小型仓储单位提供了一站式的解决方案。 进销存管理软件是企业进行商品流通管理的关键系统,其功能涵盖了商品采购、销售及库存管理这三大核心业务流程。正版免费进销存软件的推出,不仅减轻了企业的财务负担,同时也增强了管理的便捷性和数据记录的精确度。 进货管理构成了整个进销存框架的基础。免费进销存软件配备了详尽的进货管理模块,能够完整记录每次采购的详细信息,包括供应商资料、采购量、单价和总费用等,这对于分析采购成本和控制预算具有重要作用。用户可以利用软件迅速创建采购订单,并对货物的到货状态进行监控。此外,软件还提供采购数据分析工具,协助管理者洞察市场趋势,从而制定更为科学合理的采购计划。 销售管理是进销存软件的重点功能。通过运用此类软件,用户可以精确记录每一笔销售活动,涵盖客户资料、商品规格、销售价格和折扣信息。软件能够自动生成销售凭证,简化交易过程,显著提升工作效率。再者,销售统计分析功能使管理者能够全面了解销售状况,准确识别畅销及滞销产品,进而优化销售策略,增加销售量和盈利。 库存管理对于保障业务连续性和控制成本至关重要。正版免费进销存管理软件能够实时更新库存信息,并对库存水平低于安全线的商品发出警示,有效预防缺货问题。同时,用户可以随时查询库存详情,并执行定期的库存盘点,减少不必要的库存积压,加速资金周转。软件内置的库存调拨和报废处理功能,使库存管...

4,818

社区成员

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

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