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

このQ&Aのポイント
  • クリスタルレポートのバージョン8.5.0.217を使用して、レコード数に関係なく空行を出力する方法について教えてください。
  • 10行明細を出力する場合、レコード件数が1件でも残りの9行は空行で出力したいです。
  • 具体的な手順やアドバイスをお願いします。
回答を見る
  • ベストアンサー

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

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

質問者が選んだベストアンサー

  • ベストアンサー
  • PAPA0427
  • ベストアンサー率22% (559/2488)
回答No.3

それじゃ、ヒントだけ書いておきます。 Private Sub ActiveReport_Initialize() レポートが呼び出された時の処理を記述します。 Private Sub ActiveReport_ReportStart() レポートが起動したときの処理を記述します。 Private Sub ActiveReport_FetchData(eof as Boolean) レポートにデータを貼り付ける時の処理を記述します。 まあ、これくらいでご容赦ください。もし、ヘルプ等がインストールされていないとの事ですが必要なものですからインストールされてください。また、メールのでのやり取りでこれ以上の細かなやり取りは出来ないと思いますので、書店で関連書籍をお求めになることをお勧めします。

dsyosichan
質問者

お礼

PAPA0427さん 回答及びヒントありがとうございます。 わかりました、 後は自分でなんかとかがんばってみます。 どうもありがとうございました。

その他の回答 (2)

  • PAPA0427
  • ベストアンサー率22% (559/2488)
回答No.2

う~~~ん。ちょっとそっけなかったですね。m(__)m 方法1 ボディ部に全部カラムを作成します。いまは多分一行分作成されていると思いますが。必要なライン数分をボディ部に貼付けいきます。 また、レポート中にページ単位で表示させるコードを埋め込んで表示させることになります。 方法2 例えば、1ページに20行表示するとして、データの総数が112行あったとします。 すると、8行足りませんよね。DB上の表示にかかわる項目を、全部Nullか空白で埋めてからインサート文でレコードを8行追加します。 別ファイルにするのは、ワーク的な使い方をするのと、原本データに不要なレコードを追加しないためです。

dsyosichan
質問者

補足

PAPA0427さん 回答ありがとうございます。 検討した結果、方法1でやってみようと思います。 そこで再び質問です。 詳細セクションに必要なライン数だけ作成しましたが、 こうなると、表示されるデータは1件目に限られてしまいませんか? そうならないように レポート中にページ単位で表示させるコードを埋め込んで表示させるということと認識してよいでしょうか? またページ単位でコードを埋め込んで表示とはどのようにしたら良いでしょう? 自分で調べろと思われるかもしれませんが、 PCにヘルプがインストールされておらず 八方塞な状態なのです。 お手数をおかけしますがどうぞよろしくお願いします。

  • PAPA0427
  • ベストアンサー率22% (559/2488)
回答No.1

はじめまして。 クリスタルレポートでの空行の処理ですね。 よくやる方法としては、2つあります。 行を繰り返しでは、なくページで作成する。つまり、レポート上に10行なら10行分の表示カラムを設定する。 データの方を10行分用意する。つまり、印刷するときに印刷したい元データを別ファイルへコピーして件数の判定をし、必要な空行の行数を求め、コピーしたファイルへ空行をインサート。 こんなもんで、いかがでしょう?

dsyosichan
質問者

補足

PAPA0427さん 回答ありがとうございます。 改めて質問させてください。 前者の方法について。 ページで印刷するというのはページヘッダ又はページフッタに行を作成してしまうということでしょうか? その場合に詳細にセットされているデータをページヘッダ又はページフッタに表示するにはどうしたらよいのでしょうか? 後者の方法について 別ファイルではなくレポート上で件数の判定をすることは不可能なのでしょうか?また、コピーしたファイルへ空行をインサートというのは、どのようにすれば実現できるのでしょうか?

