2011-09-13 2 views
0

Crystal Reports XI를 사용하고 있습니다. C#/ASP.net으로 작성된 공유 지점 사이트에 Crystal Reports를 포함시킵니다. 우리 웹 개발자는 코드로 보고서를 생성하고 Select Formula 오브젝트에 추가하여 선택 기준을 전달합니다.선택 수식 SQL 명령 개체에서 패스 스루가 작동하지 않습니다.

내가 실행중인 문제는 SQL Command Object를 사용할 때 선택 수식이 SQL Server에 where 절로 전달되지 않는다는 것입니다. 그러면 전체 결과 집합이 쿼리되고 서버에서 제한됩니다. 초대형 테이블의 경우 성능이 크게 떨어집니다. foo는 foo는 FROM SELECT foo.id, foo.code, foo.name

선택 기준으로 표시됩니다 : "someName"

만약 같은 {Command.name} 여기

은 예입니다 그런 다음 전체 foo 테이블을 쿼리 한 다음 크리스탈이 전체 집합에서 제한을보고하는 보고서를 실행합니다.

대신 명령 개체가없는 테이블을 기반으로 수행하면 WHERE 절이 SQL 쿼리에 추가되고 모든 제한이 db 수준에서 수행됩니다.

SQL 명령이 잠재적으로 매우 복잡하여 WHERE 절을 맨 아래에 추가하는 것이 항상 가능하지 않기 때문에 이런 상황이 발생한다고 가정합니다. 내 질문에 다음과 같은 일종의 통과를 강요하는 좋은 방법이있다. 나는 C# 개발자들과 이야기하고 매개 변수를 전달하는 방법을 다시 시도해야할까요?

도움과 토론에 감사드립니다.

답변

1

레코드 선택 수식이 Command 개체의 쿼리에 추가되지 않습니다.

CR SDK가 명령 개체 수정을 지원하는지 확실하지 않습니다. 그러나 읽기 전용 액세스를 지원합니다.

Command 개체는 프로그래밍 방식으로 액세스 할 수있는 매개 변수를 지원합니다 (2008 년에는 매개 변수가 여러 개일 수 있음). 매개 변수는 보고서의 매개 변수 필드로 변환됩니다.

쿼리의 복잡성 때문에 Command 개체를 사용하고 있다고 가정합니다. 복잡성을 SQL 뷰로 푸시 다운하고 '시각적 연결'전문가를 사용하여 쿼리를 작성하면 유연성이 향상됩니다.

+0

정말 좋은 생각입니다. 보기를 사용하여 복잡한 논리를 저장 한 다음 링크를 통해 CR을 통해 추가 할 수 있습니다. 그런 다음 CR은 where 절의 선택 수식을 통과합니다. – thaagenson