水晶报表杂记

TableLogOnInfo   LogOnInfo=   new   TableLogOnInfo   ();      
  LogOnInfo.ConnectionInfo.ServerName="chenjinhua";      
  LogOnInfo.ConnectionInfo.DatabaseName="CheWu";      
  LogOnInfo.ConnectionInfo.UserID="sa";      
  LogOnInfo.ConnectionInfo.Password="master";      
   
  ReportDocument   Report=   new   ReportDocument   ();      
  Report.Load("D://inetpub//wwwroot//test//CrystalReport1.rpt");      
  Report.Database.Tables[0].ApplyLogOnInfo   (LogOnInfo);      
  //Report.SetDataSource("dataSet11");  
   
  //CrystalReportViewer1.ReportSource=   Report;    
   
  myConnection.Open   ();  
  DataSet   ds   =new   DataSet   ();  
   
  string   strSel   =   "Select   *   from   ticket";  
  SqlDataAdapter   MyAdapter=new   SqlDataAdapter   (strSel,myConnection);  
  MyAdapter.Fill(ds,"vSpeciality");  
   
   
  Report.SetDataSource(ds);  
  CrystalReportViewer1.ReportSource   =Report;  
  myConnection.Close();  
   
  以上是我的代码。  
  以下是报错信息:  
  “/Test”应用程序中的服务器错误。  
  --------------------------------------------------------------------------------  
   
  登录失败。    
  说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。    
   
  异常详细信息:   CrystalDecisions.CrystalReports.Engine.LogOnException:   登录失败。  
   
  源错误:    
   
  执行当前   Web   请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。      
   
  堆栈跟踪:    
   
   
  [LogOnException:   登录失败。]  
        .F(String   ,   EngineExceptionErrorID    
  )  
        .A(Int16   ,   Int32   )  
        .@(Int16   )  
        CrystalDecisions.CrystalReports.Engine.FormatEngine.GetPage(PageRequestContext   reqContext)  
        CrystalDecisions.ReportSource.LocalReportSourceBase.GetPage(PageRequestContext   pageReqContext)  
        CrystalDecisions.Web.ReportAgent.u(Boolean   N)  
        CrystalDecisions.Web.CrystalReportViewer.OnPreRender(EventArgs   e)  
        System.Web.UI.Control.PreRenderRecursiveInternal()  
        System.Web.UI.Control.PreRenderRecursiveInternal()  
        System.Web.UI.Control.PreRenderRecursiveInternal()  
        System.Web.UI.Page.ProcessRequestMain()
1 楼
CrystalDecisions.CrystalReports.Engine.LogOnException:     登录失败。      
     
  ---------------------------------------------------------------      
     
  在报表的cs文件中,加上数据库连接。      
  ---------------------------------------------------------------      
     
  1.TableLogonInfo      
     
  .使用TableLogonInfo      
  Dim     ReportDoc     As     New     ReportDocument()      
  Dim     logonInfo     As     New     TableLogonInfo      
  Dim     table     As     table      
  ReportDoc.Load("C:/Rpts/publish.rpt")      
  For     Each     table     IN     ReportDoc.DataBase.Tables      
                                logonInfo=     table.LogonInfo      
                                with     logonInfo.connectioninfo      
                                        .serverName=     "Localhost"      
                                        .Databasename=     "pubs"      
                                        .UserID=     "sa"      
                                        .Password=""      
                                End     With      
                                table.applyLogonInfo(logonInfo)      
  next     table      
  Crviewer.reportsource=     reportDoc      
  2.如果是多個相關表格生成的報表,最好以存儲過程為數據源建立報表  
   
   
  代码放在   Page_load   事件里!  
  试试   info.ConnectionInfo.ServerName   =     "Localhost"  
  用户名和密码的正确性再确定一下!  
  ——————————————————————————————————————  
  调试成功后,可以考虑:  
  将“数据库连接信息”存放在   web.config   配置文件,容易维护  
  ——————————————————————————————————————  
  using   CrystalDecisions.Shared   ; //负责解释TableLogOnInfo类  
  using   CrystalDecisions.CrystalReports.Engine   ; //负责解释ReportDocument类  
   
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  TableLogOnInfo   logOnInfo   =   new   TableLogOnInfo   ();  
  //这里必须事先申明一个ReportDocument对象   Report,同时加载数据报表  
  ReportDocument   oRpt   =   new   ReportDocument();  
  //获取.rpt文件真实路径  
  string   path;  
  path=Server.MapPath   ("cr.rpt");  
  oRpt.Load   (path);  
   
  //从web.config中获取logOnInfo参数信息  
  string   a,b,c,d;  
  //获取ServerName  
  a=System.Configuration.ConfigurationSettings.AppSettings   ["servername"];  
  //获取DatabaseName  
  b=System.Configuration.ConfigurationSettings.AppSettings   ["database"];  
  //获取UserId  
  c=System.Configuration.ConfigurationSettings.AppSettings   ["userid"];  
  //获取password  
  d=System.Configuration.ConfigurationSettings.AppSettings   ["pass"];  
  //设置logOnInfo参数  
  logOnInfo.ConnectionInfo.ServerName   =   a;  
  logOnInfo.ConnectionInfo.DatabaseName   =   b;  
  logOnInfo.ConnectionInfo.UserID   =   c;  
  logOnInfo.ConnectionInfo.Password   =   d;  
   
  oRpt.Database   .Tables   [0].ApplyLogOnInfo   (logOnInfo);  
   
  //建立.rpt文件与CryStalReportviewer文件之间的连接  
  CrystalReportViewer1.ReportSource   =   oRpt;  
   
  DataBind();  
  }  
 

