2011-09-06 4 views
0

나는 vb.net을 사용하여 datagridviews를 포함하는 여러 개의 창이있는 windows 양식 응용 프로그램을 개발 중입니다. 클라이언트는 최근에이 테이블 각각의 데이터를 인쇄 할 수 있기를 바랬습니다.런타임시 보고서 디자인

몇 달 전에 Crystal 보고서를 사용하여 첫 번째 보고서를 성공적으로 설계하고 구현 한 첫 번째 본능은 수정 보고서를 사용하여 수행하는 것이 었습니다. 그러나 첫 번째 보고서에 어떤 열과 데이터를 나타내려고했는지 정확히 알았 기 때문에이 점을 고려하여 보고서를 디자인 할 수 있으므로 아무런 문제가되지 않았습니다.

이제 문제는 내가 직접 보고서에 인쇄 할 열의 정확한 수를 알지 못한다는 것입니다. 따라서 프로그래밍 방식으로 보고서를 디자인해야 할 것이므로 제 질문은 그렇습니다.

  1. 보고서를 프로그래밍 방식으로 구분하는 수단이 있습니까? 예를 들어, 코드 만 사용하여 세부 정보 섹션에 "테이블 개체"를 넣고 Crystal Reports에 X라는 열과 Y라는 열을 넣을 수 있습니까? 가능한 경우 다른 사람이이를 수행하는 방법이나 이와 유사한 방법에 대한 샘플 코드를 가르쳐 줄 수 있습니까?

  2. 크리스탈 보고서에서 1을 사용할 수 없으면 다른 사람이 나를 1로 만들 수있는보고 소프트웨어를 가리키며 가능하면 어떻게 할 수 있습니까?

  3. 나는 합리적으로 문제에 접근하고 있는가? 아니면 내가 고객의 욕구를 충족시킬 수있는 훨씬 더 쉽고 편한 방법이 있는가? 그런데

, 나는 이미 그들이 원하는대로 클라이언트를 인쇄 할 수있는, 엑셀 테이블을 내보낼 수있는 가능성을 제공하지만 그들이 애호가 사람이 수 등의 로고와 물건 보고서를 찾고 선호 나타납니다 크리스탈 리포트에서 달성하십시오.

이 기능을 구현하는 데 도움을 주시면 매우 감사드립니다.

답변

1

두 가지 방법이 있습니다. 하나는 어렵지만 다른 하나는 어렵습니다. 첫째로, 어려운 쪽을 방해하지 마라. CR에는 처음부터 거의 모든 보고서를 작성할 수있는 완전히 기능적인 라이브러리가 있습니다. RAS 라이브러리라고합니다. 그러나 그것은 매우 복잡하며 Crystal에 새로운 사람이 착수하는 것이 가장 좋습니다.

다음 해결 방법은 가장 필요한 모든 필드를 포함하는 보고서를 만든 다음 ReportObject 모델을 사용하여 표시 할 필요가없는 필드를 동적으로 숨기는 것입니다. 따라서 보고서에 5 ~ 10 개의 열을 넣을 수 있다면 보고서에 10 개의 열을 모두 작성하십시오. 그런 다음 앱에서 10 번째 열이 필요하지 않으면 숨 깁니다. 이런 식으로 뭔가 : 당신이 정말 동적 아마도 쉽게 필요한 경우

CrystalDecisions.CrystalReports.Engine.ReportDocument myReport; 
myReport.Load("..your file..."); 
CrystalDecisions.CrystalReports.Engine.TextObject myField; 
myField =(CrystalDecisions.CrystalReports.Engine.TextObject)HealthRounds.ReportDefinition.ReportObjects["Field10"]; 
myField.ObjectFormat.EnableSuppress = true; 
... 
0

list & label에 봐. 당신이해야 할 일의 샘플은 다소 쉽게 같습니다

Proj.Open(@“c:\Reports\artikel.lst” , LlDomFileMode .Create, 
    LlDomAccessMode .ReadWrite, true); 

ObjectReportContainer container= new 
    ObjectReportContainer (Proj.Objects); 

container.Position.Left = “0” ; 
container.Position.Top = “0” ; 
container.Position.Width = “150000” ; 
container.Position.Height = “200000” ; 

SubItemTable table = new SubItemTable 
    (container.SubItems); 
table.TableID = “Customers” ; 

TableLineData dataLineNew = new 
    TableLineData (table.Lines.Data); 
dataLineNew.Name = “Created dynamically” ; 

TableFieldText textCol = new 
    TableFieldText (dataLineNew.Fields); 
textCol.Contents = “Product.No” ; 

TableFieldBarcode barcodeCol = new 
    TableFieldBarcode (dataLineNew.Fields); 
barcodeCol.Contents = “Barcode(Product.No, ‘PDF417’)” ; 

Proj.Save(); 
Proj.Close(); 

More Details here...

당신은 적어도 "Professional"-Edition이 기능을 사용해야합니다. 이 성숙한 소프트웨어로 좋은 프로그램을 만들었습니다.

0

이 난 그냥이 단계를 그 흐름 할 새로운 방법 당신을 말하고 싶어 할 매우 쉽습니다 :

  1. 어댑터 및 데이터 세트에 어댑터 데이터를 넣어 표시 할 데이터를 넣어
  2. 컴퓨터 드라이버에서 file.html 코드를 생성하십시오.
  3. 파일을 채운 후에
  4. 표시하려는 동적 집합 인 데이터 집합의 데이터 집합과 데이터 집합의 셀에 따라 해당 파일의 데이터 집합에 해당 파일을 채 웁니다. 데이터는 html 파일을 엽니 다.

브라우저는 이것이 당신이 SQL 쿼리에서 원하는 당신의 데이터를 얻을 동적 보고서입니다 파일 인쇄 미리보기 에서 페이지의 내용을 인쇄하는 기능이

관련 문제