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

我们两清 提交于 2019-11-26 16:36:39
<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 SDKs\Windows\v7.0A\Bootstrapper\Packages\Crystal 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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!