문제

C# .NET Windows 앱에서 보고서를 작성해야합니다. SQL Server 2005 데이터베이스 인 Visual Studio 2005를 가지고 있으며 저장 프로 시저 및 데이터 세트를 작성하는 데 상당히 괜찮습니다.

누군가가 저를 보고서를 작성하기위한 올바른 방향으로 가리킬 수 있습니까? 나는 그것을 해결할 수없는 것 같다. 몇 가지 예는 좋은 시작 또는 간단한 방법 자습서입니다. 실제로 MSDN 문서보다 조금 더 잘 설명되는 것은 무엇이든.

Reports를 표시하기 위해 CrystalDecisions.windows.forms.crystalreportViewer 컨트롤을 사용하고 있습니다. 이것이 올바른 것으로 추정됩니다.

길고 복잡한 여행을 시작하려는 경우 인쇄 할 수있는 보고서를 작성하고 표시하는 가장 간단한 방법은 무엇입니까?

도움이 되었습니까?

해결책

나는 지금이 일을 만들었습니다.

간략한 개요

변수가 포함 된 일반 C# 클래스 인 '데이터 클래스'를 갖는 것이 작동합니다. 그런 다음 데이터로 인스턴스화되고 채워진 다음 Arraylist 안에 배치됩니다. ArrayList는 보고서 이름과 함께 보고서 뷰어에 바인딩됩니다. 보고서에서 디자이너 '.NET Objects'는 데이터베이스와 통신하기보다는 사용됩니다.

설명

보고서의 데이터를 보유 할 수있는 클래스를 만들었습니다. 이 클래스는 데이터베이스에서 데이터를 수동으로 검색하여 수동으로 채워집니다. 이 작업을 수행하는 방법은 중요하지 않지만 여기에 예가 있습니다.

DataSet ds = GeneratePickingNoteDataSet(id);
foreach (DataRow row in ds.Tables[0].Rows) {
    CPickingNoteData pickingNoteData = new CPickingNoteData();

    pickingNoteData.delivery_date = (DateTime)row["delivery_date"];
    pickingNoteData.cust_po = (int)row["CustomerPONumber"];
    pickingNoteData.address = row["CustomerAddress"].ToString();
    // ... and so on ...

    rptData.Add(pickingNoteData);
}

그런 다음 클래스는 Arraylist 안에 넣습니다. Arraylist의 각 요소는 완성 된 보고서에서 하나의 '행'에 해당합니다.

목록의 첫 번째 요소는 또한 보고서 헤더 데이터를 보유 할 수 있으며 목록의 마지막 요소는 보고서 바닥 글 데이터를 보유 할 수 있습니다. 그리고 이것은 배열리스트이기 때문에 일반 배열 액세스를 사용하여 다음을 수행 할 수 있습니다.

((CPickingNoteData)rptData[0]).header_date = DateTime.Now;
((CPickingNoteData)rptData[rptData.Count-1]).footer_serial = GenerateSerialNumber();

데이터로 가득 찬 ArrayList가 있으면 이와 같이 보고서 뷰어에 바인딩하십시오.

ReportDocument reportDoc = new ReportDocument();
reportDoc.Load(reportPath);
reportDoc.SetDataSource(rptData);
crystalReportViewer.ReportSource = reportDoc;

이제 데이터 클래스를 보고서 자체에 바인딩해야합니다. 당신은 디자이너 내부에서 이것을합니다.

  1. 필드 탐색기 탭 ( '보기'메뉴 아래에있을 수 있음)을 열고 "데이터베이스 필드"를 마우스 오른쪽 버튼으로 클릭하십시오.
  2. '프로젝트 데이터'를 클릭하십시오.
  3. '.NET Objects'를 클릭하십시오.
  4. 목록을 아래로 스크롤하여 데이터 클래스를 찾으십시오 (그렇지 않은 경우 응용 프로그램을 컴파일하십시오).
  5. '>>'를 누른 다음 확인합니다
  6. 이제 클래스 멤버를 보고서로 드래그하여 원하는대로 정리할 수 있습니다.

다른 팁

Crystal은 보고서 작성을위한 가능한 옵션 중 하나입니다. 그것은 오랜 시간이 걸렸고 많은 사람들이 그것을 좋아하는 것 같습니다.

SQL보고 서비스를 살펴보고 싶을 수도 있습니다. 나는 두 가지를 모두 사용했지만 선호하는 것은 SQL보고 서비스입니다. 스튜디오에 잘 통합되어 있으며 다른 Microsoft 프로젝트와 유사하게 작동합니다. SQL Express 등도 무료로 제공됩니다.

보고 서비스 시작에 관한 좋은 기사입니다.http://www.simple-talk.com/sql/learn-sql-server/beginning-sql-server-2005-reporting-services-part-1/

VS.NET (ReportBuilder/ReportViewer Control)에 클라이언트 측 보고서가 내장 된 보고서 뷰어를 사용할 수 있습니다. SQL Server (또는 ASP.NET)가 필요하지 않은 경우를 제외하고 SQL보고 서비스와 동일한 방식으로 보고서를 작성할 수 있습니다. 또한 당신은 그들을 완전히 제어 할 수 있습니다 (표현 방법, 데이터 수집 방법, 생성 한 레이어, 발송 후 발송 한 후 수행 한 작업, FTP로 보내기 등). PDF 및 Excel로 내보낼 수도 있습니다.

