2012-05-03 19 views
-1

私がレポートにDBからの全てのデータを渡すためにしようとしている。しかし、私はエラーを取得する(レポートが何のテーブルを持っていない)CrystalReportsのDataTableエラーVB.NET

Dim sqlConn As String = "SELECT (SUM(item_selldetail * item_quantity)/ 100 * 12) AS isv_report," & _ 
        " (SUM(item_selldetail * item_quantity) - (SUM(item_selldetail * item_quantity)/ 100 * 12)) " & _ 
        " AS capital_report,SUM(item_selldetail * item_quantity) AS total_report FROM qa_items;" 
       Dim objDataAdapter As New MySqlDataAdapter(sqlConn, objConn) 

       ' DataSet 
       Dim ds As New DataSet 

       ' llenar el DataSet 
       objDataAdapter.Fill(ds) 


       Dim mireporte As New ReportDocument() 

       mireporte.Load("C:\Users\Jonathan\Desktop\Proyectos\Quickadmon\Quickadmon\Reportes\report_capital_rpt.rpt") 

       mireporte.SetDataSource(ds) 

       Me.capitalreport_viewer_capital_report.ReportSource = mireporte 

誰もがどのような私ができる任意のアイデアを持っています行う?

+0

さらに詳しい情報、サンプル出力、エラーは何ですか?あなたの変数名 'sqlConn'はとても間違っています。私にとっては、sqlConnはSQL接続を意味します。実際には、sqlConnがSQLCommand呼び出しのSQL文字列である場合です。 – JonH

+0

これを実行すると、DataTable/DataReaderオブジェクトと一緒にXMLファイルを作成し、CrystalのADO.NET接続を指定しました(レポートのフィールドをレイアウトすることができます)。その後、.NETプログラムから、そのDataTableを渡すことができます。私には、そのDataSetで1つのレコードセットを返すように見えます。私にいくつか教えてください、そして私はより詳細な答えを入力します。 –

+0

コメントをお寄せいただきありがとうございます。ウィザードを使用せずにプログラムでこれを行う必要があり、テーブルからフィールドを選択してレポートビューアに表示する方法の基本的な例がありました。私はそれについてプログラム的に多少混乱しています。 私が避けることは、ファイルxmlまたはrptへの絶対パスを使用することです。 –

答えて

1

ここではサンプルコード、あなたは完全なソースコードが必要な場合は、この

sql = "SELECT Product_id,Product_name,Product_price FROM Product" 
    Dim dscmd As New SqlDataAdapter(sql, cnn) 
    Dim ds As New DataSet1 
    dscmd.Fill(ds, "Product") 
    cnn.Close() 

    Dim objRpt As New CrystalReport1 
    objRpt.SetDataSource(ds.Tables(1)) 
    CrystalReportViewer1.ReportSource = objRpt 
    CrystalReportViewer1.Refresh() 

をdolikeしてみてください。

+0

あなたのコードは、私を助けてくれました!、ありがとう+ REP –

1

これまで私が行ってきたことは次のとおりです。

1.)CrystalにADO.NET(XML)接続を作成します。これを行うには、XMLファイルのパスを指定する必要があります。XMLファイルには、DataTable(またはDataReader)のスキーマが含まれます。あなたがやったように、データソースを設定します)

<?xml version="1.0" encoding="utf-8" ?> 
    <people> 
     <first_x0020_name> 
     <last_x0020_name> 
     <phone> 
    </people> 

2:それはこの(x0020をお持ちの場合は、その上の詳細についてはhttp://www.blakepell.com/Blog/?p=14を参照してくださいフィールド内のスペースを表します)のようになります私はラッパーのプロパティから、それを設定して、このようなものだった私のラッパーコード:

If _dataReader IsNot Nothing Then 
     report.SetDataSource(_dataReader) 
    End If 

    If _dataTable IsNot Nothing Then 
     report.SetDataSource(_dataTable) 
    End If 

3)を私が作成していますので、私は何をすべきか通常であるあなたのビューアコントロールでそれを入れて(またはそれをエクスポートそれからのPDF出力)。

report.Export() 

これはあなたのために動作しない場合、あなたはこれを行うたびので、私たちはより良い、それのトラブルシューティングを行うことができ受ける特定のスタックトレースと例外を投稿してください。

http://vb.net-informations.com/crystal-report/crystal_report_from_sql_query_string.htm

ア・メルカ:;)

+0

絶対パスを使用せずにXMLファイルをインポートする方法はありますが、ウィザードを使用せずにプログラムで実行しますか?ありがとう –

+0

XMLファイルはあなたが作成するもので、あなたのレポートと同じディレクトリに住んでいました(私は手動で私を作成しなければなりませんでした)。これは基本的にはCrystalに、使用可能なフィールドをCrystalに伝え、レポートにレイアウトすることができるようにするスキーマです。 –

関連する問題