2009-06-09 6 views
4

Crystal Reports 9는 데이터베이스 연결 정보를 보고서 파일 자체에 저장하는 것으로 보입니다. 해당 연결을 변경하는 데 문제가 있습니다. 나는 모든 개발자가 동일한 서버에 데이터베이스 사본을 가지고있는 팀으로 일합니다. 우리는 db에 신뢰할 수있는 연결을 사용하고 있습니다. Crystal 보고서를 변경해야하고 보고서를 실행하기 위해 번개를 클릭하면 Crystal가 데이터베이스에 로그인 정보를 묻지 않습니다. 실제로 보고서를 마지막으로 저장할 때 사용 된 마지막 데이터베이스에 연결됩니다. Crystal Reports 9 데이터베이스 연결 문제

우리는이 해결 방법을 함께했다 :
  1. 후 결정이 로그인 정보를 요청합니다 크리스탈이 오프라인으로 연결해야한다고 생각하는 데이터베이스를 가져 가라.
  2. 크리스탈을 변경하는 사용자 이름에 대한 권한을 제거하십시오.

이 두 가지 중 어느 것도 허용 할 수 없습니다. 누구든지 보고서 파일에서 수정 연결을 제거하는 방법을 알고 있습니까?

데이터 원본 위치 및 데이터베이스 전문가의 모든 설정에서 로그 오프를 시도했습니다.

UPDATE는

나는 아직도 내 경우에 맞는 해결책을 발견하지 않았습니다. 그러나 가장 최근의 해결 방법은 수정 보고서를로드하고 번개 (데이터베이스에 대한 보고서를 실행하기)를 클릭하기 전에 이더넷 케이블을 분리하는 것입니다. 그런 다음 Crystal에서 데이터베이스를 찾을 수 없으면 이더넷 케이블을 다시 연결하면 다른 데이터베이스 서버와 이름을 선택할 수 있습니다.

+0

+1 대부분의 사람들이 좋은 해결책을 찾아내는 데 시간을 들이지 않고 싸우는 좋은 질문입니다. – Dusty

답변

0

런타임에 로그온을 설정할 수 있습니다. ODBC를 사용하는 경우, 각 디바이스는 해당 데이터베이스에서 자신의 DSN을 가리킬 수

How do I change a Crystal Report's ODBC database connection at runtime?

...이 질문을 참조하십시오. 본질적으로 연결 문자열을 DSN과 크리스탈 보고서 밖으로 밀어냅니다.

+0

우리는 이미 런타임에 연결을 변경합니다. 그것은 문제가되지 않습니다. 불행히도 문제는 디자이너입니다. – Jon

1

사용자 별 위치 (즉, 모든 사용자는 동일하지만 다른 물리적 위치)에 .dsn 데이터 소스 파일을 사용하고 Crystal Reports를 가리킬 수 있습니다. 예를 들어, 모든 사용자의 C 드라이브 : C : \ DSNs \ db.dsn 또는 각 사용자의 다른 위치에 매핑 된 네트워크 드라이브.

당신은 MSDN에 .dsn 파일에 대한 자세한 정보를 얻을 수 있습니다

: 우리는 같은 방법을 사용하는 http://msdn.microsoft.com/en-us/library/ms710900(VS.85).aspx

1

을 (그러나 SQL 인증을 사용) :

  • 보고서 열기를
  • 데이터베이스를 - 서버에 로그인
  • 데이터베이스 - 데이터 소스 위치 설정
  • 새로 고침/미리보기

당신은 dev에 데이터베이스에 [도메인 사용자] 액세스를 비활성화 할 수 있습니다, 너무 도움이 될 것입니다 :)

+0

데이터 소스 위치 설정은 통합 인증으로도 잘 작동합니다. –

+0

나는 모든 개발자가 자신의 복사본을 가지고있는 것처럼 보이기 때문에 현재이 작업을 수행하고 있다고 생각합니다. 문제는 다른 개발자가 자신의 로컬 데이터베이스에 대해 보고서를 작성할 때마다이 작업을 수행하고 싶지 않다는 것입니다. – Dusty

