none
crystal Report & DataSet RRS feed

  • 問題

  • Form2包含一個CrystalReportViewer

    Form1的Button_Click

    Dim frmRPT As New Form2

    Dim sqlConn As New SqlClient.SqlConnection
            Dim conn As String = _
            "Initial Catalog=PIM;Data Source=chichung;User ID=****;Password=****"
            Dim sqlAdapter As New SqlClient.SqlDataAdapter
            Dim queryString As String
            Dim sqlDataSet As New System.Data.DataSet
            Dim frmReport As New ReportDocument
            Dim strFileName As String = System.Reflection.Assembly.GetExecutingAssembly.Location.ToUpper
            Dim frmtable As Table
            Dim frmLogOnInfo As New CrystalDecisions.Shared.TableLogOnInfo
            Try
                sqlConn.ConnectionString = conn
                sqlConn.Open()
                queryString = "Select * from PIMHSWTL where level ='外'"
                sqlAdapter.SelectCommand = New SqlClient.SqlCommand(queryString, sqlConn)
                sqlAdapter.Fill(sqlDataSet, "PIMHSWTL")
                frmReport.Database.Tables.Item("PIMHSWTL").SetDataSource(sqlDataSet)
                frmReport.Load(strFileName.Replace("BIN\VB_TESTCRYSTAL.EXE", "CrystalReport3.rpt"))
                For Each frmtable In frmReport.Database.Tables
                    frmLogOnInfo = frmtable.LogOnInfo
                    With frmLogOnInfo.ConnectionInfo
                        .ServerName = configdata(0)
                        .UserID = configdata(2)
                        .Password = configdata(3)
                        .DatabaseName = configdata(1)
                    End With
                    frmtable.ApplyLogOnInfo(frmLogOnInfo)
                Next
                frmRPT.CrystalReportViewer1.LogOnInfo.Add(frmLogOnInfo)
                frmRPT.Show()
            Catch ex As Exception
                MsgBox(ex.ToString())
            Finally
                sqlConn.Close()
            End Try

    跑到紅色這行就有錯誤 (報表檔路徑無效),請問該怎麼解決?

    謝謝

    2006年3月21日 下午 01:28

