Friday, November 12, 2010

build and depoly referenced library in special path rather than application path for .Net application

 
如何将依赖的.Net library放在一个专门的目录?

一般情况下, .Net程序的library需要部署在GAC或者exe的目录下, GAC部署不是一种xcopy方式, 我几乎不用, 多数是直接将lib放在应用程序的目录下.

有没有办法将这些lib放到一个特定的目录呢? 其实.Net有多种机制, 可以实现这样的要求. 下面介绍一种最实用而且是最常用的lib部署机制, 在应用程序exe的config文件中, 增加privatePath设置, 告诉应用程序在哪些目录下查找依赖的lib. 对于web应用, 设置privatePath应该在web.config中.

让我们看看下面2个场景, 该如何编译和部署程序.
 场景1, 我们有app1.exe, 它引用了core1.dll, 在core1.dll中引用了oracle.dll和mysql.dll, 我想把oracle.dll和mysql.dll分别部署在 db_provider/oracle和db_provider/mysql中. 而core1.dll和app1.exe仍然在同一个目录下.
 场景2, 我们有app2.exe, 它直接引用了引用了oracle.dll和mysql.dll. 我想把oracle.dll和mysql.dll分别部署在 db_provider/oracle和db_provider/mysql中.

其实, 这2个场景的处理方式完全一样.

如何编译?
1. 在app1.exe(场景1)和app2.exe(场景2)的项目中增加app.config文件, 在其中增加下面的privatePath.见本文最后部分的代码
2. 和正常项目完全一样, 直接在app1和app2项目中引用所依赖的lib
3. 用VS编译app1和app2项目

如何部署?
VS编译输出的lib都放在了app1.exe和app2.exe目录下了, 你需要手动创建目录db_provider/oracle和db_provider/mysql, 并将oracle.dll和mysql.dll移过去. 当然, 最好是将这个步骤做成bat文件, 甚至将bat放在VS的build事件中, 这样在每次build后, 都自动完成文件整理工作.


下面是应用程序的app.config的内容:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <runtime>
   <assemblyBinding
      xmlns="urn:schemas-microsoft-com:asm.v1">
     <probing privatePath="db_provider/oracle;db_provider/mysql"/>
   </assemblyBinding>
 </runtime>
</configuration>
 


Saturday, October 23, 2010

how author help document for .Net API


simple-talk.com上看到很有价值的一个文章, 在用vs2005/2008编写C#类以及api时候, 我们通常会写一些代码注释, 但如何将这些代码中的注释转换为chm等帮助文档, 一直不太清楚, 下面这篇文章将的很透彻, 需要好好拜读.  作者为Michael Sorens, 他同时也有2个很优秀的开源项目, open-source web sites (cleancode.sourceforge.net andSqlDiffFramework.codeplex.com),  

cleancode包含很多的C#组件, 比如ChameleonRichTextBox语法高亮编辑框, ExtendedDataGridView强大的gridview, SqlEditor很棒的sql 编辑器. 

SQlDiffFramework, 可能对我现在开发的软件, 借鉴意义更大, 不论是代码, 还是feature, 都值得好好学习. 



Taming Sandcastle: A .NET Programmer's Guide to Documenting Your Code


Saturday, October 9, 2010

Monday, September 20, 2010

Dotnet micro framework on smart device

比.Net CF更小巧的.Net Micro Framework

.Net Micro Framework是什么?
.Net Micro Framework是微软专门针对超轻量级平台设计的软件架构。与.Net Framework和.Net Compact
Framework不同的地方是,.Net Micro
Framework具有自启动的特性,并且在HAL层,微软将操作系统的必要特性引入,如:启动管理、中断处理、线程调度、内存管理等。.Net
Micro Framework可以单独使用,不需要依托其它操作系统,因此占用空间很小。
.NET Micro Framework对存储器和处理器的要求更低。开发人员可以在低功耗、低成本的ARM7、ARM9、Blackfin和Cortex-M3处理器上使用该框架(不需要MMU支持),所开发出来的软件仅需要几百Kbytes的RAM或Flash/ROM存储空间。而Windows
Embedded CE的托管代码环境需要约10~12Mbytes的存储空间,基于.NET的应用编程设备只需要较少的存储空间,降低了产品成本。