関連するQ&A

  • クリスタルレポートを教えてください

    始めまして、ouyouです。 仕事でクリスタルレポート調査をしてきました。つい最近SQLについて 学んだばかりです。わからないことがあって、教えていただきたいと思います。 データベースのテーブルから VarChar2型、サイズ40バイト、値は、半角、全角両方含む フィールドを読み込んで、クリスタルレポート上に 2行(1行目:20バイト、2行目は、残りの20バイト)で表示したいのですが、 1行目と2行目の境に全角文字が跨る場合、単純に20バイトで切ると文字化けの 原因などになりますが、このような場合どのような処理をしたらいいでしょうか? 申し訳ありませんがよろしくお願いします。

  • クリスタルレポート8でのFormula??たすけてください。

    開発環境 windows2000 SP3 visualbasic6.0 SP5 crystlreport8.0 今クリスタルレポート8で アクセスのMDBのテーブルの中身を レポートに出力しています。 テーブルの中身には Aグループ Bグループ Cグループ  の3つが全て入っているとして VBからクリスタルレポートを出力する際に ワークテーブルに全レコードが入った状況で クリスタルレポートに出力する際に Aグループだけを出力させたいのですが そのようなことは可能でしょうか? 可能であれば方法を教えて下さいませんでしょうか? Formulaというのをちらっと耳にしたのですが 何のことやら・・・涙 元のワークテーブルに対象のレコードだけを 入れておいて全件出力すればよい話なのですが それは今できない状態です。 よろしくお願いします。

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

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

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

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

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

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

  • クリスタルレポートの改ページについて

    クリレポ初心者です。 帳票で20行出力した後、合計欄を表示したいのですが、明細が21行以上だと改ページした後、グループヘッダが出力されるのですが、20行ジャストで改ページし、合計欄を改ページした先頭の1行に出力しようとすると、なぜかグループヘッダが出力されません。 どなたかご存知の方がいましたらご教授をお願い致します。

  • クリスタルレポートのODBC接続ができません

    クリスタルレポート初体験です。 VB5、DBはオラクル9i(但し開発環境は8i)を使用しています。 VBからODBC経由でクリスタルレポートに接続したいのですがうまくいきません。 ------------------------------------------------ With rpt3000 .DataFiles(0) = "VW一覧表" .Connect = "DSN=TESTDSN;UID=B_USR;PWD=ABC;" .ReportFileName = App.Path & "\" & "test.rpt" lngRet = .PrintReport strErrMsg = .LastErrorNumber & "/" & .LastErrorString If lngRet <> 0 Then MsgBox strErrMsg End If End With ------------------------------------------------ .PrintReportのところで一瞬クリスタルレポートの窓が開いているようなのですが、すぐ消えてしまって表示されません。 エラーメッセージは「20527/SQLServer Error」です。 ODBCの設定はテスト接続でつながるので間違っていないと思います。 ------------------------------------------------ データソース名:TESTDSN サービス名:A_DBQ ユーザー名:B_USR ドライバは ORACLE ODBC Driver ------------------------------------------------ クリスタルレポートのrptファイルを開いてログオンサーバーをすれば正しく表示されるのですが、VBからだとDBに接続出来ていないような感じがします。(推測ですが) コードの書き方が間違っているでしょうか? それとも何か設定が足りないとか・・・ 初心者につき説明が足りない部分があるかと思いますので、補足要求してください。よろしくおねがいします。

  • Accessでレポート内の繰り返しレコードの行数を固定したいです。

    Accessでレポート内の繰り返しレコードの行数を固定したいです。 Access2007を使っています。 社内のフォーマットに合わせた物品購入申請書のようなものを Accessのレポート機能を使って印刷したいと思っています。 大きく2つのテーブルから構成されます。  (申請書テーブル)   1文書に1レコードが該当するもの   書類番号、申請日や申請者名、購入目的等が入ります。  (購入物品テーブル)   1文書に複数のレコードが該当するもの   購入する物品の名前や金額等が入ります。   書類番号を外部キーとして申請書テーブルとリンクします。 レポート機能で、この二つのテーブルを対象として、 (正確には、申請書テーブルはフォーム上で開いているレコードのみを対象と  するために、クエリを仲介して) 購入物品は繰り返しにするようにすることで、ひととおり形にはなったのですが、 1つうまくいかないことがあります。 社内のもともとの手書き用フォーマットには、購入物品の記入枠が20行あります。 これは多めにつくってあるので、当然購入物品数が20以下の場合は、残りの行は 空白になっています。 しかし、Accessのレポートで作ったものは空白行がなく、おかげで購入物品件数 により「詳細」と「フッタ」の間の不自然な空白が広くなったりします。 フッタと言っても、内容的には、「上記物品の購入云々~、お願い致します。」 とかサインするエリアとかですので、繰り返しが終わったらすぐに開始をして ほしいのです。 購入物品の数に関わらず全体の行数を20に固定する方法はありますでしょうか?

  • オラクルについて教えてください。

    ORACLEをデーターベースとして、MICROSOFTACCESSを使ってフォームやレポートを作ろうと考えています。 ACCESSではフォームのコマンドボタンなどからVBAを入力しなくとも一般マクロで様々な処理をすることができると思います。  しかし、そうするとORACLEの下記の特徴は実現されなくなるのでしょうか?またレコードソースにせず、フォームを非連結にすれば実現可能なのでしょうか?その場合、どんな感じの手順になるのでしょうか? 特徴 (1)必要なレコードのみを抽出したあとクライアントにデータを送信 (2)バックアップの最中も滞りなくデータベースを稼働 (3)完全な行レベルロック (4)マルチバージョニング読み取り一貫性 (5)ACCESSの約43億倍のデータを扱うことが可能 (6)ACCESSのようにファイル単位ではなく、表などのオブジェクト単位はもちろん、表の行や列単位にまでアクセス制御

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

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

専門家に質問してみよう