2 楼
大家一起到这里支持一下!!!  
  http://expert.csdn.net/Expert/TopicView1.asp?id=2291055  
  CSDN 开个 Crystal Report   版吧!!!&&&我与水晶报表……  
  haibodotnet   海波.NET

3 楼
海波同志,你贴的我都看过呀,可是你没从根本上解决我的问题呀

4 楼
有没有谁知道怎么解决呀?  
  MVP呢,你们去哪了?

5 楼
大家一起来看啊,这么登录失败者,高手们就忍心看着不管吗?  
  http://expert.csdn.net/Expert/topic/2325/2325865.xml?temp=.1368372

6 楼
还有可能是   NTFS   文件夹权限的问题!  
   
  VS.NET   Crystal   Reports:  
  C:/Program   Files/Microsoft   Visual   Studio   .NET/Crystal   Reports/Viewers  
  Crystal   Reports   9.2:  
  C:/Program   Files/Common   Files/Crystal   Decisions/2.0/crystalreportviewers  
  设置上述文件夹的“安全”,即NTFS   文件夹权限的问题!  
  1、添加当前用户,比如   Administrator,,权限“写入”;  
  2、添加用户   ASPNET,权限“写入”!

7 楼
问题:  
  CrystalDecisions.CrystalReports.Engine.LogOnException:     登录失败。        
  ---------------------------------------------------------------      
  原因一:   NTFS   文件夹权限的问题!  
  文件夹:  
  VS.NET   Crystal   Reports:  
  C:/Program   Files/Microsoft   Visual   Studio   .NET/Crystal   Reports/Viewers  
  Crystal   Reports   9.2:  
  C:/Program   Files/Common   Files/Crystal   Decisions/2.0/crystalreportviewers  
  设置上述文件夹的“安全”,即NTFS   文件夹权限的问题!  
  1、添加当前用户,比如   Administrator,,权限“写入”;  
  2、添加用户   ASPNET,权限“写入”!  
  ---------------------------------------------------------------  
  原因二:数据库登录问题    
  在报表的cs文件中,加上数据库连接。  
  1.TableLogonInfo  
  .使用TableLogonInfo      
  Dim     ReportDoc     As     New     ReportDocument()      
  Dim     logonInfo     As     New     TableLogonInfo      
  Dim     table     As     table      
  ReportDoc.Load("C:/Rpts/publish.rpt")      
  For     Each     table     IN     ReportDoc.DataBase.Tables      
                                logonInfo=     table.LogonInfo      
                                with     logonInfo.connectioninfo      
                                        .serverName=     "Localhost"      
                                        .Databasename=     "pubs"      
                                        .UserID=     "sa"      
                                        .Password=""      
                                End     With      
                                table.applyLogonInfo(logonInfo)      
  next     table      
  Crviewer.reportsource=     reportDoc      
  2.如果是多個相關表格生成的報表,最好以存儲過程為數據源建立報表  
   
   
  代码放在   Page_load   事件里!  
  试试   info.ConnectionInfo.ServerName   =     "Localhost"  
  用户名和密码的正确性再确定一下!  
  ——————————————————————————————————————  
  调试成功后,可以考虑:  
  将“数据库连接信息”存放在   web.config   配置文件,容易维护  
  ——————————————————————————————————————  
  using   CrystalDecisions.Shared   ; //负责解释TableLogOnInfo类  
  using   CrystalDecisions.CrystalReports.Engine   ; //负责解释ReportDocument类  
   
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  TableLogOnInfo   logOnInfo   =   new   TableLogOnInfo   ();  
  //这里必须事先申明一个ReportDocument对象   Report,同时加载数据报表  
  ReportDocument   oRpt   =   new   ReportDocument();  
  //获取.rpt文件真实路径  
  string   path;  
  path=Server.MapPath   ("cr.rpt");  
  oRpt.Load   (path);  
   
  //从web.config中获取logOnInfo参数信息  
  string   a,b,c,d;  
  //获取ServerName  
  a=System.Configuration.ConfigurationSettings.AppSettings   ["servername"];  
  //获取DatabaseName  
  b=System.Configuration.ConfigurationSettings.AppSettings   ["database"];  
  //获取UserId  
  c=System.Configuration.ConfigurationSettings.AppSettings   ["userid"];  
  //获取password  
  d=System.Configuration.ConfigurationSettings.AppSettings   ["pass"];  
  //设置logOnInfo参数  
  logOnInfo.ConnectionInfo.ServerName   =   a;  
  logOnInfo.ConnectionInfo.DatabaseName   =   b;  
  logOnInfo.ConnectionInfo.UserID   =   c;  
  logOnInfo.ConnectionInfo.Password   =   d;  
   
  oRpt.Database   .Tables   [0].ApplyLogOnInfo   (logOnInfo);  
   
  //建立.rpt文件与CryStalReportviewer文件之间的连接  
  CrystalReportViewer1.ReportSource   =   oRpt;  
   
  DataBind();  
  }  
 