博客.Net Micro Framework 快速入门
http://blog.csdn.net/yefanqiu/archive/2010/03/02/5340560.aspx

博主的公司, 叶帆科技|卓越.品质.专业 -
www.sky-walker.com.cn

讨论组: 专注.NET Micro Framework开发
http://space.cnblogs.com/group/MFSoft/

--
This message was sent via writer.bighugelabs.com.
Please report spam or any violations of the terms of use including
copyright and other violations to support@bighugelabs.com.

Saturday, September 4, 2010

Niubi Chinese blog list(牛逼博客)

http://thisislaoxu.blog.163.com/blog/static/1395665192010426369182/

牛逼博客分类推荐

默认分类 2010-05-26 15:06:09 阅读37 评论0  字号: 订阅


扯蛋类博客:王小峰    和菜头    韩寒    东东枪  马日拉
科普类博客:土摩托    科学松鼠会
摄影类博客:吴玮    Quang-Tuan Luong  Ken Rockwell
影评类博客:红袖添饭   卓别灵
情感类博客:庄雅婷    连岳
文青类博客:宋石男    罗永浩    柴静
思想类博客:刘瑜    崔卫平    孙国栋
乐评类博客:马世芳  张铁志
美食类博客:陈晓卿
图片类博客:张发财  李小乖
书评类博客:老六    比目鱼    黄集伟  贝小戎
科技类博客:尚进    瘾科技 
英语类博客:志萍的三分田

Reading webpage with firefox like reading a book



 Link to this post:
 http://www.google.com/buzz/116404915915866827701/TwCyJwcsj5S/Safari%E5%BC%80%E5%88%9B%E4%BA%86%E7%BD%91%E9%A1%B5%E6%B5%8F%E8%A7%88%E7%9A%84%E4%B8%80%E4%B8%AA%E6%96%B0%E6%A8%A1

Sep 3 Wade Liu: Safari开创了网页浏览的一个新模式, 像读书一样浏览网页, 非常适合blog和文章阅读.
Firefox和chrome也可以使用iReader extension来实现这种模式, 切换到reader模式也很简单, 在地址栏右边点击图标R就可以了.
Sep 3 Wade Liu: Firefox还有一个Readability的扩展, 不过不如iReader酷.

Wednesday, August 4, 2010

FastReport.Net Report designer help document

FastReport.Net的帮助文档

之前下载了<<Programmer's manual>>, 该文档中, 只有一些和.net程序如何集成以及部署的帮助信息, 没有什么太多设计报表信息, 以为.Net版是他们的新产品, 文档不全, 今天看到了<<User's Manual>>, 发现是我没有找对文档. 在该manual中, 有很多有价值的报表设计信息, 比如在报表中如何过滤数据, 如何计算total.

on-line user manual,
http://fast-report.com/documentation/UserManFrNET-en/index.html

在报表中进行数据过滤的例子,
http://fast-report.com/documentation/UserManFrNET-en/scriptexampledatafilter.htm

在报表中, 进行统计的例子
http://fast-report.com/documentation/UserManFrNET-en/scriptexamplecalctotals.htm


Sunday, August 1, 2010

Re: Write inno-setup script without hardcoded software version and edition and path



On Wed, Jul 21, 2010 at 6:43 AM, Liu <liuzhongwu2008@gmail.com> wrote:
Inno-setup是我一直以来使用的installer制作工具, 很灵活, 可以在setup 的脚本中使用pascal语言, 这样, 几乎可以做任何事情, 比如读写注册表, 读写外部文件.
用inno-setup最不爽的地方, 每次制作installer时候, 不得不先修改软件的版本号, 如果你的软件分试用版和专业版, 你不得不维护2个script脚本. 

幸好发现有个Inno-setup preprocessor工具, 可以极大地提升inno setup的功能, 主页为http://ispp.sourceforge.net/, 下载地址为:http://www.jrsoftware.org/isdl.php#qsp , 该工具为innosetup增加了#define, 另外, 该工具提供的命令行编译器ISCC.exe, 比原版的ISCC.exe功能更强大, 可以动态传入#define标示等.  请注意下面实例代码中, 并没有使用绝对路径, 所有的路径都是相对于script脚本所在目录的.

; Script file: InstallScriptProfTrial.iss
; This script need to use a special Inno Setup version located here : http://jrsoftware.org/isdl.php#qsp

#pragma option -v+
#pragma verboselevel 9
#define Debug
 
#if RELEASE=="Professional"
  #define SOFTWARE_NAME "MyProg Professional Edition"
  #define OUTPUT_FILE_NAME "MyProg_Prof"
#else
  #define SOFTWARE_NAME "MyProg Professional Trial Edition"
  #define OUTPUT_FILE_NAME "MyProg_Trial"
# endif

#define SOFTWARE_PUBLISHER_SHORT_NAME "MyProg"
#define SOFTWARE_COPYRIGHTS "2010 MyProg Technology"
#define SOFTWARE_PUBLISHER "MyProg Technology"
#define SOFTWARE_PRODUCT_PAGE "http://www.MyProg.com/"
#define SOFTWARE_DOWNLOAD_PAGE "http://www.MyProg.com/download.html"
#define SOFTWARE_SUPPORT_PAGE "mailto:MyProgSupport@gmail.com"
#define SOFTWARE_SUPPORT_MAIL "MyProgSupport@gmail.com"
#define SOFTWARE_VERSION GetFileVersion("..\dist\MyProg.exe")
 

[Setup]
SourceDir=..\dist
OutputDir=..\installer

; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{D7DEDD5E-321A-4215-B843-90E946735F64}

