在VS2010中新建一个“Windows 窗体应用程序”项目,在该项目中添加一个水晶报表“CrystalReport1.rpt”,然后在项目上点击鼠标右键属性,将“目标框架”改为“.Net Framework 4”
打开app.config文件,在“startup”节点一个“useLegacyV2RuntimeActivationPolicy="true"”属性
<startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup>
在Form1窗体中,从工具箱拖出一个Crystal Report Viewer控件,双击Form窗体,是双击Form窗体,不是Crystal Report Viewer,在后台的Form_Load事件中写入如下代码:
private void Form1_Load(object sender, EventArgs e) { string connStr = "Data Source=.\SqlExpress;Initial Catalog=dbTest;User ID=sa;Password=test"; SqlConnection conn = new SqlConnection(connStr); conn.Open(); try { string sql = "SELECT * FROM Customer where email!='test@gmail.com'"; SqlDataAdapter sda = new SqlDataAdapter(sql, conn); DataSet ds = new DataSet(); sda.Fill(ds, "tmpTable"); string reportPath = System.Windows.Forms.Application.StartupPath + @"CrystalReport1.rpt"; ReportDocument rd = new ReportDocument(); rd.Load(reportPath); rd.SetDataSource(ds.Tables[0].DefaultView); this.crystalReportViewer1.ReportSource = rd; } catch (Exception ex) { throw new Exception(ex.Message.ToString()); } finally { conn.Close(); } }
这样就OK了