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);
        }
    }
  • 相关阅读:
    wxWidgets中wxDateTime与wxString的互操作
    wxWidgets文件操作(六)
    wxWidgets文件操作(三)wxFileDialog与wxTextCtrl
    终于完成词频统计小程序~
    我的第一个c#工程~
    Word frequency program的进展
    List Find和BinarySearch性能比较
    堆和栈
    Java工程师初学Android(四)(转)
    Java中static、this、super、final用法(转http://chytmaths.blog.163.com/blog/static/29482972200610125744333/)
  • 原文地址:https://www.cnblogs.com/zyip/p/3686016.html
Copyright © 2011-2022 走看看