解答

  • 問了一下我同事 引用他(小紀的程式碼)給我的程式碼
    您先確定一下您填入的 DataSet 的 Table
    在  Fill 進去的資料但底有沒有。
    在透過以下的小範例還試試看。這是把 DataSet 丟入報表的方式。

     



    //如何把DataSet設為CrystalReport的資料來源
    2private void ViewReportFromDataSet()
    3{
    4  //建立一個你的報表物件
    5  YourReportType crReport = new YourReportType();
    6 
    7  //取得你的DataSet
    8  DataSet dsTemp = GetDataSetFactory.ProduceYourDataSet();
    9 
    10  //設定資料來源
    11  MyPathReport.SetDataSource(dsTemp);
    12
    13  //設定報表參數(如果你有參數要傳進去的話)
    14
    15  //建立一個報表參數
    16  CrystalDecisions.Shared.ParameterDiscreteValue MyPara =
    17    new CrystalDecisions.Shared.ParameterDiscreteValue();
    18 
    19  //宣報一個參數集物件
    20  CrystalDecisions.Shared.ParameterValues MyValues;
    21
    22  //設定參數值
    23  MyPara.Value = "YourParamaterValue";
    24
    25  //取得你要設定的參數集物件
    26  MyValues = crReport.DataDefinition.
    27    ParameterFields["ParaName"].CurrentValues;
    28 
    29  //將參數加入
    30  MyValues.Add(MyPara);
    31
    32  //將參數集設定回你要設定的參數
    33  crReport.DataDefinition.
    34    ParameterFields["ParaName"].ApplyCurrentValues(MyValues);
    35
    36  //設定Viewer的 報表來源
    37  CrystalReportViewer1.ReportSource = MyPathReport;
    38}

    2006年3月24日 上午 03:39
  •  ccko 寫信:

     

    但是在Show()的時後,還是會出現輸入資料庫的帳號密碼的訊息視窗(不是我寫的,自動PopUp),然後就去撈全部的data出來 。

         
        
            Dim strFileName As String = System.Reflection.Assembly.GetExecutingAssembly.Location.ToUpper
            Dim frmtable As Table
            Dim frmLogOnInfo As New CrystalDecisions.Shared.TableLogOnInfo
            Dim sqlrd As SqlClient.SqlDataReader
            Try
                sqlConn = New SqlClient.SqlConnection(conn)
                sqlConn.Open()
                queryString = "Select engno, model, chkdate , level, hispd, hi_judge, stime, st_judge, fweel, fw_judge, bweel, bw_judge from PIMHSWTL where level ='外'"
                sqlCommand = New SqlClient.SqlCommand(queryString, sqlConn)
                sqlCommand.CommandType = CommandType.Text
                sqlAdapter = New SqlClient.SqlDataAdapter(queryString, sqlConn)

                sqlAdapter.Fill(DataSet1, "PIMHSWTL")
                frmReport.SetDataSource(DataSet1)
                frmRPT.CrystalReportViewer1.ReportSource = frmReport

                frmRPT.Show()
            Catch ex As Exception
                MsgBox(ex.ToString())
            Finally
                sqlConn.Close()
            End Try

     

    大概看了一下您的程式,一般來說若您不是用 .rpt 跟 DB 直接連線
    是不會出現那個資料庫連線那個方式(視窗)ps(也可以透過程是補那個視窗需要得資訊)。

    因為您確定您是使用 dsName.xsd 方式來給 rpt 所以跟DB因該是無須連線。
    您程式也寫到 TableLogOnInfo  這個在我之前做的經驗
    是需要帶資料庫帳號密碼參數才使用到(您使用 Typed DataSet)
    方式因該不需要。

    您看看是否能把程式的流程改為
    (不要用 到那個 TableLogOnInfo )

    1. //先填資料 sqlAdapter  不需要特別在做 conn.open() //這各根目前問題沒關係,只是跟你做一個提醒

    queryString = "Select engno, model, chkdate , level, hispd, hi_judge, stime, st_judge, fweel, fw_judge, bweel, bw_judge from PIMHSWTL where level ='外'"
                sqlCommand = New SqlClient.SqlCommand(queryString, sqlConn)
                sqlCommand.CommandType = CommandType.Text
                sqlAdapter = New SqlClient.SqlDataAdapter(queryString, sqlConn)

                sqlAdapter.Fill(DataSet1, "PIMHSWTL")

    2. //設定報表來源   
    ReportDoc.Load(Application.StartupPath+"\\publishers.rpt");

    3. //給他這個 ds
        ReportDoc.SetDataSource(dsProductSum);    

    4. // 給 CRViewer.ReportSource   您所建構出來的 ReportDocument
        CRViewer.ReportSource = ReportDoc;

    -- 我這邊這樣是可以跑得起來使用(Typed Dataset)的方式。
    您要不要試試看,您拉一個新的簡單的 測試.rpt
    這樣做一次看看,先不要影響你本來的專案的 .rpt



     

    2006年3月25日 上午 05:14
  • hi~
    我從新弄了一個,(想再回去看圖片您的步驟,您圖片檔案已經宜除)

    //我的步驟大概這樣
    // 1. 做一個 Dataset 2.拉一個報表 3.寫程式控制
     private void Page_Load(object sender, System.EventArgs e)
      {
       DataSet1 dsData = new DataSet1();

    //Typed DataSet 可以直接這樣給直來測,不一定要由資料庫來給值
    //所以我先這樣來測


       dsData.Gop.AddGopRow("CCC");

       ReportDocument ReportDoc = new ReportDocument();

       ReportDoc.Load(Server.MapPath("CrystalReport1.rpt"));

    //給那個 .rpt 我這個 ds
       ReportDoc.SetDataSource(dsData);

       CrystalReportViewer1.ReportSource = ReportDoc;
       CrystalReportViewer1.DataBind();

    }

     

    在CR報表中只用到資料庫欄位 - 我定義的TypedDataSET的TablleName - 那個欄位名稱
    其他 公式、參數等都不用到。
    我這樣跑很順利的可以直接跑進去,不會跳出彈窗。
    以前剛做的時候又CR去拉資料庫,就會有彈窗跑出來。
    但你使用 TypedDataSet因該不會有這種視窗。
    會不會是你之前這張 .rpt 是用拉的,後來你想改成 TypedDataSet
    他還記住以前的,你測看看要不要用一張新的報表跑一下。
    看是不是只有那一張有這個問題。

    如果那張報表,已經有許多參數及公式,重新拉你覺得太費工了,
    就指好在讀報表的時候,使用丟帳號密碼的方式,讓他自己來登入了。


     

    2006年4月2日 上午 08:45

