Crystal 보고서를 사용하지 않았습니다. 하지만 프로젝트의 경우 인쇄 문제로 인해 빠른 보고서 대신 사용해야합니다. 몇 시간 동안 문제를 해결하려고했지만 아직 해결 방법을 찾지 못했습니다.Crystal 보고서에서 사용자 정의 개체를 사용하는 방법
글쎄, 크리스탈 리포트에 사용할 클래스. 청구서를 작성하고 싶습니다.
데이터베이스에서 일부 데이터를 구성하여 이러한 클래스에 저장했습니다.
public class ReportInfo
{
public DateTime Date { get; set; }
public string BillNumber { get; set; }
public string Address { get; set; }
public string BillAddress { get; set; }
public string BillOwner { get; set; }
public string TaxNumberIDNumber { get; set; }
public List<ReportProduct> Products { get; set; }
public string PaymentType { get; set; }
public string MoneyWithText { get; set; }
}
public class ReportProduct
{
public string ProductInfo { get; set; }
public double Amount { get; set; }
public string ProductCode { get; set; }
public double Tax { get; set; }
public double Price { get; set; }
}
보시다시피, 나는 어떤 값이 될 것이다 보고서를 (만들려면 하나 개의 법안 클래스 (보고서 정보) 및 reportinfo 클래스의 제품 (보고서의 producs)에 대한 목록 ...
있다 청구서 번호, 날짜 ...) 및 세부 정보 영역의 일부 값 (제품 정보)이 포함됩니다. 여기
내가 한 법안 (또한 내가 보고서 viewert에 청구서를 넣어하는 방법을 잘 모릅니다) 내가 그 코드를 실행하면
var serialID = Convert.ToInt32(dgBillSerials.SelectedRows[0].Cells[0].Value);
var bills= BillsFromDatabase.Bills.Where(b => b.BillSerialID == serialID && (b.BillNumber>=txtFirstBillNumber.Value && b.BillNumber<=txtLastBillNumber.Value)).ToList();
var products = BillsFromDatabase.Products.Where(p => p.BillID == bills[0].ID).ToList();
ReportInfo ri = new ReportInfo();
ri.Address = bills[0].Address;
ri.BillAddress = bills[0].BillAddress;
ri.BillNumber =bills[0].SerialNumber + bills[0].BillNumber.ToString();
ri.BillOwner = bills[0].OwnerType == "sirket" ? bills[0].PersonTitle : bills[0].Name;
ri.Date = bills[0].BillDate;
ri.MoneyWithText = "deneme";
ri.PaymentType = bills[0].PaymentType;
ri.TaxNumberIDNumber=bills[0].OwnerType=="sirket"?bills[0].TaxDepartment + " " + bills[0].TaxNumber:bills[0].NationalID;
ri.Products = new List<ReportProduct>();
double sum=0;
foreach (var product in products)
{
sum += product.Price;
ri.Products.Add(new ReportProduct()
{
Price = product.Price,
ProductCode = product.ProductCode,
ProductInfo = product.ProductInfo,
Amount = Math.Round((product.Price/118)*100,2),
Tax =Math.Round(product.Price -((product.Price/118) * 100),2)
});
}
ri.MoneyWithText = Utils.MoneyToText(sum);
ReportDocument crystalReport = new ReportDocument();
crystalReport.Load(@"..my path....\BillCrystalReport.rpt");
crystalReport.SetDataSource(ri);
crystalReportViewer1.ReportSource = crystalReport;
예외 즉 던져 그것을 한의 "소스 개체가 잘못되었습니다" crystalReport.SetDataSource (ri);
나는 그것이 불공평 해 보인다는 것을 알고 있지만 내 수정 보고서에 두 개의 테이블을 구현하는 방법을 모른다. 내가 결정 repot 내 두 클래스를 추가 할 때 내가 한 클래스와 그 확인을 위해이 일을 만들어 그
것 같습니다. 하지만이 튜토리얼에서는 여러 데이터 객체에 대해 이야기하지 않습니다.
http://msdn.microsoft.com/en-us/library/ms227595(v=vs.80).aspx
추신 : 2012 FW 4.0 설치 SAP 크리스탈 리포트 대 사용.