• WPF SAP水晶报表例子和打包Setup


    <Window
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:Viewer="clr-namespace:SAPBusinessObjects.WPF.Viewer;assembly=SAPBusinessObjects.WPF.Viewer" x:Class="TestCrystalReport.MainWindow"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
    
            <Viewer:CrystalReportsViewer x:Name="crystalReportsViewer" Margin="10"/>
    
        </Grid>
    </Window>
    
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    using System.Data;
    
    using CrystalDecisions.CrystalReports.Engine;
    
    
    namespace TestCrystalReport
    {
    
        //Crystal Report for Visaul Studio SDK download from http://downloads.businessobjects.com/akdlm/cr4vs2010/CRforVS_13_0_5.exe
        //Runtime: CRRuntime_32bit_13_0_5
        //http://downloads.businessobjects.com/akdlm/crnetruntime/clickonce/CRRuntime_64bit_13_0_5.msi
        //http://downloads.businessobjects.com/akdlm/crnetruntime/clickonce/CRRuntime_32bit_13_0_5.msi
        //when vs2010 build setup, this 2 runtime msi file need exists at C:Program Files (x86)Microsoft SDKsWindowsv7.0ABootstrapperPackagesCrystal Reports for .NET Framework 4.0
        //****importent if the app build with x86 then just need CRRuntime_32bit_13_0_5.msi*******
        //and for vs2010 build setup can copy CRRuntime_32bit_13_0_5.msi and rename to CRRuntime_64bit_13_0_5.msi
        //****************************************************************************************************************************************************
        //can use vs2010 to build the setup package, va2012 just has InstallShield2015LimitedEdition and no microsoft setup.
        //build setup with InstallShield refer:https://blog.csdn.net/caiandyong/article/details/50586648
        //build setup use vs2010 refer article : https://blog.csdn.net/zhang_yling/article/details/88982585
        //note : for this App.config need add below section if app use .NETFramework 4.5:
       // <startup useLegacyV2RuntimeActivationPolicy="true"> 
       //     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
       // </startup>
    
    
    
    
        /// <summary>
        /// Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
                Loaded += MainWindow_Loaded;
            }
    
    
    
            string rptDBFile = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Reports\mm8report.mdb");
    
          
            void MainWindow_Loaded(object sender, RoutedEventArgs e)
            {
    
                   string rptTempFile = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Reports\mm8heatsheet3col.rpt");
                   showReport(rptTempFile);
    
    
    
                //crystalReportsViewer.
                //  CrystalReport
                //CrystalDecisions.CrystalReports.ViewerObjectModel.
    
                //  MyCrystalReport1 rpt = new MyCrystalReport1();
                //  rpt.SetDataSource(new PersonDAL().ListAll());
                // crystalReportsViewer1.ViewerCore.ReportSource = rpt; 
    
                //   CrystalDecisions.CrystalReports.Engine.Database
    
    
    
    
                // MessageBox.Show(""+doc.HasSavedData);
                /*-------------test set datasource-----------------------------------------------------------------------
                DataTable tb=new DataTable() ;
                tb.Columns.Add(new DataColumn ("id",DbType.Int32.GetType()));
                tb.Columns.Add(new DataColumn("name",DbType.String.GetType() ));
                 DataRow r = tb.NewRow();
                 r[0] = 1;
                r[0] = "1333333333";
                 tb.Rows.Add(r);
                tb.BeginLoadData();     
                doc.SetDataSource(tb);
                  ----------------------------------------------------------------------------------------------------------- */
    
    
    
                /*-----------------------------test----------------------------------------------------------------------------
                for (int i = 0; i < doc.Database.Tables.Count; i++)
                {
                    //doc.Database.Tables[i].Location = aliasName;
                    //MessageBox.Show(doc.Database.Tables[i].Location);
                    //doc.Database.Tables[i].SetDataSource(tb);
                }
                --------------------------------------------------------------------------------------------------------------*/
                //   MessageBox.Show(doc.DataSourceConnections[0].DatabaseName);
    
    
    
           
    
    
                /*tes
                using (AdventureWorksEntities db = new AdventureWorksEntities())
                {
                    report.SetDataSource(from c in db.Contacts
                                         select new
                                         {
                                             c.FirstName,
                                             c.LastName,
                                             c.EmailAddress,
                                             c.Phone
                                         });
                }
    
                crystalReportsViewer1.ViewerCore.ReportSource = report;
                 * 
                 * 
                 ' print dailog
                  PrintPreview pp = new PrintPreview();
                  pp.ShowDialog();
    
                */
    
    
            }
    
            void showReport(string rptTempFile) {
                try
                {
                    ReportDocument doc = new ReportDocument();
                    doc.Load(rptTempFile);
                    doc.DataSourceConnections[0].SetConnection(rptDBFile, "", "", "");
                    crystalReportsViewer.ViewerCore.ReportSource = doc;
                    crystalReportsViewer.ShowToggleSidePanelButton = false;
    
                }
                catch(Exception ex) {
    
                    MessageBox.Show( ex.Message );
                
                }
    
            
            }
    
    
    
    
    
    
        }
    }
    

      

    以上是调用水晶报表的例子

    下面是关于打包的问题,在身边注释里有写。

    重要的一点是就是下载2个水晶报表的运行时 Runtime: CRRuntime_32bit_13_0_5,这个运行时如同.net framework的性质。

    下载地址:http://downloads.businessobjects.com/akdlm/crnetruntime/clickonce/CRRuntime_64bit_13_0_5.msi

                     http://downloads.businessobjects.com/akdlm/crnetruntime/clickonce/CRRuntime_32bit_13_0_5.msi

    版本号要和水晶报表开发包SDK的一致(Crystal Report for Visaul Studio SDK download from http://downloads.businessobjects.com/akdlm/cr4vs2010/CRforVS_13_0_5.exe);

    参考: https://blog.csdn.net/zhang_yling/article/details/88982585

     VS2017 VS2019 SETUP 参考:https://www.cnblogs.com/lxhbky/p/10695527.html

  • 相关阅读:
    Font Awesome 中文网
    mobileselect学习
    JavaScript模块化
    webpack基本使用
    MVVM架构方式
    http-server开启测试服务器
    json-server模拟服务器API
    vue-router
    git的使用
    Vue生命周期
  • 原文地址:https://www.cnblogs.com/wgscd/p/11326637.html
Copyright © 2020-2023  润新知