8 楼
To:岛城浪子  
  你是怎么解决的?能否告诉我呢?

9 楼
Dim   oRpt   =   New   ReportDocument()  
                  oRpt.Load("d:/hl/Cr2.rpt")  
   
                  Dim   logoninfo   As   TableLogOnInfo   =   New   TableLogOnInfo()  
                  With   logoninfo.ConnectionInfo  
                          .ServerName   =   "pc1"  
                          .DatabaseName   =   "hl"  
                          .UserID   =   "southdoor"  
                          .Password   =   "0"  
                  End   With  
                  oRpt.Database.Tables(0).ApplyLogOnInfo(logoninfo)  
                  CrystalReportViewer1.ReportSource   =   oRpt  
   
  向导生成cr2.rpt,数据库连接是ole   db连接后,就可以了。  
  但我的oRpt.SetDataSource(DataSet11.hl)方法还是登录失败,真他妈郁闷!  
  海波波说的方法我都看了,还是通不过。

10 楼
请问岛城浪子:  
  数据库连接不用ole   db,用ADO.NET好象不行哦

11 楼
我的也是登录失败,郁闷!!!

12 楼
我的也是!水晶报表到底行不行呀

13 楼
CrystalReportViewer1.ReportSource   =   "D://inetpub//wwwroot//test//CrystalReport1.rpt";    
  DataBind();  
 

14 楼
水晶报表,好用得狠啊……  
  细心点……  
   
  先试试上面最简单的   PULL   模式……  
  建立自信……

15 楼
to:海波  
  ADO.NET好象不能连结到SQL   SERVER哦,是吗?

16 楼
to:海波  
  好象你有一个水晶报表的论坛,能把地址告诉我吗?

17 楼
想了解更多水晶报表的知识和技巧,请到  
  NET专栏   ->   水晶报表专栏  
  http://218.56.11.178:8009/  
  jpyc(九品御厨-进军嵌入式)

18 楼
谢谢海波!!!  
  我还想问海波,以存儲過程為數據源建立報表时,存储过程的参数如何处理?