所有回覆

  • 可能是在frmReport.Load(strFileName.Replace("BIN\VB_TESTCRYSTAL.EXE", "CrystalReport3.rpt"))
    出錯。(我猜的)

    我之前經驗是改成這樣(參考 .NET 與CR 那本 鄭淑芬老師寫的書中)
    用的方法。

     

     

     

     1.在專案「屬性」「組態屬性」「輸出路徑」 改為 .\   (原本是\bin\debug\)

    2.在使用的時候就可以用Application.StartupPath+"\\報表.rpt");

       ReportDocument  RptDoc= new ReportDocument();
       RptDoc.Load(Application.StartupPath+"\\PQDailyReport_xsd.rpt");

    2006年3月23日 下午 12:33
  • 我將frmReport = New CrystalReport3就可以了

    不過在組DataSet裡面沒有資料,要怎麼看呢?

    我用DataReader去找,sql 指令可以撈出資料來

    可是DataAdapter fill DataSet Container  是 notihing

    謝謝

    2006年3月24日 上午 01:00
  • 我自己也有點久沒有做 CR 報表,
    跟你確認一下狀況,你是透過 CR 報表裡面的TSQL,

    命令去拉出資料填入 , 還是你是使用 Typed DataSET
    去丟入給報表裡面。你是用哪一種方式給CR資料。

    2006年3月24日 上午 03:33
  • 問了一下我同事 引用他(小紀的程式碼)給我的程式碼
    您先確定一下您填入的 DataSet 的 Table
    在  Fill 進去的資料但底有沒有。
    在透過以下的小範例還試試看。這是把 DataSet 丟入報表的方式。

     



    //如何把DataSet設為CrystalReport的資料來源
    2private void ViewReportFromDataSet()
    3{
    4  //建立一個你的報表物件
    5  YourReportType crReport = new YourReportType();
    6 
    7  //取得你的DataSet
    8  DataSet dsTemp = GetDataSetFactory.ProduceYourDataSet();
    9 
    10  //設定資料來源
    11  MyPathReport.SetDataSource(dsTemp);
    12
    13  //設定報表參數(如果你有參數要傳進去的話)
    14
    15  //建立一個報表參數
    16  CrystalDecisions.Shared.ParameterDiscreteValue MyPara =
    17    new CrystalDecisions.Shared.ParameterDiscreteValue();
    18 
    19  //宣報一個參數集物件
    20  CrystalDecisions.Shared.ParameterValues MyValues;
    21
    22  //設定參數值
    23  MyPara.Value = "YourParamaterValue";
    24
    25  //取得你要設定的參數集物件
    26  MyValues = crReport.DataDefinition.
    27    ParameterFields["ParaName"].CurrentValues;
    28 
    29  //將參數加入
    30  MyValues.Add(MyPara);
    31
    32  //將參數集設定回你要設定的參數
    33  crReport.DataDefinition.
    34    ParameterFields["ParaName"].ApplyCurrentValues(MyValues);
    35
    36  //設定Viewer的 報表來源
    37  CrystalReportViewer1.ReportSource = MyPathReport;
    38}

    2006年3月24日 上午 03:39
  • 我是先新增一個dataset(從資料庫裡拉出我要的欄位)

    然後再新增一個CrystalReport3.rpt,指向dataset,調好我要顯示出的欄位位置在CrystalReport3頁面。

    接著在程式碼裡create跟上面所說的dataset同名的dataset

    再SetDataSource到CrystalReport3

    這樣做不行嗎?

    因為我想在程式碼以sql command來選擇我想show在Report頁面顯示出的資料。

    2006年3月24日 上午 03:45
  • 剛才去翻了一下之前做的
    您是想用在載入報表前,
    先自己透過查詢語法把資料Fill到DataSet裡面,
    再把Dataset給予報表。是嗎?

    那跟你確認一下,您所說的
    是先新增一個dataset(從資料庫裡拉出我要的欄位)

     

    你拉出這個Dataset後是有變成一個 ds你拉的檔名.xsd 這樣類似的檔案嗎?


     

    2006年3月24日 上午 04:10
  •  DotJum 寫信:

    剛才去翻了一下之前做的
    您是想用在載入報表前,
    先自己透過查詢語法把資料Fill到DataSet裡面,
    再把Dataset給予報表。是嗎?

    是的,就是想這樣做

     DotJum 寫信:

    那跟你確認一下,您所說的
    是先新增一個dataset(從資料庫裡拉出我要的欄位)

     

    你拉出這個Dataset後是有變成一個 ds你拉的檔名.xsd 這樣類似的檔案嗎?

    有*.xsd的檔案,因為有這個file,才可以在CrystalReport頁面裡,做排版,我是這樣認為的

    謝謝

     

    2006年3月24日 上午 05:14
  • 我也使採用 xsd 方式給予CR,這樣比較不操資料庫,
    我的作法如下部分的資訊不影響到這個範例我把他就不顯示出來
    你參考看看

     

     

    //宣告在全域變數區
    DataSet dsProductSum;

    ReportDocument ReportDoc = new ReportDocument();

    private void MakeReport()
      {   
                  
       strDateStart = Request.QueryString["strDate"].ToString();
       strDateEnd = Request.QueryString["strDateEnd"].ToString();
       

       try
       {
        /*
         這邊是我處理的邏輯處理
                                            因為有些資訊不方面公開就不顯示在範例中
        */

        //如果是用串命令的方式
        //這邊就是你要組你得命令
    strQueryOracle +="TO_DATE('"+strDateStart+"','yyyy/mm/dd')  AND TO_DATE('"+strDateEnd+"','yyyy/mm/dd') + 1";

        
          // 這各式你去 Fill 出DataSet資料給於到你得 .xsd
        dsProductSum = SqlHelper.ExecuteDataset(Conn,sp,sps);
        //SqlHelper.FillDataset(Conn,sp,dsProductSum,new string[]{"ProductSum"},sps);


       ReportDoc.Load(Server.MapPath("ProductionSumaryReport.rpt"));
        //給他這個 ds
        ReportDoc.SetDataSource(dsProductSum);
        

        
        CRViewer.ReportSource = ReportDoc;

         
         
       
       }
       catch(Exception ex)
       {
        Response.Write(ex.Message);
       }
      }

    2006年3月24日 上午 05:39
  • 謝謝您的回答

    不過sqlHelper這個method

    我不太知道是什麼

    找不到

    謝謝

    2006年3月24日 上午 06:16
  • 抱歉抱歉,那個我用得MS另一套件,
    關於那一段語法你可以改用成

     

    // 這各式你去 Fill 出DataSet資料給於到你得 .xsd
        dsProductSum = SqlHelper.ExecuteDataset(Conn,sp,sps);

    改為這個

    SqlDataAdapter sqlDA = new SqlDataAdapter(sqlCmd);

     sqlDA .Fill(dsProductSum ,"你在裡面定義的TableName");

     

    2006年3月24日 上午 06:25
  • 其實我一開始的程式碼就是這樣做的說(紅色的上兩行)

    後來改了一部分,不過雖然給了自己create的dataset

    但是在Show()的時後,還是會出現輸入資料庫的帳號密碼的訊息視窗(不是我寫的,自動PopUp),然後就去撈全部的data出來 。

    該怎麼解決呢? 謝謝

     

            Dim frmRPT As New Form2
            Dim sqlConn As New SqlClient.SqlConnection
            Dim sqlCommand As New SqlClient.SqlCommand
            Dim conn As String = _
            "Initial Catalog=PIM;Data Source=chichung;User ID=**;Password=**"
            Dim sqlAdapter As New SqlClient.SqlDataAdapter
            Dim queryString As String
            Dim DataSet1 As New System.Data.DataSet
            DataSet1 = New Dataset1
            Dim frmReport As New ReportDocument
            frmReport = New CrystalReport2
            Dim strFileName As String = System.Reflection.Assembly.GetExecutingAssembly.Location.ToUpper
            Dim frmtable As Table
            Dim frmLogOnInfo As New CrystalDecisions.Shared.TableLogOnInfo
            Dim sqlrd As SqlClient.SqlDataReader
            Try
                sqlConn = New SqlClient.SqlConnection(conn)
                sqlConn.Open()
                queryString = "Select engno, model, chkdate , level, hispd, hi_judge, stime, st_judge, fweel, fw_judge, bweel, bw_judge from PIMHSWTL where level ='外'"
                sqlCommand = New SqlClient.SqlCommand(queryString, sqlConn)
                sqlCommand.CommandType = CommandType.Text
                sqlAdapter = New SqlClient.SqlDataAdapter(queryString, sqlConn)

                'sqlrd = sqlCommand.ExecuteReader()
                'While (sqlrd.Read())
                '    Dim a As String = sqlrd.GetString(0)

                'End While

                sqlAdapter.Fill(DataSet1, "PIMHSWTL")
                frmReport.SetDataSource(DataSet1)
                frmRPT.CrystalReportViewer1.ReportSource = frmReport

                frmRPT.Show()
            Catch ex As Exception
                MsgBox(ex.ToString())
            Finally
                sqlConn.Close()
            End Try

    2006年3月24日 上午 07:10
  • 跟您確認一下您Rpt檔案的讀取資料來源
    您使用一個Typed Dataset 
    RPT 那邊是使用 欄位總管-資料庫欄位-新增資料庫-專案資料
    - ADO.NET 資料集 - 那個定義的 ds名字 -- >

    您的資料庫來源是以上這樣方式建出來的嗎?

    2006年3月25日 上午 03:20
  • 恩 我是這樣做的沒錯

     

    2006年3月25日 上午 04:15
  •  ccko 寫信:

     

    但是在Show()的時後,還是會出現輸入資料庫的帳號密碼的訊息視窗(不是我寫的,自動PopUp),然後就去撈全部的data出來 。

         
        
            Dim strFileName As String = System.Reflection.Assembly.GetExecutingAssembly.Location.ToUpper
            Dim frmtable As Table
            Dim frmLogOnInfo As New CrystalDecisions.Shared.TableLogOnInfo
            Dim sqlrd As SqlClient.SqlDataReader
            Try
                sqlConn = New SqlClient.SqlConnection(conn)
                sqlConn.Open()
                queryString = "Select engno, model, chkdate , level, hispd, hi_judge, stime, st_judge, fweel, fw_judge, bweel, bw_judge from PIMHSWTL where level ='外'"
                sqlCommand = New SqlClient.SqlCommand(queryString, sqlConn)
                sqlCommand.CommandType = CommandType.Text
                sqlAdapter = New SqlClient.SqlDataAdapter(queryString, sqlConn)

                sqlAdapter.Fill(DataSet1, "PIMHSWTL")
                frmReport.SetDataSource(DataSet1)
                frmRPT.CrystalReportViewer1.ReportSource = frmReport

                frmRPT.Show()
            Catch ex As Exception
                MsgBox(ex.ToString())
            Finally
                sqlConn.Close()
            End Try

     

    大概看了一下您的程式,一般來說若您不是用 .rpt 跟 DB 直接連線
    是不會出現那個資料庫連線那個方式(視窗)ps(也可以透過程是補那個視窗需要得資訊)。

    因為您確定您是使用 dsName.xsd 方式來給 rpt 所以跟DB因該是無須連線。
    您程式也寫到 TableLogOnInfo  這個在我之前做的經驗
    是需要帶資料庫帳號密碼參數才使用到(您使用 Typed DataSet)
    方式因該不需要。

    您看看是否能把程式的流程改為
    (不要用 到那個 TableLogOnInfo )

    1. //先填資料 sqlAdapter  不需要特別在做 conn.open() //這各根目前問題沒關係,只是跟你做一個提醒

    queryString = "Select engno, model, chkdate , level, hispd, hi_judge, stime, st_judge, fweel, fw_judge, bweel, bw_judge from PIMHSWTL where level ='外'"
                sqlCommand = New SqlClient.SqlCommand(queryString, sqlConn)
                sqlCommand.CommandType = CommandType.Text
                sqlAdapter = New SqlClient.SqlDataAdapter(queryString, sqlConn)

                sqlAdapter.Fill(DataSet1, "PIMHSWTL")

    2. //設定報表來源   
    ReportDoc.Load(Application.StartupPath+"\\publishers.rpt");

    3. //給他這個 ds
        ReportDoc.SetDataSource(dsProductSum);    

    4. // 給 CRViewer.ReportSource   您所建構出來的 ReportDocument
        CRViewer.ReportSource = ReportDoc;

    -- 我這邊這樣是可以跑得起來使用(Typed Dataset)的方式。
    您要不要試試看,您拉一個新的簡單的 測試.rpt
    這樣做一次看看,先不要影響你本來的專案的 .rpt



     

    2006年3月25日 上午 05:14
  •  dotjum 寫信:

    . //先填資料 sqlAdapter  不需要特別在做 conn.open() //這各根目前問題沒關係,只是跟你做一個提醒

    queryString = "Select engno, model, chkdate , level, hispd, hi_judge, stime, st_judge, fweel, fw_judge, bweel, bw_judge from PIMHSWTL where level ='外'"
                sqlCommand = New SqlClient.SqlCommand(queryString, sqlConn)
                sqlCommand.CommandType = CommandType.Text
                sqlAdapter = New SqlClient.SqlDataAdapter(queryString, sqlConn)

                sqlAdapter.Fill(DataSet1, "PIMHSWTL")

     ..........


    -- 我這邊這樣是可以跑得起來使用(Typed Dataset)的方式。
    您要不要試試看,您拉一個新的簡單的 測試.rpt
    這樣做一次看看,先不要影響你本來的專案的 .rpt

     

     

    您最後是採用這個方法您的報表CR就可以讀過去順利顯示出來嗎?

     

    2006年3月26日 上午 08:09
  • 不好意思哦

    回宿舍後,沒辦法上網

    試一下再告知您結果

    謝謝

    2006年3月27日 上午 01:40
  • http://pickup.mofile.com/0440425986829215

    上面這個是我Create dataset 和 rpt的過程(壓成RAR FILE)

    程式碼如下,依然會出現PopUP訊息, 請問要如何修改才不會出現。

    謝謝

     

           Dim rptDoc As New ReportDocument
            rptDoc = New CryRpt
            Dim conn As String = _
            "Initial Catalog=PIM;Data Source=chichung;User ID=ccko;Password=ccko"
            Dim sqladpt As New SqlClient.SqlDataAdapter
            Dim sqlConn As SqlClient.SqlConnection
            sqlConn = New SqlClient.SqlConnection(conn)
            Dim queryString As String = "Select engno, model ,level from PIMHSWTL where level ='外'"
            Dim sqlCommand As New SqlClient.SqlCommand(queryString, sqlConn)
            Dim ds As New DataSet
            ds = New Dataset2
            sqlCommand.CommandType = CommandType.Text
            sqladpt = New SqlClient.SqlDataAdapter(queryString, sqlConn)

            sqladpt.Fill(ds, "PIMHSWTL")

            Dim strFileName As String = System.Reflection.Assembly.GetExecutingAssembly.Location.ToUpper
            Dim path As String = strFileName.Replace("BIN\VB_TESTCRYSTAL.EXE", "CryRpt.rpt")
            rptDoc.SetDataSource(path)
            CrystalReportViewer1.ReportSource = rptDoc

    2006年3月27日 上午 02:51
  • hi~您好您那個好像需要帳號密碼,才能下載。
    您可以先幫我測試一下,
    你拉一個新的報表(建立一個新的rpt)
    拉一個實體Typed DataSet方式,
    這樣去執行看一下還會不會跑出那個。
    (一般會跑出那個可能是你得rpt中,
    有採用到DB TABLE的資訊,
    例如 你設計 rpt 的「公式」 是不是有用到DB 的TABLE 或 VIEW

    等.... 你先試試看拉一個新的 rpt 丟 TypedDataSet進去,
    如果不行,那我找一下我程式丟帳號密碼到rpt的方式在寫出來給你看


     

    2006年3月27日 上午 09:37
  • 進到頁面後

    有個Buttoh(Download now)

    點進去換頁面後有個綠色的button(Click here to download)

    點下去就可以下載了

    丟帳號密碼到rpt 的用LogOnInfo就可以了吧

    照理來說,丟dataset到Report之後,應該就不需要再連到資料庫了吧?

    謝謝

     

     

    2006年3月27日 上午 09:53
  • hi ccko 
    剛才下載您的圖片,真的是已經拉一個ds進去,
    您那邊畫面還出現登入的畫面,我晚點從拉一個
    DATASET來實作一個看看,看是不是有什麼步驟,
    我疏忽了,忘記跟你提醒。
    我測完後在PO上來給你看看...
    2006年3月28日 上午 10:00
  • hi~
    我從新弄了一個,(想再回去看圖片您的步驟,您圖片檔案已經宜除)

    //我的步驟大概這樣
    // 1. 做一個 Dataset 2.拉一個報表 3.寫程式控制
     private void Page_Load(object sender, System.EventArgs e)
      {
       DataSet1 dsData = new DataSet1();

    //Typed DataSet 可以直接這樣給直來測,不一定要由資料庫來給值
    //所以我先這樣來測


       dsData.Gop.AddGopRow("CCC");

       ReportDocument ReportDoc = new ReportDocument();

       ReportDoc.Load(Server.MapPath("CrystalReport1.rpt"));

    //給那個 .rpt 我這個 ds
       ReportDoc.SetDataSource(dsData);

       CrystalReportViewer1.ReportSource = ReportDoc;
       CrystalReportViewer1.DataBind();

    }

     

    在CR報表中只用到資料庫欄位 - 我定義的TypedDataSET的TablleName - 那個欄位名稱
    其他 公式、參數等都不用到。
    我這樣跑很順利的可以直接跑進去,不會跳出彈窗。
    以前剛做的時候又CR去拉資料庫,就會有彈窗跑出來。
    但你使用 TypedDataSet因該不會有這種視窗。
    會不會是你之前這張 .rpt 是用拉的,後來你想改成 TypedDataSet
    他還記住以前的,你測看看要不要用一張新的報表跑一下。
    看是不是只有那一張有這個問題。

    如果那張報表,已經有許多參數及公式,重新拉你覺得太費工了,
    就指好在讀報表的時候,使用丟帳號密碼的方式,讓他自己來登入了。


     

    2006年4月2日 上午 08:45
  • 非常謝謝您的幫忙

    試過之後

    果然是舊的報表影響

    重新create一個之後就可以了

    非常感謝

    2006年4月3日 上午 06:54