그리고 귀하의 경우 데이터 및 사용자 입력에서 보고서를 구축하면, 이는 자신의 데이터 소스와 데이터를 구축 할 수 있으므로 잘 작동 할 수 있습니다. 데이터를보고 할 준비가되면 보고서에 바인딩하십시오.

보고서는 Visual Studio 2005 (프로젝트에 보고서 추가)에 쉽게 구축 될 수 있으며 ReportViewer 컨트롤을 사용하여 Winforms 앱에 표시됩니다.

다음은 고객 측 보고서에 관심이있는 경우 모든 사람에게 추천하는 훌륭한 책입니다. 그것은 많은 훌륭한 정보와 다양한 시나리오와 클라이언트 측보고를 사용하는 방법을 제공합니다.

http://www.apress.com/book/view/9781590598542

SQL보고 서비스를 살펴 보는 Alex의 추천 - SQL 개발자 라이센스가있는 경우 이미보고 서비스가있을 것입니다.

나는 Crystal Reports를 좋아하지 않습니다. 디자이너의 지루함 (항상 표현식 편집)이 너무 많은 서버 배포 문제 (해당 라이센스 파일을 확인하십시오!).

나는 크리스탈을 사용합니다. 나는 내 방법을 간단히 설명 할 것이지만, 나는 한 사람의 상점이고 그것은 당신의 환경으로 번역되지 않을 수 있음을 알고있다.

먼저 CR 뷰어와 함께 양식을 만듭니다. 그 다음에:

1) 필요한 데이터를 파악하고 원하는 열을 검색하는 뷰를 작성하십시오. 2) 데이터 소스로서 견해를 제공하는 마법사를 사용하여 새로운 Crystal 보고서를 작성하십시오. 3) 보고서를 드래그, 드롭, 삽입, 삭제 및 보고서를 모양으로 거칠게합니다. 예, 지루합니다. 4) 필요한 버튼을 클릭하거나 무엇이든 만들고 보고서를 생성 할 기능을 만듭니다. 5) 데이터를 데이터 가능 (데이터 세트에서)으로 검색합니다. 뷰를 사용할 필요가 없습니다. 6) 보고서 개체를 만듭니다. 데이터 가능을 데이터 소스로 설정하십시오. CR 뷰어에게 보고서 개체를 할당하십시오. 이것은 예가있는 부분입니다.

코멘트:

데이터베이스 필드 등 (Field Explorer)이있는 창을 잃어버린 경우보기/문서 개요로 이동하십시오. (Bill Gates를 무대에두고 찾아달라고 부탁하는 것이 나의 환상입니다.)

보기를 설정하는 이유는 열을 추가하려면보기를 수정하고 Field Explorer가 자동으로 업데이트되기 때문입니다. 나는 다른 방법으로 모든 종류의 어려움을 겪었습니다. 이 방법은 또한 모든 테이블을 재설정하는 테이블을 통해 스캔 해야하는 버그에 대한 해결 방법입니다. 당신은 단일 테이블을 수정하고 싶습니다. 당신은 Crystal이 테이블에 가입하려고 시도하고 싶지 않습니다. 나는 그것이 작동하지 않는다고 말하지 않습니다. 더 어렵다고 말합니다.

Business Objects 웹 사이트에서 Crystal의 VS 구현에 대한 문서가 있지만 등록/로그인 화면 뒤에서 사라 졌다고 생각합니다. (나는 그것에 대해 더 많은 정보를 견딜 수 있습니다.)

원할 때 페이지 브레이크에 크리스탈을 얻는 데 어려움을 겪었습니다. 원하지 않을 때는 페이지 브레이크가 아닙니다. 비즈니스에서 많은 사람들이 너무 많습니다. 또한 라이센스 정책은 소규모 유동적 조직에서 다루기가 매우 어렵습니다.

예제를 추가하도록 편집 :

AcctStatement oRpt = new AcctStatement() ;
oRpt.Database.Tables[0].SetDataSource(dsRpt.Tables[0]);
oRpt.SetParameterValue("plan_title",sPlanName) ;
crViewer.ReportSource = oRpt ;

다음 웹 사이트가 내 문제를 해결했다는 것을 알았습니다. 향후 참조를 위해 여기에 포함됩니다.

CrystalReportViewer 객체 모델 자습서 모든 것을 작동시키는 방법에 대한 튜토리얼. 그리고 또한 Crystal Reports를 사용하기위한 프로젝트 설정그리고 구체적으로 양식 준비 그리고 컨트롤 추가

나는 이것이 당신을 도울 수 있다고 생각합니다http://infynet.wordpress.com/2010/10/06/crystal-report-in-c/

대체보고 솔루션을 시도하는 것이 좋습니다. Crystal에 대한 많은 경험이 있으며 .NET에서 펑키 한 일을했지만 Crystal과 .NET의 통합은 가장 간단한 경우.

나는 Rs를 시도했다. RS에서 Crystal로 전환하고 있습니다. RS는 너무 무겁고 느립니다 (또는 무언가). Crystal이 1 초 미만으로 할 때 보고서가 Rs를 렌더링하기 위해 30 초를 기다려야 할 이유가 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top