如何将水晶报表绑定到手动创build的数据集

我不想从代码创build数据集,并将其设置为水晶报表的数据源。
我不想在VS中创build一个DataSet的xsd文件,如果我不需要。 只是纯粹的代码。

DataSet ds = new DataSet(); DataTable tbl = new DataTable(); DataColumn cln = new DataColumn(); // I fill row, columns, table and add it to ds object ... 

那么当我需要报告我使用:

 myReport.SetDataSource(ds); 

这里的问题是我不知道如何绑定这个报告? 如何添加字段?
我有一个文本和二进制数据(图像)。

只有出路 正如rosado所build议的那样。 一点点解释1. CReate一个RPT文件。 2.用所需的列创build一个XSD。 3.拖放rpt中的列。 根据需要进行格式化。 4.现在创build连接,使用适配器来填充该数据集。 5.填充数据集将自动填充报告列。

以下是一个矿山项目的示例代码。

 Invoice invoice = new Invoice(); // instance of my rpt file var ds = new DsBilling(); // DsBilling is mine XSD var table2 = ds.Vendor; var adapter2 = new VendorTableAdapter(); adapter2.Fill(table2); var table = ds.Bill; var adapter = new BillTableAdapter(); string name = cboCustReport.Text; int month = int.Parse(cboRptFromMonth.SelectedItem.ToString()); int year = int.Parse(cboReportFromYear.SelectedItem.ToString()); adapter.Fill(table, name,month,year); ds.AcceptChanges(); invoice.SetDataSource(ds); crystalReportViewer1.ReportSource = invoice; crystalReportViewer1.RefreshReport(); 

像这样尝试…

 DataSet ds = new DataSet(); oleAdapter.Fill(ds); ReportDocument rpt = new ReportDocument(); rpt.load(); rpt.Database.Tables[0].SetDataSource(ds.Tables[0]); this.crystalReportViewer1.ReportSource = rpt; 

在Visual Studio中添加一个数据集对象(.xsd),并填充一个或多个包含DataSet ds = new DataSet();上的SAME字段名称的数据表DataSet ds = new DataSet();

然后进入你的.rpt文件:数据库字段 – >数据库专家 – >项目数据 – > ADO.Net数据集,然后select你刚刚创build的数据集并devise报告。

照常使用报告。

 myReport.SetDataSource(ds); 
 // Use dummy image data column namely Photo, to store file system Images into data base table GlobalVar.sql = " SELECT rollno AS reg_no, CAST(0xADB AS image) As Photo FROM mast_roll Where Rollno IN ('120512','120518') "; GlobalVar.da = new OleDbDataAdapter(GlobalVar.sql, GlobalVar.con); GlobalVar.ds = new DataSet(); GlobalVar.da.Fill(GlobalVar.ds, "st_detail"); // load photo into data table foreach (DataRow dr in GlobalVar.ds.Tables["st_detail"].Rows) { // complete path of photo file imgPath = @"D:\ImageSt\" + dr["reg_no"].ToString() + ".jpg"; // read photo from file FsImage = Image.FromFile(imgPath); // convert image file to array byte[] PhotoArr; using (MemoryStream ms = new MemoryStream()) { FsImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); PhotoArr = ms.ToArray(); } // update photo dr["photo"] = PhotoArr; // end array conversion } // end loading