Visual Studio 6.0とかから使っていた人にとっては、「クリスタルレポートって付いてるものでしょ?タダでしょ?」って感覚が結構根強いのですが、実は2010からバンドルが外れているようです。
- Crystal Reports for Visual Studioのサポート(MSDN)
- http://support.microsoft.com/kb/317789/ja
詳しくは後日調べてみますが、旧帳票のフォーマットなどを使って帳票出力などをVisual Studio 2010で行おうとしている人は要注意ですね。
SAPからの無償版「for Visual Studio 2010」
上記のマイクロソフトのURLに、現在のCrystal Reports販売元であるSAP社へのリンクが書かれています(下記)。
- Download SAP Crystal Reports for Visual Studio
- http://www.businessobjects.com/jump/xi/crvs2010/default.asp
これをみると、無償でダウンロードできてVisual Studio上で従来と同じようにレポートデザインができると記載されていますが、開発環境は良いとして、実際に業務でレポートを使う分にはどうなのでしょうか?日本のSAPが製品情報ページで説明しています。
- SAP Crystal Reports 2011 / ライセンス情報
- http://crystalreports.jp/product/reports/reports04.html
これを見るとやはりVisual Studioと組み合わせた利用や、クライアントPCでのローカル利用(ネット越しにサーバーでレポーティングサービスを行ったりしない)であれば、無償のように見えます。どうなんだろう。とりあえずfor Visual Studio 2010をダウンロードして使ってみますか。
for Visual Studio 2010のダウンロード
SAPのダウンロードリンクを開くと、EXE形式のインストーラーとClickOnceを使ったインストーラ、それから、配布用と思われるMergeModuleとランタイムエンジンがダウンロード可能という一覧が出てきます。とりあえず「SAP Crystal Reports, version for Visual Studio 2010 - Standard」をダウンロードしてインストールしてみました。
実際にVisual Studioで使ってみる
- Visual Studio 2010で.NET Framework 4.0を使ったWindows Formアプリケーションを作成し、プロジェクトにCrystal Reportsのレポートファイルを追加します。
- データソースを聞いてくるので、とりあえずちょっとした一覧が入ったエクセルファイルをデータソースに指定します。シートが複数ある場合は、どのシートを使うかも選択します。
- レポートタイプを聞いてくるので、「エグゼクティブ〜」ってのを選びました(見た目だけの問題ですね)。
- Crystal Reportsのデザイナで、ツールボックスに「データベースフィールド」という項目が出ているハズ。その折りたたみを広げると、エクセルのシートの各列が自動的に抽出されてツリー表示されます。そこから、レポートに表示したい列をドラッグして、レポートデザイナの「詳細」ってところに落とします。
- 詳細エリアに四角で描かれた列名が描かれたオブジェクトが登場し、同時に「ページヘッダ」のエリアに対応する列名が入ったオブジェクトが登場します。このあとは、必要な列をドラッグ&ドロップして、レポートデザイナ上で四角の配置や枠線を設定してください(Ctrl+矢印とかでの微調整が効かない。なんか方法あるんだろうか…)。
- 次に、適当なフォームにボタンを貼り付け、ボタンの処理で、上記のレポートファイルを元にしたオブジェクトをNewで生成します。
- 上記オブジェクトの「PrintToPrinter」メソッドに、「部数、False、開始ページ、終了ページ」を指定した呼び出しをかける処理を書きます。
- ビルドします………
はい、ここで行き詰まります。ビルドは通らないし、そのあとソースをいじると、レポートオブジェクトのインテリセンスとかも効かなくなります。なんだこれは……
利用するフレームワークの指定を変える
Googleで検索して、以下のブログに答えが書いてあるのを見つけました。
- [WPF][Crystal Reports] Crystal Reports for Visual Studio 2010が動くまでの3つの壁
- http://d.hatena.ne.jp/trapemiya/20101219/1292734619
ここでは3つの壁と書かれていますが、自分の環境では1つめの壁だけでとりあえず印刷までこぎ着けました。やったことは、プロジェクトのプロパティから[コンパイル]-[詳細コンパイルオプション]で、「対象のフレームワーク(すべての構成)」の指定を「.NET Framework 4」に変更しただけです。変更後はソースを一度閉じてプロジェクトを開き直す必要があります。
この「.NET Framework 4」と、初期設定で選ばれていた「.NET Framework 4 Client Profile」ですが、何が違うのでしょうか?どうやら、Web周りのライブラリを外した、フルセットの.NET Framework 4に対するサブセットのようです。参考情報は下記の通り。
- .NET Framework 4 Client Profile に含まれていない機能/.NET Framework Client Profile
- http://msdn.microsoft.com/ja-jp/library/cc656912.aspx#features_not_included_in_the_net_framework_client_profile
- .NET Framework Client Profile には System.Web が含まれない/Moonmile Solutions Blog
- http://www.moonmile.net/blog/archives/1149
配布時などに不要なライブラリを外して軽量化するってやつでしょうか…どっかで、たしかTechEdだったかで聞いた覚えがあります。まぁ、フルセットにすれば動くということですね。
で、ライセンスの件はどうなのよ
気になるライセンスですが、どういう仕組みかわかりませんが以下の開発者ブログによると
- 会社内部利用および外部利用はクライアントアプリケーションであれば無料。
- 内部利用限定であれば、サーバーアプリケーションの利用も無料。
とのこと。
- Crystal Reports for Visual Studio 2010 Production Release Now Available
- http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/22083
- Crystal Reports for Visual Studio 2010 Licensing
- http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/18826
利用するのが、個別の端末におけるプログラムという形式を取るのであれば、「自社でアプリを開発して顧客のPC上で動かしてもらう」も無料で配布できそうですね。気になるのが、「システム上の役割としてサーバーとされるコンピュータ上で、定期的な自動処理で帳票を印刷/ファイル出力する」といった場合。どうも、上記2番目のライセンシングの記述に「ランタイムに2人以上のユーザーがアクセスできる」というのがサーバー利用の条件なようで…。サーバー上のアカウントが自分で勝手に動いて、細々と帳票を決まった形式で出す、といったものであれば大丈夫そう。要するに、資源配布やリソースの問題で、サーバー上に置かれた帳票生成サービスをWebブラウザやクライアントアプリが呼び出す、といった場合でなければOK?ということかな。