做的报表打包程序!编译总通不过,错误提示为:
正在生成文件“E:\vsnet\练习\WinForm\Setup2\Debug\Setup2.msi”...
错误: 未能找到文件“C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\VSD301.tmp\Managed.D93ED6F5_1D53_11D4_A53C_0090278A1BB8\Program Files\Microsoft Visual Studio .NET 2003\Crystal Reports\Viewers\images\Tree\beginminus.gif” '没有注册界面'
这是怎么回事!

解决方案 »

  1.   

    彻底解决 CrystalReports 登录失败问题      
     
    目录:
    一、Crystal Reports 9 最新补丁下载(搜集:海波.NET)
    二、原因1:文件夹 NTFS 权限的问题。
    三、原因2:PULL 模式,水晶报表中的数据库登录问题(非 Windows 集成身份验证)。
    四、原因3:PUSH 模式设置了 TableLogOnInfo,不需要!
    五、出错:部署到其它计算机,产生问题:连接失败。错误的登录参数。
    六、安全之道:crystalreport 的集成认证如何与NT(2K)SERVER集成?
    七、原因4:PULL 模式,水晶报表中的数据库登录问题(Windows 集成身份验证)。
    ---------------------------------------------------------------
    问题:
    CrystalReports 登录失败
    LogOnException
    --------------------------------------------------------------- 
    一、Crystal Reports 9 最新补丁下载
    (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 
    --------------------------------------------------------------- 
    二、原因1:文件夹 NTFS 权限的问题。
    1、水晶报表 Web 查看器文件夹 NTFS 权限的问题
    (1)错误提示:
    “/WebApplication1”应用程序中的服务器错误。
      登录失败。 
      说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 
      异常详细信息: CrystalDecisions.CrystalReports.Engine.LogOnException: 登录失败。
    (2)相关文件夹:
    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\crystalreportviewers2、水晶报表文件所在的文件夹,或者导出时的目标文件夹 NTFS 权限的问题
    (1)错误提示:
    登录失败。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
    异常详细信息: CrystalDecisions.CrystalReports.Engine.LogOnException: 登录失败。3、设置上述文件夹的“安全”,即 NTFS 权限:
    最简单的办法是给 Everyone 用户加“完全控制”权限!
    (1)为当前用户,如:Administrator,,添加“写入”权限;
    (2)为用户 ASPNET、SYSTEM、匿名用户(通常为 IUSR_MACHINENAME)、经过身份验证的请求用户添加“写入”权限。
    ---------------------------------------------------------------
    三、原因2:PULL 模式,水晶报表中的数据库登录问题。
    运行时登录数据库服务器的方法(PULL 模式)
    在报表的cs文件中,加上数据库连接。
    1、设置 ReportDocument 的 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、如果是多个相关的表作为报表的数据源,最好使用存储过程或者查询作为数据源。3、将“数据库连接信息”存放在 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();
    }
    ---------------------------------------------------------------
    四、原因3:PUSH 模式设置了 TableLogOnInfo,不需要!
    因为数据源是 DataSet,不是数据库!
    ---------------------------------------------------------------
    五、出错:部署到其它计算机,产生问题:连接失败。错误的登录参数。
    在开发机(2000)上运行,一切正常;移植到生产机(2003),就报错。错误提示:连接失败。错误的登录参数。
    解决方案:
    部署包少了点东西:
    Crystal_Database_Access2003.msm
    Crystal_Database_Access2003_chs.msm
    这两个合并模块包含各种连接数据源的驱动。所以少了它,就老是提示登录失败(这种提示是不是很莫名其妙?)
    ---------------------------------------------------------------
    六、安全之道: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 工作进程的账号
    ---------------------------------------------------------------
    七、原因4:PULL 模式,水晶报表中的数据库登录问题(Windows 集成身份验证)。
    1、错误提示:
    “/MyWebApp”应用程序中的服务器错误。
    用户 'PYPC101\ASPNET' 登录失败。 
    2、问题分析:
    设计水晶报表时,在“数据库专家”的“连接信息”里使用了“集成安全”,即 Windows 集成身份验证。
    3、解决方案:
    要为 ASPNET 账号增加数据库登录和访问权限……
    但这样不太适用,设计时最好使用数据库服务器的身份验证,用服务器的账号登录,比如:sa!
    4、参考:三、原因2:水晶报表中的数据库登录问题。
     
      

  2.   

    部署水晶报表时的常见问题及解决方案 
    目录:
    1、载入报表时报错
    2、部署到 Windows 98 / ME 时,出错:"Load Report Failed" 
    3、在Win98的客户端运行提示"该字段名未知"
    4、分发到客户机时“查询引擎出错”
    5、load crpe32.dll failed
    6、在 ASP.NET 程序中加载报表时,出错:"Load Report Failed" 
    7、部署 .NET 9.1 程序到 Windows 98 时,出错:"Load Report Failed" 
    ------------------------------------------------
    1、载入报表时报错
    问题出在报表发布上。
    发布使用水晶报表的项目需要包含三种组件:报表(*.rpt)、模块(*.msm)、运行库(*.msm),这些模块文件是在 C:\Program Files\Common Files\Merge Modules\ 目录里面。
    (1)报表(*.rpt)
    用户编程时创建的水晶报表文件。
    (2)模块(*.msm)
    Managed.msm 该模块包含了CR for VS .NET 的管理模块,如 CrystalDecisions、CrystalReports.Engine.DLL、CrystalDecisions.Web.DLL, 和 CrystalDecisions.Windows.Forms.DLL……
    Managed_chs.msm 是该模块的中文版语言支持。
    Database_Access.msm 该模块包含了数据库的驱动、与不同数据库的联结、报表导出为 RTF 和 HTML 格式的文档和图表组件。 
    Database_Access_chs.msm 是此模块的中文版语言支持。
    Regwiz.msm 注册信息模块,非常重要,必需在这个模块输入水晶报表的注册序列号,如果不填,编译的时候就无法通过
    (3)运行库(*.msm)
    如果报表文件使用了 ADO.NET 的 dataset 数据集对象,那么 VC_CRT.msm 和 VC_STL.msm 模块也必须包含在安装工程中。而且这两个模块的文件安装属性的"Module Retargetable Folder"项必须修改成为系统目录
    在VS.NET安装工程中,系统检测出来的依赖项只有 dotNETFXRedist_x86_chs.msm 和 Managed.msm这两个模块,其他的模块我们需要手动加入。
    (1)在解决方案资源管理器里,右键单击安装项目选择"添加"-〉"合并模块(M)"
    (2)在"添加模块"对话窗体,选择 Managed_chs.msm 、Database_Access, Database_Access_chs, regwiz、VC_CRT.msm 和 VC_STL.msm 模块
    (3)重新生成安装项目,没问题,只是生成的安装程序一下子大了七、八兆。
    -------------------------
    2、部署到 Windows 98 / ME 时,出错:"Load Report Failed" 
    是因为查询引擎 DLL(CRQE.dll)在客户计算机上没有正确注册。
    要解决这个问题,可以在客户计算机上手动注册 CRQE.dll,使用下面的命令:
    regsvr32 "C:\program files\common files\Crystal Decisions\1.0\bin\CRQE.dll"
    如果 CRQE.dll 没有成功注册,并且问题继续存在,在客户计算机上检查 ATL.dll 的版本。ATL.dll for Windows 98/ME 正确的版本是 3.0.8449。
    通过使用下面三种方法中的任意一种方法,可以找到并注册正确版本的 ATL.dll。
    (1)在客户计算机上装 IE6.0。
    (2)在客户计算机上,手动复制和注册 ATL.dll,然后运行用于 Crystal Reports 分发的安装包。
    (2)将 ATL.msm 合并模块添加到安装工程,ATL.msm 是 Visual Studio installer 1.1 的一部分,可以去微软的网站http://msdn.microsoft.com/vstudio/downloads/tools/vsi11/download.aspx下载, 添加办法同上。
    -------------------------
    3、在Win98的客户端运行提示"该字段名未知"
    报表在Win2000的客户端一切正常,在Win98的客户端运行提示"该字段名未知"?
    是因为报表使用到的 sql server 数据库中的字段名为中文的缘故,将其字段名改名为英文字段名。
    -------------------------
    4、分发到客户机时“查询引擎出错”
    (1)“安装项目”要包含下列合并模块:
    VC_CRT.msm 
    VC_STL.msm 
    (2)此外,确保 Msvcr70.dll 和 Msvcp70.dll 在客户计算机的“系统目录”里。
    -------------------------
    5、load crpe32.dll failed
    下面是cr9net_deployment.pdf说明中的部署Crystal Report 9的步骤:
    打开 Windows 应用程序。 
    在解决方案资源管理器中,右击 Windows 应用程序解决方案,指向“添加”,然后单击“新建项目”。 
    在“添加新项目”对话框中,选择“项目类型”窗格中的“安装和部署项目”,然后选择“模板”窗格中的“安装项目”。单击“确定”按钮。 
    在解决方案资源管理中,右击安装项目,指向“添加”,然后单击“项目输出”。 
    在“添加项目输出组”中,选择“主输出”,然后单击“确定”。 
    将自动添加所有依赖项,如 dotnetfxredist_x86_enu.msm和dotnetcrystalreports.msm。
    需要将dotnetcrystalreports.msm排除在项目之外,在解决方案资源管理器中右击这个模块的右键,选择“排除”。 
    在解决方案资源管理器中,右击安装项目,指向“添加”,然后单击“合并模块”。 
    在“添加模块”对话框中,选择下列要添加到安装项目的合并模块,然后单击“打开”: 
    reportengine.msm, crnetruntime.msm, license.msm
    mapping.msm (可选,当在报表中使用了geographic maps时) 
    VC_CRT.msm、VC_STL.msm( 如果您部署的 Windows 应用程序使用 ADO.NET 数据集,则还需要包括 VC_CRT 和 VC_STL 合并模块)
    在解决方案资源管理器中,右击 license.msm 文件,然后选择“属性”。 
    在“属性”窗口中,展开 MergeModuleProperties,然后在“许可证密钥”属性框中输入一个有效的许可证密钥。 
    注意   每当部署 Crystal Reports 应用程序时,必须提供许可证密钥。 
    从“生成”菜单中,选择“生成解决方案”以生成应用程序。
    -------------------------
    6、在 ASP.NET 程序中加载报表时,出错:"Load Report Failed" 
    确保 ASPNET 本地用户对报表所在的文件夹有“完全控制”的权限。
    -------------------------
    7、部署 .NET 9.1 程序到 Windows 98 时,出错:"Load Report Failed" 
    是因为查询引擎 DLL(CRQE.dll)在客户计算机上没有正确注册。
    要解决这个问题,从开发计算机复制 Dbghelp.dll 到客户计算机的"C:Windows\system32" 文件夹。
     
      

  3.   

    解决了上面的问题,但是现在有了新的问题:
    正在生成文件“E:\vsnet\练习\WinForm\Setup2\Debug\Setup2.msi”...
    错误: 未能找到文件“C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\VSD32B.tmp\Managed.D93ED6F9_1D53_11D4_A53C_0090278A1BB8\Program Files\Microsoft Visual Studio .NET 2003\Crystal Reports\Crystal.NET\zh-CHS\CrystalDecisions.Windows.Forms.resources.dll” '没有注册界面'这是什么意思呀!麻烦给解释一下!