首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 將 DataGridView 查詢結果傳遞給 Crystal Reports 列印的完整教學

     編輯:程式設計綜合問答

前言

在 Windows Forms 應用程式中,常見需求是將 DataGridView 顯示的查詢資料直接匯出至 Crystal Reports 進行列印或預覽。許多開發者卡在如何將記憶體中的資料集正確綁定至報表模板。本文提供完整步驟與程式碼範例,助您快速實作。

實作架構

  • Form1:包含查詢按鈕、DataGridView(顯示資料)與列印按鈕。
  • Crystal Report (cryrp1.rpt):預先設計好版面,並設定好資料庫連線與欄位對應。
  • Form2:放置 CrystalReportViewer 元件,用於報表預覽與列印。

核心步驟

  1. 在 Form1 的列印按鈕 Click 事件中,將 DataGridView 的資料來源(通常是 DataTable 或 DataSet)取出。
  2. 建立報表物件 cryrp1,呼叫 SetDataSource(dataTable) 將資料灌入報表。
  3. 實例化 Form2,並將 CrystalReportViewer.ReportSource 指向已填入資料的 cryrp1。
  4. 呼叫 Form2.ShowDialog() 顯示預覽視窗。

關鍵程式碼範例 (C#)

// Form1 - 列印按鈕事件
private void btnPrint_Click(object sender, EventArgs e)
{
    // 假設 DataGridView 資料來源為 DataTable
    DataTable dt = (DataTable)dataGridView1.DataSource;
    if (dt == null) return;

    // 建立報表實例並設定資料來源
    cryrp1 report = new cryrp1();
    report.SetDataSource(dt);

    // 開啟預覽視窗
    Form2 frmPreview = new Form2();
    frmPreview.crystalReportViewer1.ReportSource = report;
    frmPreview.ShowDialog();
}

常見問題排查

  • 報表顯示空白:確認 SetDataSource 傳入的 DataTable 欄位名稱與報表欄位完全一致(區分大小寫)。
  • 資料庫登入提示:報表若保有資料庫連線資訊,需在程式碼中呼叫 report.SetDatabaseLogon(user, pwd, server, db) 覆寫連線。
  • 部署時缺少 DLL:安裝 Crystal Reports Runtime 或將相關 DLL 設為「複製到輸出目錄」。

總結

掌握 SetDataSource 與 ReportSource 兩個屬性的運用,即可輕鬆實現 DataGridView 資料到 Crystal Reports 的無縫列印。建議先在報表設計階段完成版面配置,再於程式碼端專注於資料綁定邏輯,達到關注點分離。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved