• Crystal Report水晶报表碰到的一些纠结问题


    1.插入PNG文件时,透明的背景会变成黑色.试了矢量图WMF文件,是可以正常显示的,不过毕竟得到矢量图比较困难.
      后来找到个方法,就是把JPG图片放在子报表里,调整子报表在父报表的位置并且保持JPG背景颜色与父报表背景颜色一致,图片下面的文字就不会被图片背景盖住了.


    2.中文乱码
      这是因为文本框字符的问题,调整字符应该就可以了.不过有些字符在里面没得选,而且字体最小才是8,不知有没有方法可以扩展多些选择.

    3.当把英文和中文放在同一个text object的时,文本框里文本的字符类型会自动变成system,不能指定特定字符.
      可以通过填充field内容,将中英文分别放在不同field,然后拖到文本框来实现.麻烦是麻烦了些,不过这样就可以指定不同field内容的字符了.

    4.最痛苦的一点就是报表里面没有table object,单靠line object 和box object来画表格实在太麻烦.
      后来是设置text object的边框来实现表格的样式.这样的话就遇到了边框宽度的问题,右边和下边text object的位置(left,right,height,width)都要相应增加才不会错位.
      不过当文本框有背景的话,是可以设置某个文本框放在另一个文本框之上的,所以后来只要保证后面文本框永远在前面的文本框上面,表格就会显示正常了.

    5.文本框可以设置文字水平对齐方式,可是没办法设置垂直对齐,当text object的高度变化时候,文字的位置就需要调整.
      如果高度变化了,只能调整字符大些才能保持居中.或者把這個text object放在box object裏面再調位置.

    6.水晶报表没有办法动态生成text object,field object

    7.還有個很不便利的是设置某text object的CanGrow属性为True并且在程序里面动态赋值后,没法得到自动增长后的新高度。
    郁闷,就算我想利用该text object的宽度能放多少个字符来判断多少行,可是在报表中英文,中文,数字所占用的宽度都是不同的阿!不同的阿!

    8.如果先安装VS2012,再裝Crystal Report,会发现报表打开是乱码,需要按下列步驟来重装VS2012才行
    http://social.msdn.microsoft.com/Forums/vstudio/zh-CN/914c5795-cf49-4e51-a20f-6e4e14f6c8d2/vs2012-update-2-0x80040154-corrupt-install-when-starting-the-debugger

    9.VS2012安裝CRforVS_13_0_5.exe進行開發,之後放上別的機器時可以不必安裝這個,而是安裝CRRuntime_32bit_13_0_5.msi,CRRuntime_64bit_13_0_5.msi

    10.下面的dll中,前面4個是一定需要引入的,這可以理解。但後面2個沒有用到也需要放上去,不是很明白爲什麽。

    <system.web>
        <compilation debug="true" targetFramework="4.0">
          <assemblies>
            <add assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
            <add assembly="CrystalDecisions.Shared, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
            <add assembly="CrystalDecisions.ReportSource, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
            <add assembly="CrystalDecisions.CrystalReports.Engine, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
            <add assembly="CrystalDecisions.ReportAppServer.Controllers, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304" />
            <add assembly="CrystalDecisions.ReportAppServer.DataDefModel, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304" />

    ......

    11.得到報表頁數

    ReportDocument rd = new ReportDocument();
    rd.Load(AppDomain.CurrentDomain.BaseDirectory + @"Test.rpt");
    int totalPageCnt = rd.FormatEngine.GetLastPageNumber(new ReportPageRequestContext());

    12.隐藏text object里面的空行
    拖了几个field object 进去一个text object,当某行空值的时候,不想留下个空行在中间,这个选项可以自动隐藏空行

  • 相关阅读:
    我的Git教程 之 初始化本地库
    再学Java 之 Integer 包装类缓存
    再学Java 之 private、protected、public和default的作用域
    再学Java 之 形参个数可变函数
    再学Java 之 foreach循环
    解决MySQL中文乱码问题
    再学Java 之 解决No enclosing instance of type * is accessible
    从一个例子学习 instanceof 和 getclass 的区别
    如何单独启动wamp 中自带的MySQL
    网络游戏程序员须知 UDP vs TCP(转)
  • 原文地址:https://www.cnblogs.com/sui84/p/6777149.html
Copyright © 2020-2023  润新知