• 締切済み

クリスタルレポートについて素朴な疑問

クリスタルレポートについて素朴な疑問。 クリスタルレポートはぜんぜん触ったことがありません。 クリスタルレポートが必要になるかもしれないので、クリスタルレポートについて調べようと本屋さんで、 書籍をパラパラめくってみました。 クリスタルレポートについての専門的な書籍はありませんでしたが、プログラミングの書籍の中に一部解説がある書籍が数冊あり、簡単な使用例についての図と説明がありました。 簡単な例しか載っていないからだったのかもしれませんが・・。どの書籍でも以下のようなことが書かれていました。 レポートのヘッダー/フッダー ページのヘッダー/フッダー 詳細エリア の位置にVisual Studio上のデザイナで帳票イメージを 作成する。 ラベル等の固定的に文言が出力される部分もあれば、 データベースのある項目に関連づいているものもある。 データベースのある項目に関連づいているものに関して、エクスプローラ型のテーブル名と項目名のツリーから項目を帳票イメージにドラックアンドドロップしていくようなイメージでした。 ・発生した素朴な疑問 DBの内容を帳票に出力する場合、デザイナで 設定するこのやり方だと、あらかじめ帳票の出力イメージにあったテーブルイメージのようなビューを定義しておかないと、できないのでは? クリスタルレポートを使う現場では、このように帳票の出力イメージに即した問い合わせをあらかじめビューとして、定義して、デザイナのエクスプローラにでてくるようにして、使用するのが一般的なのでしょうか? この場合、Whereの絞り条件の式の一部が動的に変化する場合はどうするのでしょうか? 書籍の一部に少しだけある解説を見た程度で 通り一辺倒な簡単な例が載ってるものしかみてないので変な質問になってるかもしれませんが・・。

みんなの回答

  • catmanian
  • ベストアンサー率28% (10/35)
回答No.1

VB5付属の古いバージョンを使っていますが、VIEWよりもワークテーブルに動的に出力して、そのテーブルから全件出力の方が手っ取り早いと思います。また、Basicらしきインタープリタを搭載しているので、細かなコントロールも可能です。 他の方も嘆くように情報はきわめて少ないですが、本よりも、実際にいじってみると一通りのことは分かりますよ。

参考URL:
http://www.hirano.cc/crystalreports/
bean_atkinson
質問者

お礼

貴重な回答ありがとうございます。 さっそく、URLの内容を拝見しました。 >VIEWよりもワークテーブルに動的に出力して、そのテーブルから全件出力の方が手っ取り早いと思います 全件出力だと、あらかじめプログラムで期待通りの データを作れるので、クリスタルレポートのほうで、 WHEREで、行を絞ったり、Group byで集計するようなことはいっさいしない、イメージになりそうですね。 やはり、あらかじめ定義されたDBや、XMLのテーブルスキーマで、デザインするイメージなんですね。 ワークテーブルを使う場合、 ワークテーブルの名前をクリスタルレポートの デザイナで指定するため、どうしても、 毎回帳票を出力する毎に毎回、 クリスタルレポートが覚えているワークテーブルに 前件入れ替えになるような気がします。 それだと、複数ユーザが使った場合に、排他制御などが面倒な気がします。 実行時に、絞り条件を指定できるのでしょうか? たとえば、 WHERE 帳票トランザクションID = '今回のID' みたいなことができれば、特に排他制御の必要なく、 固定のワークテーブル名がいい感じでつかえるのですがそういうことでしょうか? http://www.hirano.cc/crystalreports/show_on_CrystalReports.html このURLを見ると、XMLスキーマの HiraDataSetのスキーマ情報を使って、 クリスタルレポートでデザインを作成して、 プログラムのロジックで編集した、 実際出力したいデータのdsを cr.SetDataSource(ds); このコードにて、動的に関連付けてるようです。 XMLの場合なら、XMLスキーマの名称がどうあれ、 実行時のデータセットオブジェクトはいくらでも 作成可能なので、上記のワークテーブルのような 疑問がうまれないので、たとえ、クリスタルレポートでWHEREやGROUP BYなどの細かい設定ができなくても、 cr.SetDataSource(ds); が使えるかぎり単なるプログラムのロジックの問題になるので、スッキリ理解できそうです。 XMLスキーマで最終アウトプットイメージをデザインして、実行時に、DBなどから取得するロジックで作ったデータセットオブジェクトをはめる この方法がよさそうに見えました。

