2009-02-26 2 views
6

Crystal Report를 만들 때 개발 용 데이터베이스 및 서버 연결을 설정했습니다.런타임시 Crystal Report 데이터 소스 설정

내 VB 응용 프로그램에서 지금하고 싶은 것은 보고서와 함께 사용할 데이터베이스와 서버 이름을 동적으로 설정하는 것입니다. 나는이 값을 varServer 및 varDatabase 문자열로 갖는다.

누구나이 작업을 수행하는 방법을 알고 있습니까?

미리 감사드립니다.

피씨 나는 몇 가지 온라인 솔루션을 시도했지만 VB6에 문제가 있습니다.

답변

4

This link에는 알고 싶은 모든 정보가 있습니다.

업데이트 : 다음은 SQL Server와의 통합 인증을위한 최소 작업 샘플입니다. 연결 매개 변수를 설정하려면 테이블 객체의 ConnectionProperties를 사용해야합니다.

Dim app As New CRAXDDRT.Application 
Dim rpt As CRAXDDRT.Report 
Dim tbl As CRAXDDRT.DatabaseTable 
Dim tbls As CRAXDDRT.DatabaseTables 

Set rpt = app.OpenReport("C:\report\repotest.rpt") 

For Each tbl In rpt.Database.Tables 
    tbl.ConnectionProperties.DeleteAll 
    tbl.ConnectionProperties.Add "Provider", "SQLOLEDB" 
    tbl.ConnectionProperties.Add "Data Source", "localhost" 
    tbl.ConnectionProperties.Add "Initial Catalog", "testdb" 
    tbl.ConnectionProperties.Add "Integrated Security", "True" ' cut for sql authentication 
    'tbl.ConnectionProperties.Add "User Id", "myuser" ' add for sql authentication 
    'tbl.ConnectionProperties.Add "Password", "mypass" ' add for sql authentication 
Next tbl 

'This removes the schema from the Database Table's Location property. 
Set tbls = rpt.Database.Tables 
For Each tbl In tbls 
    With tbl 
     .Location = .Name 
    End With 
Next 

'View the report 
Viewer.ReportSource = rpt 
Viewer.ViewReport 
+0

링크를 제공해 주셔서 감사합니다. 사용자 이름과 비밀번호를 생략 할 수있는 방법이 있는지 알고 계십니까? 우리의 클라이언트는 Windows 인증을 사용하여 DB에 연결합니다. 감사합니다 다시 –

+0

또한 예제 코드를 시도 할 때 '사용자 정의 형식이 정의되지 않았습니다.'오류가 발생합니다. 'Dim logInfo as New TableLogOnInfo', 어떤 아이디어가 누락 되었습니까? –

0

어떤 크리스탈 버전을 사용하고 있습니까?

.net 세계에서는 일반적으로 emoreau가 here이라고 말하면서 보고서에 데이터 세트를 전달합니다.

그런 식으로 연결은 크리스탈이 아닌 코드에서 설정되며 전역 연결 속성에 저장할 수 있습니다. 그러나 그것은 .net입니다. 나는 당신이 가지고있는 크리스털 버전이 비슷한 기능을 가지고 있거나 Emoreau가 VB6에서 사용하는 버전의 예제를 가지고 있다고 생각합니다.

희망이 시작되었습니다.

+0

Crystal Reports 11 (XI) 및 VB6을 사용하고 있습니다. 보고서를 디자인하기 위해 필자는 필드 등을 배치하기 위해 데이터베이스를 추가해야했으며 이제 제안한대로 코드를 통해 서버 이름과 데이터베이스 이름을 설정하려고합니다. 그 링크에 지금 읽어 주셔서 감사합니다. –

1

위대한 작품! 코드 주셔서 감사합니다!

With Me.CRViewer91 
    .ReportSource = rpt 
    .ViewReport 
End With 
0

하나는 작업도 수행 할 수 있습니다

'View the report 
Viewer.ReportSource = rpt 
Viewer.ViewReport 

그것은

그래서 나는 그처럼 한 개체 찾을 수 없습니다 오류가 발생했습니다 :이 부분은 작동하지 않았기 때문에 나는 비록 약간 변경 이 코드 비트를 추가하여 보고서의 기본 공급자를 설정하십시오.

Dim MyProvider As Object = logOnInfo.ConnectionInfo.LogonProperties.LookupNameValuePair("Provider") 
      If IsNothing(MyProvider) = False Then 
       MyProvider.Value = "SQLOLEDB" 
      End If