運行水晶報表提示密碼 我的水晶報表做好了,但人知爲什麽運行時老提示輸入數據庫密碼,輸入之後才可以用? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 说明你的水晶报表是在设计时连接数据库设计的,而不是加载的DataTable,设计时会一次性加载下数据给你,但数据不是实时的,使用的时候你需要自己设置它的数据源,但不要设置数据库连接字符串之类的,不然它会在你运行是去连接数据库,导致需要密码。 看看你dataSet中建的表与你引用的表名是不是不一致了,要不删了重新加一下,我都是这么解决的~~ 是不是用的.NET對象作爲數據源?如果是請參考:這裡 我用的是VS2008,创建水晶报表时直接在“创建新连接”里点OLE DB建立好一个新连接,然后双击该连接下的“添加命令”,就弹出一个SQL语句录入的窗口,还可以添加参数,不过一般不需要参数,除非设计主从表的时候。 完了你要使用该报表也很简单,把在水晶报表创建时使用的SQL语句复制到C#里用它创建一个DataTable,同一个SQL语句,结构肯定一样了,记得是用new DataTable("命令")来创建DataTable,因为水晶报表里“添加命令”产生的表的表名就叫做"命令",必须保证一致才行,别设置数据库的登录,用SetDataSource()方法设置好就OK了。 配置 logOnInfo.ConnectionInfo.ServerName = ""; logOnInfo.ConnectionInfo.DatabaseName = ""; logOnInfo.ConnectionInfo.UserID = ""; logOnInfo.ConnectionInfo.Password = ""或通过数据集绑定水晶报表 2楼正解,保持DataSet1.xsd设计视图中DataTable的表名与后台代码中的表名一致 我試試,關鍵是我用了帶參數的存儲過程,這一點很蔴煩,貼上代碼如下如下: 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運行要輸密碼 我嚐試了新增了個dataset,但有個問題是:如我上面所說的,我用了帶參數的存儲過程,我怎樣將執行存儲過程所得的結果轉到datatable中,而dataset設計界面又如何操作,難道我要在設計界面中增加一個datatable,名字和代碼中的一樣嗎?能否給我更多指引,謝謝! 多謝各位幫忙,問題解決了,正如 二樓 ‘青龙白虎’所說,SetDataSource()時裏面要設爲datatable才可以,而我愚笨,硬是設的dataset,所以運行總要密碼,具體原因我不是很清楚,但問題終於解決了,也希望對在家有用,共同進步! 分已全送給‘青龙白虎’。謝謝。 运行出现错误:使用new关键字创建对象实例 System.Speech.Synthesis.Prompt有什么作用? 为什么老显示INSERT INTO语法错误.. 求简单正则表达式 帮忙啊?紧急 终于升四个裤衩了,散分!顺便推荐几个视频 .net技术用什么工具比较好? 对于log4net日志记录数据库,哪位大虾有成功的案例。 怎样通过流读取文件中编码大于127的字符? .net中的标准事件 運行水晶報表提示密碼 表设计
如果是請參考:這裡
logOnInfo.ConnectionInfo.ServerName = "";
logOnInfo.ConnectionInfo.DatabaseName = "";
logOnInfo.ConnectionInfo.UserID = "";
logOnInfo.ConnectionInfo.Password = ""
或通过数据集绑定水晶报表
我試試,關鍵是我用了帶參數的存儲過程,這一點很蔴煩,貼上代碼如下如下:
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
運行要輸密碼
能否給我更多指引,謝謝!