zoukankan      html  css  js  c++  java
  • check whether the crystal report runtime is exists 检查crystalreport运行时是否存在

    1.

                Try
                    Dim rptDoc As New CrystalDecisions.CrystalReports.Engine.ReportClass()
                    Dim rptView As New CrystalDecisions.Windows.Forms.CrystalReportViewer()
                Catch ex As Exception
                    If (System.IntPtr.Size = 8) Then
                        Dim ehp As BLL2.ExecutorHelper = New BLL2.ExecutorHelper()
                        Dim path As String = ehp.Download2UnZipRpt()
                        BLL2.ExecutorHelper.ExecuteAsAdmin(path)
                    Else
                        ' leave the work for 32bit os to develop in the future
                    End If
    
                End Try

    2. more information 

    when you initialize a ReportDocument on a system without a crystal report runtime, it will thrown an error:


    ************** Exception Text **************
    System.TypeInitializationException: The type initializer for 'CrystalDecisions.CrystalReports.Engine.ReportDocument' threw an exception. ---> CrystalDecisions.CrystalReports.Engine.LoadSaveReportException: An error has occurred while attempting to load the Crystal Reports runtime. Either the Crystal Reports registry key permissions are insufficient, or the Crystal Reports runtime is not installed correctly. Please install the appropriate Crystal Reports redistributable (CRRedist*.msi) containing the correct version of the Crystal Reports runtime (x86, x64, or Itanium) required. Please go to http://www.businessobjects.com/support for more information.
    at CrystalDecisions.CrystalReports.Engine.ReportDocument.CheckForCrystalReportsRuntime()
    at CrystalDecisions.CrystalReports.Engine.ReportDocument..cctor()
    --- End of inner exception stack trace ---
    at CrystalDecisions.CrystalReports.Engine.ReportDocument..ctor()
    at GermanSchool.InvoiceReportForm.InvoiceReportForm_Load(Object sender, EventArgs e)
    at System.Windows.Forms.Form.OnLoad(EventArgs e)
    at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
    at System.Windows.Forms.Control.CreateControl()
    at System.Windows.Forms.Control.WmShowWindow(Message& m)
    at System.Windows.Forms.Control.WndProc(Message& m)
    at System.Windows.Forms.Form.WndProc(Message& m)
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    // CrystalDecisions.CrystalReports.Engine.ReportDocument
    private static void CheckForCrystalReportsRuntime()
    {
        string pathList = Registry.LocalMachine + "\" + ReportDocument.CR_REGKEY;
        RegistryPermission registryPermission = new RegistryPermission(RegistryPermissionAccess.Read, pathList);
        registryPermission.Assert();
        RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(ReportDocument.CR_REGKEY);
        if (registryKey == null)
        {
            string @string = CREngineRes.GetString("IDS_ERROR_CR_RUNTIME_NOT_INSTALLED");
            ReportDocument.LogSCRException(@string, 4096);
            if (SystemInformation.UserInteractive)
            {
                MessageBox.Show(@string, CREngineRes.GetString("IDS_EVENTLOG_SOURCE"));
            }
            throw new LoadSaveReportException(@string, EngineExceptionErrorID.LoadingReportFailed);
        }
    }
  • 相关阅读:
    java基础英语---第二天
    树莓派的版本
    Linux系统下安装.deb文件
    在Raspberry上安装ROS
    树莓派文件权限的转换
    树莓派中Linux的相关命令
    raspberry连接ssh和vnc
    链表的建立及释放
    一些小细节问题
    关于构建二维动态内存(堆)及释放
  • 原文地址:https://www.cnblogs.com/zyip/p/3686016.html
Copyright © 2011-2022 走看看