19 楼
海波.NET  
  问题:  
  以存储过程为数据源建立报表时,存储过程的参数如何处理?  
  ——————————————————————————————————————  
  解决方案:  
  1、设计报表时:  
  (1)在“数据库连接向导”里选择存储过程,会提示你输入“参数”;  
  (2)输入数值后,就可以可视化设计报表了;  
  (3)而且会根据“参数”自动生成相应的“参数字段”。  
   
  2、编程:  
  (1)PUSH   模式:调用存储过程生成   DataSet,直接绑定;  
  (2)PULL   模式:设置   CrystalReportViewer1.ParameterFieldInfo,即参数字段。  
   
  3、参考:  
  参数字段运行时自定义  
   
  可支持用户在   Crystal   报表中通过参数进行输入。这种参数有多种用途。例如:    
   
  使参数基于数据库字段并允许用户指定该字段的值,以便对报表中的数据进行筛选。    
  使用参数字段将条件格式应用于报表。    
  使用参数字段来定义排序顺序。    
  下列示例说明如何在运行时通过代码设置参数字段值。此例解释了如何设置两个不同的参数:第一个是多值离散参数,第二个是区域值参数。  
   
  在运行时修改参数字段  
   
  [Visual   Basic]    
  '   声明将参数传递给  
  '查看器控件所需的变量。  
  Dim   paramFields   As   New   ParameterFields()  
  Dim   paramField   As   New   ParameterField()  
  Dim   discreteVal   As   New   ParameterDiscreteValue()  
  Dim   rangeVal   As   New   ParameterRangeValue()  
   
  '   第一个参数是具有多个值的离散参数。  
   
  '   设置参数字段的名称,它必须  
  '和报表中的参数相符。  
  paramField.ParameterFieldName   =   "客户姓名"  
   
  '   设置第一个离散值并将其传递给该参数  
  discreteVal.Value   =   "AIC   Childrens"  
  paramField.CurrentValues.Add(discreteVal)  
   
  '   设置第二个离散值并将其传递给该参数。  
  '   discreteVal   变量被设置为新值,这样,以前的设置  
  '就不会被覆盖。  
  discreteVal   =   New   ParameterDiscreteValue()  
  discreteVal.Value   =   "Aruba   Sport"  
  paramField.CurrentValues.Add(discreteVal)  
   
  '   将该参数添加到参数字段集合。  
  paramFields.Add(paramField)  
   
  '   第二个参数为区域值。paramField   变量  
  '被设置为新值,这样,以前的设置就不会被覆盖。  
  paramField   =   New   ParameterField()  
   
  '   设置参数字段的名称,它必须  
  '和报表中的参数相符。  
  paramField.ParameterFieldName   =   "客户   ID"  
   
  '   设置区域的开始值和结束值并将区域传递给该参数。  
  rangeVal.StartValue   =   42  
  rangeVal.EndValue   =   72  
  paramField.CurrentValues.Add(rangeVal)  
   
  '   将第二个参数添加到参数字段集合。  
  paramFields.Add(paramField)  
   
  '   将参数字段集合放入查看器控件。  
  crystalReportViewer1.ParameterFieldInfo   =   paramFields  
   
  crystalReportViewer1.ReportSource   =   "c:/reports/my   report.rpt"  
  [C#]    
  //   声明将参数传递给  
  //查看器控件所需的变量。  
  ParameterFields   paramFields   =   new   ParameterFields   ();  
  ParameterField   paramField   =   new   ParameterField   ();  
  ParameterDiscreteValue   discreteVal   =   new   ParameterDiscreteValue   ();  
  ParameterRangeValue   rangeVal   =   new   ParameterRangeValue   ();  
   
  //   第一个参数是具有多个值的离散参数。  
   
  //   设置参数字段的名称,它必须  
  //和报表中的参数相符。  
  paramField.ParameterFieldName   =   "客户姓名";  
   
  //   设置第一个离散值并将其传递给该参数。  
  discreteVal.Value   =   "AIC   Childrens";  
  paramField.CurrentValues.Add   (discreteVal);  
   
  //   设置第二个离散值并将其传递给该参数。  
  //   discreteVal   变量被设置为新值,这样,以前的设置  
  //就不会被覆盖。  
  discreteVal   =   new   ParameterDiscreteValue   ();  
  discreteVal.Value   =   "Aruba   Sport";  
  paramField.CurrentValues.Add   (discreteVal);  
   
  //   将该参数添加到参数字段集合。  
  paramFields.Add   (paramField);  
   
  //   第二个参数为区域值。paramField   变量  
  //被设置为新值,这样,以前的设置就不会被覆盖。  
  paramField   =   new   ParameterField   ();  
   
  //   设置参数字段的名称,它必须  
  //和报表中的参数相符。  
  paramField.ParameterFieldName   =   "客户   ID";  
   
  //   设置范围的开始值和结束值并将该范围传递给  
  //该参数。  
  rangeVal.StartValue   =   42;  
  rangeVal.EndValue   =   72;  
  paramField.CurrentValues.Add   (rangeVal);  
   
  //   将第二个参数添加到参数字段集合。  
  paramFields.Add   (paramField);  
   
  //   将参数字段集合放入查看器控件。  
  crystalReportViewer1.ParameterFieldInfo   =   paramFields;  
  [C++]    
  //   声明将参数传递给  
  //查看器控件所需的变量。  
  ParameterFields*   paramFields   =   new   ParameterFields   ();  
  ParameterField*   paramField   =   new   ParameterField   ();  
  ParameterDiscreteValue*   discreteVal   =   new   ParameterDiscreteValue   ();  
  ParameterRangeValue*   rangeVal   =   new   ParameterRangeValue   ();  
   
  //   第一个参数是具有多个值的离散参数。  
  //   设置参数字段的名称,它必须  
  //和报表中的参数相符。  
  paramField->ParameterFieldName   =   "客户姓名";  
   
  //   设置第一个离散值并将其传递给该参数。  
  String*   val   =   "AIC   Childrens";  
  discreteVal->Value   =   val;  
  paramField->CurrentValues->Add   (discreteVal);  
   
  //   设置第二个离散值并将其传递给该参数。  
  //   discreteVal   变量被设置为新值,这样,以前的设置  
  //就不会被覆盖。  
  discreteVal   =   new   ParameterDiscreteValue   ();  
  val   =   "Aruba   Sport";  
  discreteVal->Value   =   val;  
  paramField->CurrentValues->Add   (discreteVal);  
   
  //   将该参数添加到参数字段集合。  
  paramFields->Add   (paramField);  
   
  //   第二个参数为区域值。paramField   变量  
  //被设置为新值,这样,以前的设置就不会被覆盖。  
  paramField   =   new   ParameterField   ();  
   
  //   设置参数字段的名称,它必须  
  //和报表中的参数相符。  
  paramField->ParameterFieldName   =   "客户   ID";  
   
  //   设置范围的开始值和结束值并将该范围传递给  
  //该参数。  
  rangeVal->StartValue   =   __box(42);  
  rangeVal->EndValue   =   __box(72);  
  paramField->CurrentValues->Add   (rangeVal);  
   
  //   将第二个参数添加到参数字段集合。  
  paramFields->Add   (paramField);  
   
  //   将参数字段集合放入查看器控件。  
  crystalReportViewer1->ParameterFieldInfo   =   paramFields;  
   
  crystalReportViewer1->ExportReport();

20 楼
彻底解决   CrystalReports   登录失败问题(海波.NET,更新:2003-10-14)  
  问题:  
  CrystalReports   登录失败  
  ---------------------------------------------------------------      
  原因一:   NTFS   文件夹权限的问题!  
  文件夹:  
  VS.NET   Crystal   Reports:  
  C:/Program   Files/Microsoft   Visual   Studio   .NET/Crystal   Reports/Viewers  
  Crystal   Reports   9.2:  
  C:/Program   Files/Common   Files/Crystal   Decisions/2.0/crystalreportviewers  
  设置上述文件夹的“安全”,即NTFS   文件夹权限的问题!  
  1、添加当前用户,比如   Administrator,,权限“写入”;  
  2、为用户   ASPNET、SYSTEM、匿名用户(通常为   IUSR_MACHINENAME)、经过身份验证的请求用户添加“写入”权限!  
  ---------------------------------------------------------------  
  原因二:数据库登录问题    
  在报表的cs文件中,加上数据库连接。  
  1.TableLogonInfo  
  .使用TableLogonInfo      
  Dim     ReportDoc     As     New     ReportDocument()      
  Dim     logonInfo     As     New     TableLogonInfo      
  Dim     table     As     table      
  ReportDoc.Load("C:/Rpts/publish.rpt")      
  For     Each     table     IN     ReportDoc.DataBase.Tables      
                                logonInfo=     table.LogonInfo      
                                with     logonInfo.connectioninfo      
                                        .serverName=     "Localhost"      
                                        .Databasename=     "pubs"      
                                        .UserID=     "sa"      
                                        .Password=""      
                                End     With      
                                table.applyLogonInfo(logonInfo)      
  next     table      
  Crviewer.reportsource=     reportDoc      
  2.如果是多個相關表格生成的報表,最好以存儲過程為數據源建立報表  
   
   
  代码放在   Page_load   事件里!  
  试试   info.ConnectionInfo.ServerName   =     "Localhost"  
  用户名和密码的正确性再确定一下!  
  ——————————————————————————————————————  
  调试成功后,可以考虑:  
  将“数据库连接信息”存放在   web.config   配置文件,容易维护  
  ——————————————————————————————————————  
  using   CrystalDecisions.Shared   ; //负责解释TableLogOnInfo类  
  using   CrystalDecisions.CrystalReports.Engine   ; //负责解释ReportDocument类  
   
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  TableLogOnInfo   logOnInfo   =   new   TableLogOnInfo   ();  
  //这里必须事先申明一个ReportDocument对象   Report,同时加载数据报表  
  ReportDocument   oRpt   =   new   ReportDocument();  
  //获取.rpt文件真实路径  
  string   path;  
  path=Server.MapPath   ("cr.rpt");  
  oRpt.Load   (path);  
   
  //从web.config中获取logOnInfo参数信息  
  string   a,b,c,d;  
  //获取ServerName  
  a=System.Configuration.ConfigurationSettings.AppSettings   ["servername"];  
  //获取DatabaseName  
  b=System.Configuration.ConfigurationSettings.AppSettings   ["database"];  
  //获取UserId  
  c=System.Configuration.ConfigurationSettings.AppSettings   ["userid"];  
  //获取password  
  d=System.Configuration.ConfigurationSettings.AppSettings   ["pass"];  
  //设置logOnInfo参数  
  logOnInfo.ConnectionInfo.ServerName   =   a;  
  logOnInfo.ConnectionInfo.DatabaseName   =   b;  
  logOnInfo.ConnectionInfo.UserID   =   c;  
  logOnInfo.ConnectionInfo.Password   =   d;  
   
  oRpt.Database   .Tables   [0].ApplyLogOnInfo   (logOnInfo);  
   
  //建立.rpt文件与CryStalReportviewer文件之间的连接  
  CrystalReportViewer1.ReportSource   =   oRpt;  
   
  DataBind();  
  }  
  ——————————————————————————————————————  
  附件:  
  海波.NET  
  问题:  
  安全之道:crystalreport   的集成认证如何与NT(2K)SERVER集成??  
  ——————————————————————————————————————  
  安全三要素:  
  模拟,验证,授权  
  ——————————————————————————————————————  
  如果运行   ASP.NET   程序,还需要为   ASPNET   账号——运行   ASP.NET   模拟的账号,做下述设置:  
   
  1、通过   Web   访问服务器,访问者默认“模拟”的是——Internet   来宾帐号,账号名:IUSR_计算机名;  
  2、“IUSR_计算机名”账号要访问   SQL   SERVER,必须为该帐号建立“登录”(验证也!);  
  3、并授予“服务器角色”和“数据库访问许可”、“数据库角色”(授权也)!  
  ——————————————————————————————————————  
  参考:  
  1、匿名访问   Web   所模拟的账号  
  账号名:IUSR_计算机名  
  全名:Internet   来宾帐号  
  描述:匿名访问   Internet   信息服务的内置帐号  
   
  2、运行   ASP.NET   模拟的账号  
  账号名:ASPNET  
  全名:aspnet_wp   account  
  描述:运行   ASP.NET   工作进程的账号  
 