関連するQ&A

  • クリスタルレポート

    今クリスタルレポートを使っています。 他人の作った帳票のレイアウトとソースがあります。 データベースを選択してやれば、帳票に印刷できるのですが、選択の仕方が 分らず困っております。クリレポのデータベースエクスプローラから選択してやればいいのでしょうか。どなたか詳しい方教えていただけませんでしょうか。 お願い致します。 VBは6.0で、オラクルは8iの8.1.6です。 クリレポは8.5を使用しています。

  • クリスタルレポートでメモリ不足・・・

    初めて質問します。 WINDOWS2000 Pro VB6.0 データベース:ORACLE VBで売上伝票を入力して、クリスタルレポートで伝票発行しようとしています。 用紙はA4縦でレーザープリンターから出力させようとしています。 クリスタルレポートで線も引いています。 1枚に3回同じ内容のものを印刷させようと設定しているのですが(全てページヘッダーに設定しています。)VBから印刷をかけると次のようなエラーが出ます。 “CRWPRINT.CRW STATUS : 500 メモリ不足のため操作を実行できません ” というメッセージです。 データは作成されているので、クリスタルレポートで直接出すと印刷されます。 クリスタルレポート側で半分ほどまで項目を減らしてみたりしたのですが、結果は同じでした・・・ クリスタルレポート側の設定でしょうか? それともVB?はたまたオラクルのせっていなのでしょうか? なにか複雑でもうしわけありませんがよろしくお願いいたします。

  • クリスタルレポートのグループヘッダ

    Visualbasic 2013とクリスタルレポートを利用してアプリケーション開発を行っております。 クリスタルレポートはサブレポートを準備しており、 メインとなるレポートの詳細部にサブレポートを配置しております。 このような構成でレポートを出力した場合、 必ず1ページ目にグループヘッダのみ出力され、それ以降は正常に出力される事象が発生しております。 1ページ目にグループヘッダのみ出力される理由が分からない状況です。 大変お手数お掛けいたしますが分かる方がいらっしゃいましたら ご教授頂けますと幸いです。

  • クリスタルレポート Barcode2of5関数

    以下の開発環境でITFバーコード付きの帳票を出力したいと考えています。 Visualbasic2013 クリスタルレポート クリスタルレポートの関数で「Barcode2of5」を利用したいと考えているのですが、 引数が分らず利用方法が分らない状況です。 お手数ですが、利用方法が分る方がいらっしゃいましたらご教授頂けますと幸いです。

  • ★クリスタルレポートの元になるテーブルを途中で変えたい時、どうすれば??

    クリスタルレポートを作る時、 元になるデータベースを選んでテーブルを選んで、 必要な項目を画面に貼り付けていくわけですけど、 たくさん画面に式なり項目なりを貼り付けたあとで、 テーブル1 から 全く同じ構造のテーブルである テーブル2に 出力元を変えたいとします。 私は今まで、「データベース」→「データベースからレポートを追加」 でテーブル2を追加し、そのあとで、「データベース」→ 「レポートから ファイルを削除」でテーブル1を選んで消していました。 すると、項目をそのまま貼り付けてあったものはすべて消えてしまいますが、 式を作ってその中に、[テーブル1.項目1]と書いてあった場合は そのままで残っています。 その状態で例えば、プレビューボタンを押すとすると、 当然もうテーブル1はないので、エラーとなります。 その式の中のテーブル1をすべて手動でテーブル2に変えるという作業を していました。 バージョンは問いません。使っているのは、7と8です。 何か一度に変える方法はないのでしょうか? 式の中のものをすべて置き換える方法などないでしょうか? 他の方法でもいいのでどなたか至急教えて下さい。 項目がたくさんある時とても大変です・・・

  • クリスタルレポートのテキスト同士の計算

    VB6を使用してます。 ただ、クリスタルレポートに関しては、まったく使ったことがないのですが、このたび他人が作成した物の改造をしなくてはならなくなりました。 無知ですので、用語など表現がうまくできないと思いますが、以下の手段をご存知の方、ご教授ください。 クリスタルレポートを使用して、MS-SQLServerのデータをプリントアウトしています。 しかし、ここで「列A」と「列B」の和をもう一つの項目として追加する必要がでてきました。 ただし、データベースは手元にないため変更ができません。 列A・Bは、Section1なる「くくり」にされ、データの数だけ表示され、それぞれの行(?)に項目Cを作りAとBの和を表示せねばなりません。 その方法をご存知のかた、ご教授願えませんでしょうか? (クリスタルレポート等の知識がないため、質問内容をうまくまとめることができていないと思いますが、よろしくお願いいたします)

  • クリスタルレポートでレコード数に関係なく空行を出力するには?

    はじめまして 仕事でクリスタルレポート使うことになったのですが、 初心者のためわからないことが多々あり教えていただきたいのです。 レコード数に関係なく空行を出力したいのですが どうすれば実現できるのでしょうか? たとえば、10行明細を出力するとしたら レコード件数が1件でも残りの9行は空行で出力するという感じです。 クリスタルレポートのバージョンは 8.5.0.217です。 データベースはOracle9を使用しています。 なにぶん初心者なので具体的な手順を教えていただけると ありがたいです。 お手数をおかけしますが、どうぞ何か良いアドバイスを よろしくお願いします。

  • クリスタルレポート+文字列セット

    環境:Windows2000+VB5.0 既存システムの変更をしています。 VB5.0でつくっており、CrystalReportで レポート出力を行っています。 私はCrystalReportsを使ったことないのですが、 VBのフォームで 名前テキストボックス、社員番号テキストボックスがあり、 そこで印刷プレビューボタンをクリック、 そうするとプレビュー画面があがる、といった 場合、ヘッダーに名前テキストの内容と社員番号テキストの内容を 印字させたいのですが、どうしたらいいのでしょうか? 名前も社員もデータベースにあるものでなく、 フォームにあるテキストに入力されたものを使います。 ヘルプなどをみていると、 Rpt.Formulas(0) = "名前 = 'ああああ'" とやるとOKと書いていましたが、 その後、Rpt.Action = 1 でエラーになりました。(「式名が不正です。」) ちなみに、クリスタルレポートには、名前というテキストフィールドを ヘッダーにはりつけ、その部分をセットしようとしているのですが・・・ よろしくお願いいたします。

  • ACCESSのレポート機能について

    いつもお世話になっております。 アクセスのレポート機能でお伺いしたことがあります。 現在データベースの内容を帳票出力したいと思っています。 一枚8件が帳票される想定でレイアウトを作りました。 そこで一つ問題が発生しております。 8件丁度のレコードの場合は帳票が綺麗な並びで表示されるので 問題ないのですが、 8件以下の場合や、8件以上の場合、帳票に余白がでてしまいます。 (例 5件の場合、5件表示され、3件分の余白が発生。) ページヘッダにはグループにするべきデータをセット、 詳細には1レコードの帳票をセットして、 グループされるデータが順番に帳票に出るようにしたいと思っています。 希望する帳票レイアウトは、 8件以下の場合は、(例3件の場合) 3件データ表示+5件ブランクで帳票レイアウトが表示される。 8件以上の場合は(例12件の場合) 8件は全件表示 次ページで4件+4件ブランクの帳票レイアウトが表示される。 一つの解決方法があるとすれば、 データベース側でブランク分のデータを作ってその用のデータに見せかけるという 方法は浮かんでおります。 しかし、レポートの設定などで詳細のなかのレポートレイアウトが ページ数一杯まで自動で表示されるような設定があればその必要が ないのではないかと思い質問をさせて頂きました。 どうぞよろしくお願い致します。

  • 先日にサーバーを新しく購入して旧サーバーから環境を移行しました

    先日にサーバーを新しく購入して旧サーバーから環境を移行しました (WINDOWS 2003 SERVERからWINDOWS 2008 SERVER) ファイルサーバーを作成して旧から新へデータをコピーしまして 使用しています。 VB6で作成しました事務ソフトで帳票にクリスタルレポートを使用しています その事務ソフトのEXEファイルや作成したすべてのファイルをファイルサーバーに 入れています。 クライアントPCから事務ソフトを起動しまして、帳票を出力しようとすると PrintReportが20533(データーベースが見つからない?)を返します。 そこでクリスタルレポートから直接帳票フォームを開いてプレビューで出力を すると正常に見られます。 そのあとにクライアントPCから事務ソフトを起動して、帳票を出力すると 今度は正常に出力します。 が、クライアントPCを再起動すると、またクリスタルレポートのPrintReportが 20533のエラーを返します。 いちどクリスタルレポートからデーターベースにアクセスしておかないと エラーになります 旧サーバーと新サーバーのコンピューター名は違う名前です。 VB6の事務ソフトでのパスなどはすべて変更済み(だと思います) このような現象はどこを確認すればよいのでしょうか? 説明が分かりにくいかと思いますが、宜しくお願いします。

専門家に質問してみよう