none
關於 Listview 、 Textbox 與 Crystal Report 疑問 RRS feed

  • 問題

  • 請問:
    我所知到的 Crystal Report(水晶報表)能夠從 Database 匯入
    那 From 中的 Listview 和 Textbox 也能匯入 Crystal Report 嗎?
    可以匯入的話,該怎麼做才能把要的字串匯入到指定的 Crystal Report 格子中呢?
    2009年11月2日 下午 03:14

解答

  • 看來你誤會了

    使用FieldObject是希望你使用資料庫欄位來處理(dataset)

    所以還是回歸你rpt設計


    http://www.dotblogs.com.tw/ricochen/Default.aspx
    所以要先定義一個 DataTable
    然後把資料丟進DataTable
    再把DataTable轉成DataSet
    之後再把DataSet輸出
    這樣對嗎?

    還是你指的方式是別種更快的方法呢?

    參考
    Crystal Report Basics and Integration with DataSet
    http://www.codeproject.com/KB/grid/Crystal_Report__90.aspx?msg=2158877
    http://www.dotblogs.com.tw/ricochen/Default.aspx
    • 已標示為解答 小修韓 2009年11月8日 上午 12:12
    2009年11月7日 下午 09:08

所有回覆

  • hi
    嘗試看看(再麻煩自行轉換VB.NET~感恩)
    textBox1.Text = "my value from textbox1";
                ReportDocument rd = new ReportDocument();
                rd.Load(Application.StartupPath + "\\CrystalReport1.rpt");
                ((TextObject)rd.ReportDefinition.ReportObjects["Text1"]).Text = textBox1.Text; //取得CR中Text1 並設定Text屬性值
                crystalReportViewer1.ReportSource = rd;
    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2009年11月3日 上午 12:38
  • hi
    嘗試看看(再麻煩自行轉換VB.NET~感恩)
    textBox1.Text = "my value from textbox1";
                ReportDocument rd = new ReportDocument();
                rd.Load(Application.StartupPath + "\\CrystalReport1.rpt ");
                ((TextObject)rd.ReportDefinition.ReportObjects["Text1"]).Text = textBox1.Text; //取得CR中Text1 並設定Text屬性值
                crystalReportViewer1.ReportSource = rd;
    http://www.dotblogs.com.tw/ricochen/Default.aspx

    看不太懂....不會轉換成VB
    ((TextObject)rd.ReportDefinition.ReportObjects["Text1"]).Text = textBox1.Text
    這一段不知道該怎麼轉
    2009年11月3日 下午 04:42

  • 看不太懂....不會轉換成VB
    ((TextObject)rd.ReportDefinition.ReportObjects["Text1"]).Text = textBox1.Text
    這一段不知道該怎麼轉
    我猜應該是這樣吧
    CType(rd.ReportDefinition.ReportObjects("Text1"),TextObject).Text=TextBox1.Text

    學而不思則罔, 思而不學則殆.
    如果你一直都看不懂、不想學習看懂、抗拒看懂MSDN Library的話,那你最好放棄想要寫好程式這件事
    如果你自私地不肯回饋與分享,那別人為何要花時間回答你的問題?
    2009年11月3日 下午 05:07
    版主
  • 修正 Bill Chung 前輩的語法變成這樣就可以了
    CType(rd.ReportDefinition.ReportObjects("Text1"), CrystalDecisions.CrystalReports.Engine.TextObject).Text = TextBox1.Text

    不過用在Listview要連續傳到報表就不行了,一直被覆寫掉
    是該弄成DataSet再寫進去嗎???
    可是這樣.......完全沒頭緒   不知道怎麼丟
    2009年11月3日 下午 07:24
  • hi
    你rpt怎麼設計的??
    listview每筆值對應CR中相關物件,如果都對應相同CR物件當然會被覆蓋


    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2009年11月4日 上午 01:03
  • hi
    你rpt怎麼設計的??
    listview每筆值對應CR中相關物件,如果都對應相同CR物件當然會被覆蓋


    http://www.dotblogs.com.tw/ricochen/Default.aspx
    您的意思是說 假設我Listview 每個 item 有 10 個 Subitems 的話 就要自行建立 10 個 Text嗎?
    若item 有 5 個 , Subitems 有 10 個 那我需要建立 5 x 10 =50 個 Text
    我的解釋這樣對嗎?

    那如何讓CR可以像 Database 拉出資料一樣 只要建立一組 以下的會自己產生呢?
    2009年11月4日 上午 07:41
  • hi
    你rpt怎麼設計的??
    listview每筆值對應CR中相關物件,如果都對應相同CR物件當然會被覆蓋


    http://www.dotblogs.com.tw/ricochen/Default.aspx
    您的意思是說 假設我Listview 每個 item 有 10 個 Subitems 的話 就要自行建立 10 個 Text嗎?
    若item 有 5 個 , Subitems 有 10 個 那我需要建立 5 x 10 =50 個 Text
    我的解釋這樣對嗎?

    那如何讓CR可以像 Database 拉出資料一樣 只要建立一組 以下的會自己產生呢?

    自己處理字串,StringBuilder+Environment.NewLine,就不會有覆蓋問題


    使用dataset
    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2009年11月4日 上午 10:07
  • hi!

    我是先拿2個 TextBox在做測試
    我的寫法是:
            Dim cc As New System.Text.StringBuilder
            cc.Append(TextBox1.Text &  Environment.NewLine)
            cc.Append(TextBox2.Text & Environment.NewLine)

    假設TextBox1 輸入的是 123 , TextBox2 輸入的是 456
    在CR中顯示的卻是 123 456
    連在後面顯示
    是我的寫法錯了嗎?
    2009年11月4日 下午 10:48
  • hi!

    我是先拿2個 TextBox在做測試
    我的寫法是:
            Dim cc As New System.Text.StringBuilder
            cc.Append(TextBox1.Text &  Environment.NewLine)
            cc.Append(TextBox2.Text & Environment.NewLine)

    假設TextBox1 輸入的是 123 , TextBox2 輸入的是 456
    在CR中顯示的卻是 123 456
    連在後面顯示
    是我的寫法錯了嗎?

    沒有錯  CR textbox特性本是如此
    (這樣的方式不用讓你每一個subitem就需要一個textbox)


    回歸到你RPT設計,請使用fieldobject才能顯示如下
    123
    456
    789

    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2009年11月5日 上午 01:52
  • hi !
    那 FieldObject 的屬性該用什麼呢.....

    Type(rd.ReportDefinition.ReportObjects("Text11"), CrystalDecisions.CrystalReports.Engine.FieldObject) = cc.ToString

    這個直接丟值好難.....
    2009年11月5日 下午 12:31
  • 看來你誤會了

    使用FieldObject是希望你使用資料庫欄位來處理(dataset)

    所以還是回歸你rpt設計


    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2009年11月6日 上午 08:39
  • 看來你誤會了

    使用FieldObject是希望你使用資料庫欄位來處理(dataset)

    所以還是回歸你rpt設計


    http://www.dotblogs.com.tw/ricochen/Default.aspx
    所以要先定義一個 DataTable
    然後把資料丟進DataTable
    再把DataTable轉成DataSet
    之後再把DataSet輸出
    這樣對嗎?

    還是你指的方式是別種更快的方法呢?
    2009年11月7日 下午 02:42
  • 看來你誤會了

    使用FieldObject是希望你使用資料庫欄位來處理(dataset)

    所以還是回歸你rpt設計


    http://www.dotblogs.com.tw/ricochen/Default.aspx
    所以要先定義一個 DataTable
    然後把資料丟進DataTable
    再把DataTable轉成DataSet
    之後再把DataSet輸出
    這樣對嗎?

    還是你指的方式是別種更快的方法呢?

    參考
    Crystal Report Basics and Integration with DataSet
    http://www.codeproject.com/KB/grid/Crystal_Report__90.aspx?msg=2158877
    http://www.dotblogs.com.tw/ricochen/Default.aspx
    • 已標示為解答 小修韓 2009年11月8日 上午 12:12
    2009年11月7日 下午 09:08