21 楼
海波:  
  我在设计报表的时候设计了参数,并给我值,程序我已经按你说的做了,但有如下错误:  
  丢失参数字段当前值。    
  说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。    
   
  异常详细信息:   CrystalDecisions.CrystalReports.Engine.ParameterFieldCurrentValueException:   丢失参数字段当前值。  
   
  源错误:    
   
  执行当前   Web   请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。      
   
  堆栈跟踪:    
   
   
  [ParameterFieldCurrentValueException:   丢失参数字段当前值。]  
        .F(String   ,   EngineExceptionErrorID    
  )  
        .B(String   ,   Int32   )  
        CrystalDecisions.CrystalReports.Engine.FormatEngine.internalSetReportInfo(RequestContext   reqContext)  
        CrystalDecisions.CrystalReports.Engine.FormatEngine.internalGetViewContext(ReportPageRequestContext   reqContext,   *   viewContext)  
        CrystalDecisions.CrystalReports.Engine.FormatEngine.GetPage(PageRequestContext   reqContext)  
        CrystalDecisions.ReportSource.LocalReportSourceBase.GetPage(PageRequestContext   pageReqContext)  
        CrystalDecisions.Web.ReportAgent.u(Boolean   N)  
        CrystalDecisions.Web.CrystalReportViewer.OnPreRender(EventArgs   e)  
        System.Web.UI.Control.PreRenderRecursiveInternal()  
        System.Web.UI.Control.PreRenderRecursiveInternal()  
        System.Web.UI.Control.PreRenderRecursiveInternal()  
        System.Web.UI.Page.ProcessRequestMain()  
   
     
 