AppVerName={#SOFTWARE_NAME} {#SOFTWARE_VERSION}
AppVersion={#SOFTWARE_VERSION}
VersionInfoVersion={#SOFTWARE_VERSION}
VersionInfoTextVersion={#SOFTWARE_VERSION}
VersionInfoCompany={#SOFTWARE_PUBLISHER}
VersionInfoDescription=Write some comments for this software
VersionInfoCopyright={#SOFTWARE_COPYRIGHTS}

AppName={#SOFTWARE_NAME}
AppCopyright={#SOFTWARE_COPYRIGHTS}
AppPublisher={#SOFTWARE_PUBLISHER}
AppPublisherURL={#SOFTWARE_PRODUCT_PAGE}
AppSupportURL={#SOFTWARE_SUPPORT_PAGE}
AppUpdatesURL={#SOFTWARE_DOWNLOAD_PAGE}
AppComments=Thanks using {#SOFTWARE_NAME}
AppContact={#SOFTWARE_SUPPORT_MAIL}

DefaultDirName={pf}\{#SOFTWARE_PUBLISHER_SHORT_NAME}\{#SOFTWARE_NAME}\{#SOFTWARE_VERSION}
DefaultGroupName={#SOFTWARE_NAME}\{#SOFTWARE_VERSION}
OutputBaseFilename={#OUTPUT_FILE_NAME}

LicenseFile=EULA\MyProg_EULA.rtf
;InfoBeforeFile=help\FeatureList.rtf
;InfoAfterFile=help\EditionComparison.rtf

AllowNoIcons=yes
Compression=lzma2/ultra
InternalCompressLevel=ultra
SolidCompression=yes
 
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "*" ;  DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "ComUtilities.dll"; DestDir: "{app}"; Flags: regserver
 
 
[Icons]
Name: "{group}\MyProg"; Filename: "{app}\MyProg.exe"
Name: "{group}\Visit Web Site"; Filename: "{app}\help\website.url"

Name: "{userdesktop}\MyProg"; Filename: "{app}\MyProg.exe"; Tasks: desktopicon

[Run]
Filename: "{app}\MyProg.exe"; Description: "{cm:LaunchProgram,MyProg GuiRunner}"; Flags: nowait postinstall skipifsilent




编译试用版的bat文件为MakeInstallerTrial.cmd,  代码如下
set InnoSetupCompilerPath=..\..\tools\InnoSetup5\ISCC.exe
echo -
echo =========================================
echo #6. make installer file ...
echo =========================================
echo
%InnoSetupCompilerPath% InstallScriptProfTrial.iss "/dRELEASE=Trial"
echo installer created

编译正式版的batch文件为MakeInstallerProf.cmd, 代码如下
set InnoSetupCompilerPath=..\..\tools\InnoSetup5\ISCC.exe
echo -
echo =========================================
echo #6. make installer file ...
echo =========================================
echo  
%InnoSetupCompilerPath% InstallScriptProfTrial.iss  "/dRELEASE=Professional"
echo installer created


 

Tuesday, July 13, 2010

the web browser (vforchrome) that can bypass G-F-W

一个简单易用,便于翻墙的基于chromium的浏览器。
http://code.google.com/p/vforchrome/

vforchrome 使用了chrome浏览器和vfortunnel.exe(其实就是plink.exe)隧道工具

vfortunnel.exe 表面上看是一个plink,其实它的真实身份……还是plink。只不过增加了一些功能。


  • 第一种用法:可以当作plink.exe使用。在命令行中不带参数运行vfortunnel.exe的时候,就可以看到plink的帮助 信息。
  • 第二种用法:只带一个参数运行时,vfortunnel.exe会认为这个参数是一个路径,它会把自己的工作路径设置到这里, 然后,如果你配置了自己的vfortunnel.xml,就按照vfortunnel.xml中的信息启动SSH隧道,否则就下载 ssh_metainfo.xml,根据ssh_metainfo.xml提供的信息获取网上公开的SSH信息,最后启动隧道。也就是 说,vfortunnel.exe完全可以单独运行,如果你想用firefox而不是chrome,只要配置firefox使用 vforchrome.pac这个自动代理脚本,或者直接指定使用SOCKS 127.0.0.0:9052好了。
  • 第三种用 法:vfortunnel.exe --test ssh_metainfo.xml ,用来测试配置文件ssh_metainfo.xml写的是否正确,写这个配置文件需要对XML和正则表达式有些了解,所以程序正常运行时只从网络下载这 个配置文件而不会处理用户自己写的。希望有高级用户愿意帮助添加和维护这个列表 :)

how to install ubuntu OS combined with Windows


图解Linux下如何搭建C#开发环境
http://news.cnblogs.com/n/68188/

这篇文章中介绍了6中安装Ubuntu的方法, 值得阅读.

Monday, July 12, 2010

set up git server on windows


一天之内, 看到3篇和.Net开发相关的Git文章, 看来git的时代到了.

孙以义开发的用于VS2008/

2010的Git源代码控制提供器
http://news.cnblogs.com/n/66583/


How To Set Up A Git Server On Windows Using Cygwin And Gitolite
http://therightstuff.de/2010/03/28/How-To-Set-Up-A-Git-Server-On-Windows-Using-Cygwin-And-Gitolite.aspx


TortoiseGit + msysgit + CopSSH + WindowsXP as server
http://code.google.com/p/tortoisegit/wiki/HOWTO_CentralServerWindowsXP

Saturday, June 12, 2010

SVN resource update

SVN补充

[原创] Windows下架设Subversion服务器 - 印第安的日志 - 网易博客
http://indian.blog.163.com/blog/static/10881582007112415021751/

VisualSVN Server的Standard版本(免费), 支持Basic Windows认证(With Basic authentication user's credentials are transmitted to the server in plain text ),

VisualSVN Server的Enterprise版本(收费)

更支持Windows NTLM or Kerberos V5认证, 具有更高级别的安全性.

免费的svn服务器, 开源项目,可以放在sf.net或google code上, closed source项目, 本来有很好的www.csie.org可以使用, 现在也停止服务了, 下面两个网站也提供免费的服务, 不知道服务质量如何? (哈哈, 免费用也对)
http://www.xp-dev.com/
https://www.projectlocker.com/signup/startup

Saturday, May 8, 2010

Postgresql dev tool

Oracle 开发, 一直在用PL/SQL developer , 非常顺手,  现在想搞搞Postgresql,   如果单看sql 编程,  Postgresql安装包带的pgAdm III功能太弱, 没有code completion功能,  所以 一直想找一个类似PL/SQL developer的工具,  终于找到2个free tool, 尤其EMS的产品, 非常棒.

EMS SQL Manager for PostgreSQL Freeware
http://www.sqlmanager.net/en/about/contact


DreamCoder for PostgreSQL Freeware (相比EMS的产品, 差得比较远, 不过也带有code completion功能, 将就着能用)
http://www.sqldeveloper.net/database-tools/postgresql/overview.html

Sunday, May 2, 2010

utilize the existed product/project to create your own .Net application cross common databases

dblinq2007是一个Linq provider, 支持很多数据库, 可以参考它的example数据库脚本和源码
http://code.google.com/p/dblinq2007/


Toad® for Data Analysts是一个支持很多种类数据库的.Net程序, 可以参考一下它的各类数据库的dll文件.  http://www.quest.com/toad-for-data-analysts/









Thursday, April 29, 2010

sqlite database size limits

SQLite 应该是算是一个in-process 数据库, 这点不同于server/client database.  正因为如此,  你在Windows上不能使用大于2GB的sqlite数据库,  这是个缺点, 不过, 即使有这个限制, 也已经满足绝大多数应用了.

在下面的文章中, Ivan列出了sqlite的优点和缺点, 并指出了数据库文件大小的限制.
http://www.ivankristianto.com/software-development/visual-studio-net/howto-use-sqlite-ado-net-with-c/943/

Hi Ivan, you mentiona 2Gb limit on the database size, they say 2Tb on the website, are you referring to Windows desktops? I've used Dbs up to 12Gb on Linux without a problem but on my Windows desktop 2Gb appears to be the max.

Hi Murlogue,
yes, i mean on windows machine, because i'm using ADO.NET on windows machine.

Saturday, April 10, 2010

Rapid prototyping softwares and services

 

Rapid Prototype software.
***  http://www.evolus.vn/Pencil/Home.html   ,firefox add-on
* http://gomockingbird.com/mockingbird/   ,web based


下面列出了几个,
http://c2.com/cgi/wiki?GuiPrototypingTools 能找到更多软件和服务

1. napkinlaf.sourceforge.net  , based on java , freeware
2. http://www.balsamiq.com/products/mockups , $79
3. http://wireframesketcher.com/   $75, host in Eclipse IDE
4. SketchFlow, Microsoft Expression Blend 的一个插件(在EB3中是绑定安装的)
5. Vision with  sketch stencil (http://www.nickfinck.com/stencils.html , http://petervandijck.com/iabook/template.htm)
6. Flash Catalyst (Adobe)



--
This message was sent via writer.bighugelabs.com.
Please report spam or any violations of the terms of use including
copyright and other violations to support@bighugelabs.com.


Sunday, April 4, 2010

The most 5 popular open source licenses introduction


开源界的5 大开源许可协议, 中文说明文章,
http://opensource.solidot.org/opensource/10/03/31/0123205.shtml

--
This message was sent via writer.bighugelabs.com.
Please report spam or any violations of the terms of use including
copyright and other violations to support@bighugelabs.com.


Thursday, March 4, 2010

how to install subversion as windows service

Subversion项目已经成为Apache的顶级项目, 看来前途更好了.

在windows下安装SubVersion服务器也非常简单, installer会自动为我们创建一个windows
service,指向一个repository. 但有时候, 我们一个repository不够用, 我们需要多个, 这时候,
可能会用到下面几个命令

情况1(Subversion安装目录不含空格)
sc create svnserve11 displayname= "Subversion Server11" binpath=
"d:\SubversionServer\svnserve.exe --service --listen-port 6666 -r
D:\doc\reps11" depend= Tcpip start= auto
访问该repository的方法是:
svn://localhost:6666

情况2(Subversion安装目录包含空格)
sc create svnserve33 displayname= "Subversion Server33" binpath=
"\"d:\Program Files\CollabNet\Subversion Server\svnserve.exe\"
--service --listen-port 6667 -r D:\doc\reps33" depend= Tcpip start=
auto
访问该repository的方法是:
svn://localhost:6667

下面这个文章包含更多的信息,
http://subversion.open.collab.net/articles/svnserve-service.htm


--
This message was sent via writer.bighugelabs.com.
Please report spam or any violations of the terms of use including
copyright and other violations to support@bighugelabs.com.

Thursday, February 11, 2010

Xml Browser open source project

多数的Xml Viewer采用了IE作为Xml浏览器. 因为现在流行的IE版本还很杂, 同时采用多Com技术, 稳定性不是太好.

这里的一个open source project 并没有使用IE, 值得研究. 
http://xmlexplorer.codeplex.com/

special version operamin si still able to bypass G-F-W

这里的OperaMini还能翻+墙, 难得啊, 感谢啊

http://code.google.com/p/opera-mini-on-desktop/downloads/list

Monday, February 8, 2010

truecrypt mount and dismount sample batch file

rem 下面是mount.bat的内容, 使用该命令行将自动mount文件D:\vol\test为x盘
echo off
truecrypt /a /v D:\vol\test /lx /q
rem 下面是dismount.bat内容, 使用该batch文件, jia
echo off
truecrypt /a /d /lx /q

Saturday, January 23, 2010

www.cisait.com , Good articles on DWBI

发现了一家北京钢冶联信息科技有限公司, 网站上都是DWBI的好文章, 收藏之,

http://www.cisait.com/

develop SSIS SSH/SFTP/SCP task

最近我在维护公司的DWH,  DWH数据库用的Oracle, 服务器用的是Linux, ETL用的是DataStage 7.5.3,  DataStage的Job Sequence功能实在不怎么样(和SSIS的control flow实在没法比). 公司也仅仅是是使用了DataStage的Parallel Job来进行数据的ETL, 根本就没有一个Sequence类型Job. 流程控制不得不用Linux Shell来控制. 但Shell 毕竟不像一般的编程语言,  一来不直观, 而来维护成本也高.

因此我有个想法, 开发一套SSIS  Task, 包括SSH, SFTP/SCP, SSH Connection.  如果有了这些Task组件, 那么SSIS Package就能实现了Linux/Unix命令发送/文件获取, 解决了大部分的跨OS交互问题. 也许有点市场, 能挣点小钱.

下面是收集的一些SSIS Sample, 另外意外地发现, 已经有厂家提供类似的组件.

Hello World Task Sample
http://www.codeplex.com/SQLSrvIntegrationSrv/Release/ProjectReleases.aspx?ReleaseId=17648

Enhanced SSIS Execute Package Task

http://ssisexec.codeplex.com/sourcecontrol/changeset/view/46583?projectName=SSISExec

Excel2 Connection Manager
http://ssisctc.codeplex.com/wikipage?title=Excel2%20Connection%20Manager&referringTitle=Home

SQL Server Integration Services Product Samples
http://www.codeplex.com/MSFTISProdSamples

SSIS Community Tasks and Components
http://ssisctc.codeplex.com/

两个提供类似产品的商业厂家
http://www.cozyroc.com/products
http://www.cozyroc.com/ssis/ssh-connection
http://www.cozyroc.com/ssis/ftps-connection
http://www.cozyroc.com/ssis/ssh-execute-task
http://www.cozyroc.com/ssis/scp-task
http://www.cozyroc.com/purchase

http://www.nsoftware.com/ssis/
http://www.nsoftware.com/order/options.aspx?part=EAS3-A

Saturday, January 16, 2010

craagle (crack google)

Craagle

这东西是干啥的? 搜索序列号或者软件破解工具的。我不是鼓励你用盗版,但如果是学习或者研究的目的.....要问哪里可下载,Google 一下就知道。

FairUse4WM

下载了视频文件发现需要 DRM ? FairUse4WM 就是用来破解 DRM 问题的。偶而一用,还真的不错。这工具的名字也挺有意思的,Fair -- 认为 DRM 不公平才开发的。

fastcopy
ipmessenger(国内叫飞鸽)作者的另一个作品,利用磁盘cache很出色,复制大文件时速度奇快。

Saturday, January 9, 2010

Tips of FastReport for .Net

在用Delphi开发报表时代, FastReport是我不二的选择. 现在用C#, 一直没有找到合适的报表工具, 微软的RDLC, 我是怎么都不习惯.  最近我下载了FastReport For .Net, 又让我找回了开发报表的快感. 官网上下载的demo版本, 只有唯一的一个限制, 就是最终报表预览会有一个Demo Version的水印,  FR官方够慷慨啊.

一般设计时, 只需在Form上放两个FastReport的组件EnvironmentSettings, Report. 其中EnvironmentSettings可以用来设定FastReport的UI风格/Email设置/Preview设置等等, 我们可以在Report组件中设计报表, 在报表中, 可以添加DataSource和Parameter.  一般的中国式报表, 我们都需要加个Data Band在Page页面上. 需要为Data Band指定一个data Source, 这样Data Band上的TextBox才会在循环取出Data Source中每个记录, 否则DataBand只能显示DataSource的第一条记录.


下面的代码是, 怎样在Form中显示FastReport的预览界面.

        private void ShowRptWithFastReport()
        {
            int categoryID = ((FeeCategory)(comboBoxFeeCategory.SelectedItem)).CategoryID;

            //往report中传递两个参数值
            report1.SetParameterValue("ParamMagicNumber", m_MagicNumber);
            report1.SetParameterValue("ParaFeeCategory", categoryID);

            //动态设置Report中数据源(该数据源名为Connection)的ConnectionString
            var frConn = (MsSqlDataConnection)report1.FindObject("Connection");
            frConn.ConnectionString = Settings.Default.AccSetDbConnectionString;

            ////显示报表预览界面
            report1.Show(true);
        }



我们的软件有正式版和试用版之分, 对于试用版, 我们只允许用户打印前5页. 那么, 该如何控制呢? 用FastReport非常简单. 
步骤1: 设置Report的DoublePass属性为True,  这样FastReport引擎会对报表扫描2次, 第一次取数据, 第二次显示数据.
步骤2: 在Data1(它是个DataBand)上增加下面的事件.

    private void Data1_BeforePrint(object sender, EventArgs e)
    {
      if (Engine.FinalPass)
      {
        if (Engine.CurPage>=Convert.ToInt32(Report.GetParameterValue("ParamMagicNumber")) )
        {
          if (Engine.CurPage<=Engine.TotalPages-1)
            MessageBox.Show("本报表总页数为"+Engine.TotalPages.ToString()+", 但此试用版的软件不允许打印全部的页数! ") ;

          Report.Abort();
        }
      }
    }