仰天一笑

昨日不悔,今日勿失,明日莫忧! —徐羽

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  230 随笔 :: 27 文章 :: 803 评论 :: 39 Trackbacks



水晶报表一般在建立数据集之后进行绑定,下面我介绍一种,直接用Sql语句绑定,不需要设置CrystalReportViewer1的报表路径,不需要单独建立数据集的简便方法。

代码如下:

  CrystalReport3 oCR = new CrystalReport3(); // 绑定的.rpt 对象

   // sql绑定数据
   SqlConnection cnn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionSqlServer"]);
   SqlDataAdapter cmd1 = new SqlDataAdapter("select top 1 * from meetingplan",cnn);
   DataSet ds = new DataSet();
   cmd1.Fill(ds,"meetingplan");    

   oCR.SetDataSource(ds);
   this.CrystalReportViewer1.ReportSource = oCR;  // 绑定rpt文件
   cnn.Close();

注:meetingplan要与报表专家CrystalReport3绑定的一致,否则会出现查询引擎错误。



posted on 2006-05-23 12:18 仰天一笑 阅读(788) 评论(1)  编辑 收藏 所属分类: 原创天地ASP.Net-C#

评论

你好
我遇到了一个水晶报表绑定的问题,
string str;
str = Application.StartupPath+@"\Report\PO_OutstandingbyVendor_Date.rpt";

TableLogOnInfo logOnInfo = new TableLogOnInfo();
ReportDocument oRpt = new ReportDocument();
try
{
oRpt.Load(str);
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}

string path;
/*
* 两种不同的获取目录的方法
* */
//path=@AppDomain.CurrentDomain.SetupInformation.ApplicationBase+@"inifile\config.ini";
path=Application.StartupPath+@"\inifile\config.ini";

IniFile inifile = new IniFile(path);
Security security = new Security();

Server = logOnInfo.ConnectionInfo.ServerName = inifile.IniReadValue("DataBase","Server");
DataBase = logOnInfo.ConnectionInfo.DatabaseName = inifile.IniReadValue("DataBase","DataBase");
UserID = logOnInfo.ConnectionInfo.UserID = inifile.IniReadValue("DataBase","UserID");
/*
* 用了以下这一句,在调用报表时,会出现“未将对象引用设置到对象的实例”
*
* logOnInfo.ConnectionInfo.Password = inifile.IniReadValue("DataBase","PassWord");
*/
Password=logOnInfo.ConnectionInfo.Password = security.Decode(inifile.IniReadValue("DataBase","PassWord"));

try
{
oRpt.Database .Tables [0].ApplyLogOnInfo (logOnInfo);
DataSet ds=new DataSet();
ds=this.SQLquery(startdate,enddate,part_id,vendor_id,description);

this.dataGrid1.DataSource=ds;
oRpt.SetDataSource(ds);

oRpt.Refresh();
crp_view.ReportSource = oRpt;//建立.rpt文件与crp_view文件之间的连接
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
crp_view.ReportSource=oRpt; 请问这哪里有错误呢??

下面是我的DataSet
string strSQL="SELECT VENDOR.NAME, PURC_ORDER_LINE.PART_ID, PURC_ORDER_LINE.ORDER_QTY,"
+" PURC_ORDER_LINE.TOTAL_RECEIVED_QTY, PURCHASE_ORDER.ORDER_DATE, PURCHASE_ORDER.ID,"
+" PURCHASE_ORDER.VENDOR_ID, PURC_ORDER_LINE.PURCHASE_UM, PURC_ORDER_LINE.DESIRED_RECV_DATE, "
+" PURC_ORDER_LINE.MFG_NAME, RECEIVER_LINE.RECEIVER_ID, RECEIVER_LINE.RECEIVED_QTY, "
+" RECEIVER.RECEIVED_DATE, PART.DESCRIPTION"+
" FROM ((((PURC_ORDER_LINE LEFT OUTER JOIN RECEIVER_LINE ON "
+" (PURC_ORDER_LINE.PURC_ORDER_ID=RECEIVER_LINE.PURC_ORDER_ID) AND "
+" (PURC_ORDER_LINE.LINE_NO=RECEIVER_LINE.PURC_ORDER_LINE_NO)) INNER JOIN "
+" PURCHASE_ORDER ON PURC_ORDER_LINE.PURC_ORDER_ID=PURCHASE_ORDER.ID) LEFT OUTER JOIN "
+" RECEIVER ON RECEIVER_LINE.RECEIVER_ID=RECEIVER.ID) INNER JOIN VENDOR ON "
+" PURCHASE_ORDER.VENDOR_ID=VENDOR.ID) INNER JOIN PART ON PURC_ORDER_LINE.part_ID=PART.ID ";

if (strPar.Length != 0)
{
strSQL=strSQL+" where "+strPar;
}


string local=System.Net.Dns.GetHostName();
string strcon="workstation id="+local+";packet size=4096;user id="+UserID+";data source="+Server+";persist security info=True;initial catalog="+DataBase+";password="+Password;

SqlConnection conn =new SqlConnection(strcon);
SqlCommand comm =new SqlCommand(strSQL,conn);
SqlDataAdapter da =new SqlDataAdapter();
conn.Open();
da.SelectCommand =comm;
DataSet ds =new DataSet();
da.Fill(ds);
conn.Close();
return ds;
  回复  引用    


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-08-01 16:56 编辑过