22 楼
Crystal   Reports   9   最新补丁下载(搜集:海波.NET)  
   
  (1)Crystal   Reports   9   Database   and   Export   Drivers   Monthly   Hot   Fix  
  http://support.crystaldecisions.com/communityCS/FilesAndUpdates/cr90dbexwin_en.zip.asp?recDnlReq=Record&dnlPath=cr90dbexwin_en.zip  
  (2)Crystal   Reports   9   Developer   Files   Monthly   Hot   Fix  
  http://support.crystaldecisions.com/communityCS/FilesAndUpdates/cr90devwin_en.zip.asp?recDnlReq=Record&dnlPath=cr90devwin_en.zip  
  (3)Crystal   Reports   9.0   Main   Program   Files   Monthly   Hot   Fix  
  http://support.crystaldecisions.com/communityCS/FilesAndUpdates/cr90mainwin_en.zip.asp?recDnlReq=Record&dnlPath=cr90mainwin_en.zip

23 楼
打了补丁,还是不行!

24 楼
贴出源代码,看看……

25 楼
Current <错误:   发生   {CrystalDecisions.CrystalReports.Engine.InvalidArgumentException}   类型的异常>System.Object  
   
  加了参数就有以上错误,不加就没有

26 楼
以下是源代码:  
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  //   在此处放置用户代码以初始化页面  
  TableLogOnInfo   LogOnInfo=   new   TableLogOnInfo   ();      
  LogOnInfo.ConnectionInfo.ServerName="chenjinhua";      
  LogOnInfo.ConnectionInfo.DatabaseName="CheWu";      
  LogOnInfo.ConnectionInfo.UserID="sa";      
  LogOnInfo.ConnectionInfo.Password="master";    
   
   
  ReportDocument   Report=   new   ReportDocument   ();      
  Report.Load("D://inetpub//wwwroot//test//CrystalReport4.rpt");      
  for   (int   i=0;i   ==   Report.Database.Tables.Count   -   1;i++)  
  {  
  Report.Database.Tables[i].ApplyLogOnInfo   (LogOnInfo);      
  }  
   
  //     声明将参数传递给    
  //查看器控件所需的变量。    
  ParameterFields     paramFields     =     new     ParameterFields     ();    
  ParameterField     paramField     =     new     ParameterField     ();    
  ParameterDiscreteValue     discreteVal     =     new     ParameterDiscreteValue     ();    
  //ParameterRangeValue     rangeVal     =     new     ParameterRangeValue     ();    
  paramField.ParameterFieldName     =     "id";    
  discreteVal.Value     =1;    
  paramField.CurrentValues.Add     (discreteVal);    
  paramFields.Add     (paramField);    
   
  paramField=   new   ParameterField();  
  paramField.ParameterFieldName     =     "seatNumber";  
  discreteVal=new   ParameterDiscreteValue();  
  discreteVal.Value     =3;    
  paramField.CurrentValues.Add     (discreteVal);    
  paramFields.Add     (paramField);    
   
  //     将参数字段集合放入查看器控件。    
  CrystalReportViewer1.ParameterFieldInfo     =     paramFields;    
   
  CrystalReportViewer1.ReportSource   =Report;  
   
   
  this.DataBind();  
  }
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值