Как привязать crystal report к вручную созданному набору данных
Я не хочу создавать набор данных из кода и устанавливать его в качестве источника данных для отчета crystal.
Я не хочу создавать xsd-файл набора данных в VS, если мне это не нужно. Просто чистый код.
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);
проблема здесь в том, что я не знаю, как привязать это к отчету? Как добавить поля?
У меня есть текст и двоичные данные (изображения).
4 ответов
есть только выход. Как предложил Росадо. Немного объяснил 1. Создайте файл RPT. 2. Создайте XSD с нужными столбцами. 3. Перетащите столбцы на rpt. Отформатируйте его по мере необходимости. 4. Теперь создайте соединение, используйте адаптер для заполнения этого набора данных. 5. Заполнение набора данных u автоматически заполнит столбцы отчета.
Ниже приведен пример кода из одного моего проекта.
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;
Добавить объект dataset (.xsd) в visual studio и заполните его одним или несколькими таблицами данных, содержащими те же имена полей, которые вы получили на своем DataSet ds = new DataSet();
затем перейдите к вашему .файл rpt: поля базы данных - > эксперт базы данных - > данные проекта - > ADO.Net затем выберите только что созданный набор данных и создайте отчет по своему усмотрению.
используйте отчет как обычно.
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