0

CrystalReportsのデフォルトインストールでVisualStudio2005を使用する。

レポートを作成すると、Crystalはデータベースを要求し、開発データベースを提供します。アプリで、DataTableを作成し、それをレポートに渡します。レポートは、CRビューアーに渡されます。実行時には、すでにテーブルを取得しているため、レポートオブジェクトもビューアもデータベースを表示する必要はありません。

アプリがユーザーに渡されると、すべてが正常に機能します。彼らは開発データベースを見ることができません。

かつて、本番オフィスで本番サイトでレポートを作成し、開発データベースを指定してCrystal Reportを作成する代わりに、本番データベースを提供しました。VSで実行している自分のオフィスに戻ると、レポートは開発データベースに接続しようとしますが、失敗します。(表示されません。)

ですから、彼らが私の開発データベースを見ることができないのは問題ではありませんが、私が本番データベースを見ることができないのは問題です。

質問は次のとおりです。これは、VSでの実行が、インストールされたアプリの実行とは異なるために発生しますか?とにかくレポートがDBに接続しようとするのはなぜですか?どうすればそれを制御できますか?

4

3 に答える 3

1

レポートを作成すると、report.SetDataSouce(DataSet)を実行して、レポートが使用するテーブルを含むデータセットを渡すことができるはずです。

于 2009-06-17T17:48:16.357 に答える
1

フォローしてると思う…

VS で .rpt を見ているときは、[フィールド エクスプローラー] ウィンドウで [データベース フィールド] を右クリックし、[データソースの場所の設定] に移動します。それはあなたの接続のために何を示していますか? 本番データベースサーバーを指していますか? この設定は .rpt ファイルに保存されるため、これで問題が説明される場合があります。

于 2008-12-16T20:20:12.300 に答える
0

質問は次のとおりです。これは、VS での実行がインストールされたアプリの実行と異なるために発生しますか? とにかくレポートが DB に接続しようとするのはなぜですか? どうすれば制御できますか?

レポートの内容に応じて制御できます

レポートに 1 つのテーブルが含まれていて、このテーブルを DataTable を使用してレポートに渡した場合、レポートは正常に機能します。

ただし、データテーブルがすべてのレポートデータを提供しない場合、通常はレポートに2つ以上のテーブルが含まれている場合、レポートは元のDBの場所に接続しようとします

この場合、すべてのテーブルを含むレポートに DATASET を渡す必要があります

ここで、著者とタイトル著者の2つのテーブルを使用した私のコード

'Build a SQL statement to query for the authors table 

Dim sqlString As String = "SELECT * FROM authors"

'Retrieve the data using the SQL statement 

adoOleDbDataAdapter = New OleDbDataAdapter(sqlString, adoOleDbConnection)

'Build a SQL statement to query for the titleauthor table 

sqlString = "SELECT * FROM titleauthor" 

'Retrieve the data using the SQL statement 

adoOleDbDataAdapter2 = New OleDbDataAdapter(sqlString, adoOleDbConnection) 

'Create a instance of a Dataset 

DataSet1 = New DataSet() 

'Fill the dataset with the data with author information 

adoOleDbDataAdapter.Fill(DataSet1, "authors") 

'Fill the dataset with the data with titleauthor information. 
'The table name used in the Fill method must be identical to the name 
'of the table in the report. 

adoOleDbDataAdapter2.Fill(DataSet1, "titleauthor") 

'Pass the dataset to the report 

crReportDocument.Database.Tables(0).SetDataSource(DataSet1) 

'View the report 

CrystalReportViewer1.ReportSource = crReportDocument
于 2014-05-14T08:02:46.710 に答える