我的水晶報表做好了,但人知爲什麽運行時老提示輸入數據庫密碼,輸入之後才可以用?

解决方案 »

  1.   

    说明你的水晶报表是在设计时连接数据库设计的,而不是加载的DataTable,设计时会一次性加载下数据给你,但数据不是实时的,使用的时候你需要自己设置它的数据源,但不要设置数据库连接字符串之类的,不然它会在你运行是去连接数据库,导致需要密码。
      

  2.   

    看看你dataSet中建的表与你引用的表名是不是不一致了,要不删了重新加一下,我都是这么解决的~~
      

  3.   

    是不是用的.NET對象作爲數據源?
    如果是請參考:這裡
      

  4.   

    我用的是VS2008,创建水晶报表时直接在“创建新连接”里点OLE DB建立好一个新连接,然后双击该连接下的“添加命令”,就弹出一个SQL语句录入的窗口,还可以添加参数,不过一般不需要参数,除非设计主从表的时候。 完了你要使用该报表也很简单,把在水晶报表创建时使用的SQL语句复制到C#里用它创建一个DataTable,同一个SQL语句,结构肯定一样了,记得是用new DataTable("命令")来创建DataTable,因为水晶报表里“添加命令”产生的表的表名就叫做"命令",必须保证一致才行,别设置数据库的登录,用SetDataSource()方法设置好就OK了。
      

  5.   

    配置
      logOnInfo.ConnectionInfo.ServerName = "";
                logOnInfo.ConnectionInfo.DatabaseName = "";
                logOnInfo.ConnectionInfo.UserID = "";
                logOnInfo.ConnectionInfo.Password = ""
    或通过数据集绑定水晶报表
      

  6.   

    2楼正解,保持DataSet1.xsd设计视图中DataTable的表名与后台代码中的表名一致
      

  7.   


    我試試,關鍵是我用了帶參數的存儲過程,這一點很蔴煩,貼上代碼如下如下:
                ReportDocument RD = new ReportDocument();RD.Load(Application.StartupPath + "\\CrystalReport5.rpt");                ParameterFields paramFields = new ParameterFields();
                    ParameterField paramField = new ParameterField();
                    ParameterDiscreteValue discreteVal = new ParameterDiscreteValue();
                    //设置第一个参数字段的名字及值   
                    paramField.ParameterFieldName = "@pDate";
                    discreteVal.Value = this.sx1; 
                    paramField.CurrentValues.Add(discreteVal);
                    paramFields.Add(paramField);
                    //设置第二个参数字段的名字及值,paramField及discreteVal变量   
                    //被设置为新置,这样,以前的设置就不会被覆盖,第三、第四,...,   
                    //以此类推   
                    paramField = new ParameterField();
                    paramField.ParameterFieldName = "@pLogonUser";
                    discreteVal = new ParameterDiscreteValue();
                    discreteVal.Value = SQL_Manager.logonUser; 
                    paramField.CurrentValues.Add(discreteVal);
                    paramFields.Add(paramField);
                    string sqlString = "exec test '" + this.sx1 + "','" + SQL_Manager.logonUser + "'";                RD.SetDataSource(client.getDataSet(sqlString, "test"));
                    crystalReportViewer1.ParameterFieldInfo = paramFields;  
                crystalReportViewer1.ReportSource = RD;
                crystalReportViewer1.Show();其中:client.getDataSet(sqlString, "test")返回dataset
    運行要輸密碼
      

  8.   

    我嚐試了新增了個dataset,但有個問題是:如我上面所說的,我用了帶參數的存儲過程,我怎樣將執行存儲過程所得的結果轉到datatable中,而dataset設計界面又如何操作,難道我要在設計界面中增加一個datatable,名字和代碼中的一樣嗎?
    能否給我更多指引,謝謝!
      

  9.   

    多謝各位幫忙,問題解決了,正如 二樓 ‘青龙白虎’所說,SetDataSource()時裏面要設爲datatable才可以,而我愚笨,硬是設的dataset,所以運行總要密碼,具體原因我不是很清楚,但問題終於解決了,也希望對在家有用,共同進步! 分已全送給‘青龙白虎’。謝謝。