+0

데이터 소스 위치 설정이 작동하지 않습니다 ... 여러 번 시도했습니다 ... 소스가 마지막 데이터베이스에 연결되어 있습니다. – Jon

0

그래 내가 크리스탈 리포트 고통 동의합니다. 나는 내가 만든 응용 프로그램에서 같은 문제를 겪었습니다.서버의 전원

1 로그 (크리스탈 내부에 바로 데이터베이스를 클릭하고 로그 오프) 데이터베이스에 2를 클릭하고 데이터베이스 위치 당신이에 로그온 한 경우

을 변경하고 아무튼 데이터베이스의 위치를 ​​변경 붙어있는 것 같아요

+0

나는 서버에서 로깅을 시도하고 데이터 소스 위치를 변경하려고 시도했다. 어느 쪽도 일하지 않았다. – Jon

1

나는 현상금에서 기회가있을 정도로 늦은 것 같습니다. 어쨌든 대답을 드릴 것입니다.

Crystal Reports를 직접 또는 Crystal Enterprise로 실행하는 경우이 작업을 수행 할 수있는 유일한 방법은 paulmorriss라는 dsn을 사용하는 것입니다. 이 단점은 당신이 내가 일반적으로 느리고 오래된 것으로 생각 ODBC를 사용하는 것입니다.

응용 프로그램에서이 코드를 사용하는 경우 코드에서 데이터베이스 연결 설정을 간단히 변경할 수 있습니다. 그런 다음 모든 사람이 자신의 테스트 데이터베이스에 대해 보고서를 개발할 수 있으며 런타임에 프로덕션 데이터베이스를 가리킬 수 있습니다 (개발자 데이터베이스가 최신이고 프로덕션 데이터베이스와 동일한 필드를 포함한다고 가정). 당신이 (당신의 로그인 정보를 모두 포함하는)를에서 ConnectionInfo 개체를 전달해야 할 일이 들어

private void SetDBLogonForReport(CrystalDecisions.Shared.ConnectionInfo connectionInfo, CrystalDecisions.CrystalReports.Engine.ReportDocument reportDocument) 
{ 
    CrystalDecisions.CrystalReports.Engine.Tables tables = reportDocument.Database.Tables; 

    foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables) 
    { 
     CrystalDecisions.Shared.TableLogOnInfo tableLogonInfo = table.LogOnInfo; 

     tableLogonInfo.ConnectionInfo = connectionInfo; 
     table.ApplyLogOnInfo(tableLogonInfo); 
    } 
} 

과 :

는 다음과 같은 기능을 사용할 수 있어야이 작업을 수행하려면 그것을 적용 할 보고서 문서. 희망이 도움이됩니다.

EDIT - 내가 지금까지 생각하지 못했던 또 다른 옵션은 SQL Server를 사용하는 경우 모든 개발 데이터베이스 이름이 동일하다는 것을 확인할 수 있다는 것입니다. . "를 사용하십시오. 또는 "(로컬)"을 사용하여 모든 사람이 효과적으로 동일한 연결 정보를 로컬에 갖도록합니다. 나는 이것이 아마도 모든 개발자가 동일한 설정을 사용할 수 있다고 가정하는 최선의 방법이라고 생각합니다.

다시 편집 : 다른 답변에 대한 의견을 읽은 후 질문을 잘못 이해했을 수 있습니다. 왜 내가 보고서를 편집 할 수있는 권한이 없다는 이유로 Arvo의 대답에 단계를 수행 할 수 없게 될지 생각할 이유가 없지만 다른 변경 사항을 적용 할 수 있다고 가정하고 있습니다. 그것은 의심 스럽다. 필자는이 단계를 계속 수행해 온 각 개발자에 대해 보고서가 작동하도록했다고 가정했습니다.