2015-01-05 1 views
0

Crystal 보고서를 사용하여 응용 프로그램을보고합니다. 문제는 내가 어떻게 결정했는지 모른다.Crystal 보고서를 설정하는 방법 연결 정보

Crystal 보고서에 대한 연결 정보를 설정하는 것이다. 이것은 내가 노력 코드 :

private void button5_Click(object sender, EventArgs e) 
    { 
     ReportDocument cryRpt = new ReportDocument(); 

     TableLogOnInfos crtableLogoninfos = new TableLogOnInfos(); 
     TableLogOnInfo crtableLogoninfo = new TableLogOnInfo(); 
     ConnectionInfo crConnectionInfo = new ConnectionInfo(); 
     Tables CrTables; 

     crConnectionInfo.ServerName = ".\\SQLEXPRESS"; 
     crConnectionInfo.DatabaseName = "GestStock.mdf"; 
     crConnectionInfo.UserID = ""; 
     crConnectionInfo.Password = ""; 
     CrTables = cryRpt.Database.Tables; 

     cryRpt.Load("C:\\Documents and Settings\\Administrateur\\Mes documents\\GestionStock\\GestionStock\\CrystalReport1.rpt"); 

     foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables) 
     { 
      crtableLogoninfo = CrTable.LogOnInfo; 
      crtableLogoninfo.ConnectionInfo = crConnectionInfo; 
      CrTable.ApplyLogOnInfo(crtableLogoninfo); 
     } 

     crystalReportViewer1.ReportSource = cryRpt; 
     crystalReportViewer1.Refresh(); 
    } 

그러나 내가이 오류 메시지가있어 작동하지 않습니다

Chemin d'accès au fichier de rapport non valide (Invalid report file path) 

PS :이 내 SQL 서버 데이터베이스의 ConnectionString을 :

"데이터 원본 =. \ SQLEXPRESS; AttachDbFilename = C : \ DOCUMENTS 및 SETTINGS \ ADMINISTRATEUR \ MES 문서 \ GESTIONSTOCK \ GESTIONSTOCK \ GestStock.mdf; 통합 보안 = True; 사용자 인스턴스 = True";

올바른 방법으로 설정하는 방법은 무엇입니까?

+0

는 영어로 오류 메시지를 변환 할 수 있습니까? – HaveNoDisplayName

+0

잘못된 보고서 파일 경로 – user4374239

답변

1

크리스탈 리포트 데이터 소스가 DataSet에 따라, 그래서 당신이 먼저 데이터 집합 클래스의 인스턴스를 초기화하고 데이터 집합에서 정보를 입력 할 필요가있다, 당신의 필요에 따라 매개 변수를 설정합니다.

그럼에도 불구하고, 당신의 오류 메시지 :

슈맹 디부 대한 액세스 노소 fichier 드 교감 비 valide (잘못된 보고서 파일 경로)

은 보고서의 파일 경로가 잘못한다고 . 따라서 이것은 할당되지 않거나 잘못 할당 된 연결 문자열과 아무 관련이 없습니다.

여기에 Crystal 보고서에 채우기 위해 데이터 집합을 사용하는 방법을 보여줍니다 흥미로운 대답 :

보고서가 예상 파일 경로에서로드됩니다 있는지 확인하고 액세스 할 수 있습니다 (동시 액세스가 문제의 원인 일 수 있음)?

보고서가 예상대로로드되면 데이터 세트를 사용하여 보고서를 채우고 연결된 응답에 표시된대로 데이터 소스를 설정해야합니다.

이 방법은 연결 문자열이 SqlCommand를를 인스턴스화하는 데 사용되는 도록 SqlConnection에 할당됩니다, 다음 명령은 SqlDataAdapter.SelectCommand 속성에 전달됩니다. 이 방법을 사용하면 연결 문자열에 Integrated Security=true을 지정하고 인스턴스를 열기 전에 SqlConnection 인스턴스에 할당하여 기본 자격 증명을 사용할 수 있습니다.

+0

설명 및 도움 주셔서 감사합니다. – user4374239

+0

** SqlConnection **, ** SqlCommand ** 및 모든 것을 disposable로 초기화하는 것을 잊지 말고 관리를 위해 ** 블록을 사용합니다 자원을 적절하게 사용한다. (다행히 도울 수있어!) –

0

기본 코드는 다음과 같다 : -

 SqlConnection cnn ; 
     string connectionString = null; 
     string sql = null; 

     connectionString = "data source=SERVERNAME;initial catalog=DATABASENAME;user 
          id=USERNAME;password=PASSWORD;"; 
     cnn = new SqlConnection(connectionString); 
     cnn.Open(); 
     sql = "SELECT columnName FROM tableName"; 
     SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn); 
     DataSet1 ds = new DataSet1(); 
     dscmd.Fill(ds, "Product"); 
     MessageBox.Show (ds.Tables[1].Rows.Count.ToString()); 
     cnn.Close(); 

     CrystalReport1 objRpt = new CrystalReport1(); 
     objRpt.SetDataSource(ds.Tables[1]); 
     crystalReportViewer1.ReportSource = objRpt; 
     crystalReportViewer1.Refresh(); 
관련 문제