2009-02-26 10 views
6

Crystal Reportを作成するときに、私が開発に使用するデータベースとサーバーの接続を設定することは明らかです。実行時にCrystal Reportデータソースを設定する

私のVBアプリケーションで今したいことは、レポートで使用するデータベースとサーバー名を動的に設定することです。私はこれらの値をvarServerとvarDatabaseという文字列として持っています。

誰でもこれを行う方法を知っていますか?

ありがとうございます。

P.S私はいくつかのオンラインソリューションを試しましたが、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と言うようにレポートにデータセットを渡します。

このように、接続はCrystalではなくコードから設定され、グローバル接続プロパティに格納することができます。しかし、それはネットです。私はあなたが持っているクリスタルのバージョンのいずれかが類似の機能を持っているか、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