Crystal Report 資料庫修改後 報表不會重新讀取資料庫資料

已答覆 Crystal Report 資料庫修改後 報表不會重新讀取資料庫資料

  • 2011年9月15日 上午 08:43
     
      包含代碼

    各位前輩大家好

    小弟最近使用Crystal report 作為報表

    案子都要結了 結果在最後使用者測試時發現

    當系統中使用者修改了部份資料並儲存到資料庫中

    但是再開報表卻發現 報表上資料不會更新...

    可是如果以預覽模式是有更新的 只是在系統上就會還是舊的

    不知道到底是程式裡哪裡寫錯了呢?導致他還是抓到舊的資料

    附上程式碼 感謝各位

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Report.aspx.cs" Inherits="App_WebForm_Web_Report_Report_CReport_Report" %>
    <%@ Register TagPrefix="CR" Namespace="CrystalDecisions.Web" Assembly="CrystalDecisions.Web, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <CR:CrystalReportViewer ID="CrystalReportViewer1" Runat="server" 
                AutoDataBind="True" Height="50px" Width="350px" 
                HasToggleGroupTreeButton="False" />
        </div>
        </form>
    </body>
    </html>
    
    

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Microsoft.VisualBasic;
    using System.Collections;
    using System.Data;
    using System.Diagnostics;
    using CrystalDecisions.Shared;
    using CrystalDecisions.CrystalReports.Engine;
    using CrystalDecisions.Web;
    using System.Threading;
    
    public partial class App_WebForm_Web_Report_Report_CReport_Report : System.Web.UI.Page
    {
        private string paramNames = "";
        private string paramValues = "";
        private string rptName = "";
    
        protected void Page_Load(object sender, EventArgs e)
        {
            string CostNum = Page.Request["CostNum"];
    
            if (!Page.IsPostBack)
            {
                rptName = Page.Request["rpt"];
                paramNames = "CostNum";
                //,SinkBk,GPU,Memory,Packing,other"
                paramValues = CostNum;
                //& "," & Page.Request("SinkBk") & "," & Page.Request("GPU") & "," & Page.Request("Memory") & "," & Page.Request("Packing") & "," & Page.Request("other")
                PrintRpt("127.0.0.1", "test", "test", "test");
            }
        }
        private void PrintRpt(string SvrName, string Uid, string Pwd, string DBName)
    	{
    		ConnectionInfo myConnectionInfo = new ConnectionInfo();
            TableLogOnInfos myTableLogOnInfos = new TableLogOnInfos();
    		CrystalReportViewer1.ReportSource = null;
    		myConnectionInfo.DatabaseName = DBName;
    		myConnectionInfo.UserID = Uid;
    		myConnectionInfo.Password = Pwd;
    		myConnectionInfo.ServerName = SvrName;
    
    		string[] pname = null;
    		string[] pvalue = null;
    
    		pname = paramNames.Split(',');
    		pvalue = paramValues.Split(',');
            ParameterField PF = new ParameterField();
            ParameterDiscreteValue PFV = new ParameterDiscreteValue();
            ParameterFields PFS = new ParameterFields();
    		if (pname.Length > 0) 
            {
    			//// 設定參數
    			for (int i = 0; i <= pname.Length - 1; i++) 
                {
    				PF = new ParameterField();
    				PF.ParameterFieldName = pname[i];
    				PFV = new ParameterDiscreteValue();
    				PFV.Value = pvalue[i];
    				PF.CurrentValues.Add(PFV);
    				PFS.Add(PF);				
    			}
    		}
            CrystalReportViewer1.ParameterFieldInfo = PFS;
    	    CrystalReportViewer1.DisplayGroupTree = false;
    	    CrystalReportViewer1.ReportSource = Server.MapPath(rptName + ".rpt");
    	    myTableLogOnInfos = CrystalReportViewer1.LogOnInfo;
    	    foreach (TableLogOnInfo myTableLogOnInfo in myTableLogOnInfos) 
            {
    		    myTableLogOnInfo.ConnectionInfo = myConnectionInfo;
            }
            //CrystalReportViewer1.RefreshReport();
    	}
    
    	protected void Page_Unload(object sender, System.EventArgs e)
    	{
    		CrystalReportViewer1.Dispose();
    	}
    }
    


所有回覆

  • 2011年9月16日 上午 03:48
     
     已答覆

    最後發現是rpt有設預設值

    導致會將資料hold住

    現在將預設值清除即每次都會抓到新的資料

    • 已標示為解答 zeanmar 2011年9月16日 上午 03:48
    •