<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

WPF SAP水晶报表例子和打包Setup的更多相关文章

  1. Vs2010中水晶报表引用及打包

    原文:Vs2010中水晶报表引用及打包 转自:http://yunhaifeiwu.iteye.com/blog/1172283 Vs2010中水晶报表引用 在sap官网中下载支持vs 2010中的水 ...

  2. VB6 加载水晶报表例子

    VB6 加载水晶报表例子 先按照水晶报表组件 Crystal Reports,Business Objects,现已被SAP收购. 再添加引用 'Library: CRAXDRT 'C:\Progra ...

  3. VS2010与水晶报表V13的打包集成小结

    感谢孟子E章提供的技术咨询. 系统配置: Windows 7 + VS2010 , WinForm + DotNet4 + 水晶报表 这里说的打包集成,指的用VS2010的制作的安装包,在安装的时候可 ...

  4. (转)VS2010结合水晶报表做条码标签打印功能

    本文转载自:http://blog.sina.com.cn/s/blog_552ca1400100y6dd.html 先来个功能效果图: 大家都知道VS2005和VS2008软件本身是包含水晶报表插件 ...

  5. 水晶报表在vs2010 WPF环境下的尝试

    原文:水晶报表在vs2010 WPF环境下的尝试 由于VS2010没有集成水晶报表组件,尝试前必须先安装 水晶报表 for VS2010,若机器未安装的可点击这里>>>下载安装 新建 ...

  6. SAP B1:水晶报表中用Code128制作条型码的方法

    一.在[文件系统]中新建一个[Fonts文件夹],然后添加[Code128.ttf]文件. 二.在水晶报表里的[字段资源管理器]的[公式字段]中新建一个公式字段.点击[使用编辑器]之后弹出[公式工作室 ...

  7. 水晶报表13.x(Crystal Reports for VS2010)的安装部署经验

    这两天搞安装包真心坎坷,一个问题接一个问题,先是为了实现自定义动作现啃vbs,后面又是安装过程老是报错: 各种搜索.各种尝试,总算搞掂,积累了些经验,分享一下. 首先CR for VS2010的所有东 ...

  8. [转]VS2010中水晶报表安装应用及实例

    基本分类如下:第一部分:VS2010简介VS2010是微软的提供的一套完整的开发环境,功能也是相当的大微软宣布了下一代开发工具和平台的正式名称,分别称为“Visual Studio Team Syst ...

  9. (转)VS.NET2010水晶报表安装部署[VS2010]

    本文转载自:http://www.cnblogs.com/xiaofengfeng/p/3325793.html 欢迎C#高手加盟QQ群:9340166 水晶报表VS2010版IDE安装标准版SAP ...

随机推荐

  1. php邮件防注入以及实现经典代码

    <?php function spamcheck($field) {     // filter_var() 过滤 e-mail     // 使用 FILTER_SANITIZE_EMAIL ...

  2. 【Java】 Java反射机制总结

    一.什么是反射 在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及动态调用对象的方法的 ...

  3. C++有静态成员变量的类继承

    声明和定义 1.变量的定义 变量的定义用于为变量分配存储空间,还可以为变量指定初始值.在一个程序中,变量有且仅有一个定义. 2.变量的声明 用于向程序表明变量的类型和名字.程序中变量可以声明多次,但只 ...

  4. apache 部署

    <VirtualHost *:80> ServerAdmin webmaster@dummy-host.localhost DocumentRoot "D:/EmpireServ ...

  5. 012-zabbix主动模式

    6.1 主动模式 zabbix agent检测分为主动(agent active)和被动(agent)两种形式,主动与被动的说法均是相对于agent来讨论的.简单说明一下主动与被动的区别如下: 主动: ...

  6. P5200 [USACO19JAN]Sleepy Cow Sorting 牛客假日团队赛6 D 迷路的牛 (贪心)

    链接:https://ac.nowcoder.com/acm/contest/993/E 来源:牛客网 对牛排序 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言 ...

  7. php关于jquery ajax json不返回数据的问题

    分析原因: 1.php端代码有错导致echo输出错误,导致ajax返回函数不执行 2.jquery版本原因 3.juqery前端script代码问题

  8. java集合源码分析几篇文章

    java集合源码解析https://blog.csdn.net/ns_code/article/category/2362915

  9. C++、java、python的一些区别

    1.变量类型 变量赋值命名不同 Python 中的变量赋值不需要类型声明 counter = 100 # 赋值整型变量 miles = 1000.0 # 浮点型 name = "John&q ...

  10. java实现网页验证码功能_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 本文实例为大家分享了java网页验证码的实现代码,供大家参考,具体内容如下 Servlet: package cn.bd ...