クリスタルレポートの宛名ラベル発行で、1行に3つのラベルを配置して、
一番左上のラベルだけグループ情報のラベルにして、その左側から
そのグループの内容をラベルに発行していきたいのですが、
どうしたらいいでしょうか?
わかる人、どうか教えてください m(__)m

A 回答 (1件)

昔、クリレポつかったことがある者です。


質問の内容は、以下のような帳票を出すことでしょうか?
+-----------------------------+
| +------+  +------+ +------+ |
| |グループ情報|  |ラベル2  | |ラベル3  | |
| +------+  +------+ +------+ |
| +------+  +------+ +------+ |
| |ラベル1  |  |ラベル2  | |ラベル3  | |
| +------+  +------+ +------+ |
+-----------------------------+
*2行目以降は、用紙一杯までラベルを印刷する。
このような場合は、クリレポ側は、ラベルをべたで打ち出すように
デザインして、ワークテーブルを準備して、そこにデータを流し込むような
プログラムを私はよく行います。
出力順序、ラベル1のデータ、ラベル2のデータ、ラベル3のデータ
という構造のワークテーブルに
1、グループA、データ1、データ2
2、データ3、データ4、データ5
3、データ6、データ7、データ8
4、グループB、データ9、データ10
5、ブランク、ブランク、ブランク
6、ブランク、ブランク、ブランク      ・
      ・
      ・
と言った感じでデータを流し込むようにプログラムを作成するわけです。
もう少し細かく説明すると、A4の用紙1枚に9(3枚*3段)枚の
ラベルが印刷できるとして、1ラベルのデータ出力で1件と言うカウント
の方法を行った場合で、カウントが9で割った余りが0の場合に、
グループのデータを書きこむようにプログラムを作れば良いと思います。
さらに、ページの途中でデータが終わった場合や、グループが変わったときに、
ページの最後までブランクの行を出力することもポイントになります。
(改ページさせる必要があるかどうかは、確認が必要ですよね。)
ただ、この方法は、プログラムが面倒です。さらに、テスト用データをきちんと
場合分けして、作成し、きちんと左上にグループ名が来ることを確認する
ことを忘れずに。
パターン的には、上記の例ですと、
0件、1件、8件、9件、10件というように、0件の場合と、1件ある場合。
あとは、改ページする前後で、データを作成するわけです。
グループの変わるタイミングも重要です。
これについても、改ページの前後のタイミングでグループが変わったときに、
正しく出力するかどうか。をチェックしてください。

長文で失礼しましたが、参考になったでしょうか?
    • good
    • 0
この回答へのお礼

回答いただき、ありがとうございました。
大変参考になります
さっそく、試してみたいと思います
また、クリレポのことで質問をあげることがあるかとは思いますが
よろしければ、また教えてください

お礼日時:2001/06/08 11:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

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

VB6を使用してます。
ただ、クリスタルレポートに関しては、まったく使ったことがないのですが、このたび他人が作成した物の改造をしなくてはならなくなりました。
無知ですので、用語など表現がうまくできないと思いますが、以下の手段をご存知の方、ご教授ください。

クリスタルレポートを使用して、MS-SQLServerのデータをプリントアウトしています。
しかし、ここで「列A」と「列B」の和をもう一つの項目として追加する必要がでてきました。
ただし、データベースは手元にないため変更ができません。
列A・Bは、Section1なる「くくり」にされ、データの数だけ表示され、それぞれの行(?)に項目Cを作りAとBの和を表示せねばなりません。
その方法をご存知のかた、ご教授願えませんでしょうか?

(クリスタルレポート等の知識がないため、質問内容をうまくまとめることができていないと思いますが、よろしくお願いいたします)

Aベストアンサー

#1の者です。

なんと!!DataReportだったのですね・・・。

DataReportは殆ど使ったことないのであまり自信ありませんが、もしDataEnvironmentのCommandでSQLを指定して接続されているとしたら、SQLレベルで、例えば

SELECT 価格, 消費税 FROM テーブル名



SELECT 価格, 消費税, 価格 + 消費税 AS 合計 FROM テーブル名

というように式列を追加し、DataFieldプロパティに「合計」を選択すればOKだと思います。
※元のテーブルを変更する必要はありません。また、テーブル指定だった場合は、SQLを新たに指定してください。

Qクリスタルレポートで0件時の表示

おせわになっております。
ここには、初めて質問させていただきます、
よろしくおねがいします。

クリスタルレポート(VB2003付属)で帳票を作成しているのですが
DBとクエリはACCESSで行い、表示のみクリスタルレポートを使用
しております。

金額の合計を表示するレポートを作成したのですが、
クアリの結果が0件(該当レコード無し)の場合
クリスタルレポートの表示が空白になってしまいます。

私としては、金額なので0円(¥0)を表示したいのですが
方法がわかりません。

どなたか、教えていただけると、ありがたいです。

よろしく、お願いします。

Aベストアンサー

(1) IsNullを使う例
AccessではNETで使うIsDBNullと同様の
機能を持ったIsNullを使って、
IsNull([フィールド名など],[Trueのとき返す値],[Falseのとき返す値])
のようにしてNullのときに返す値を設定します。
[Falseのとき返す値]を設定するのはケースバイケース
です。

たとえば、TaaaというテーブルにID、項目、金額
があり、いくつかの項目の金額がNullの場合、IIfを
併用して、

SELECT Taaa.ID, Taaa.項目, IIf(IsNull([Taaa]![金額]),0,[Taaa]![金額]) AS 金額A
FROM Taaa;

のような使い方をしてNullの場合でも0を表示
するようにします。

(2) Nz関数を使う例
あるいは、合計を出すときなどにNz関数を使い、
合計が0の場合に結果セットが表示されないのを
0で表示しようと思えば、グループ化による
合計の例では、

SELECT Taaa.項目, Sum(Nz([Taaa].[金額])) AS 金額の合計
FROM Taaa
GROUP BY Taaa.項目;

この場合は金額が通貨型であっても\が表示されません。

あるいは、最初のSQL文をそのまま利用して、

SELECT Taaa.項目, Sum(IIf(IsNull([Taaa]![金額]),0,[Taaa]![金額])) AS 金額A
FROM Taaa
GROUP BY Taaa.項目;

この場合は金額が通貨型である場合は\が表示されます。

ということも出来ます。もちろんNz関数は合計以外でも
使用します。

合計の場合にクエリの結果がNullになる場合に
0としたい場合はNz関数を使用するというのが
普通のやりかたです。最後のSQL文でAS 金額A
と金額のエイリアスを使っています。金額と
するとデータが表示されません。
合計ですから(2)のほうですかね。
Accessのクエリの結果セットを取り出すので
あればこれでいいと思うのですが。
こんなところです。何かあれば書き込みを。

(1) IsNullを使う例
AccessではNETで使うIsDBNullと同様の
機能を持ったIsNullを使って、
IsNull([フィールド名など],[Trueのとき返す値],[Falseのとき返す値])
のようにしてNullのときに返す値を設定します。
[Falseのとき返す値]を設定するのはケースバイケース
です。

たとえば、TaaaというテーブルにID、項目、金額
があり、いくつかの項目の金額がNullの場合、IIfを
併用して、

SELECT Taaa.ID, Taaa.項目, IIf(IsNull([Taaa]![金額]),0,[Taaa]![金額]) AS 金額A
FROM Taaa;

のような使い...続きを読む

Qクリスタルレポート(8.5)の書式設定

お世話になっています。
開発環境 
 VisualStudio6.0
 クリスタルレポート8.5です。
VBプロジェクト内でクリスタルレポートをデザインする方法で開発しています。

フィールドの表示形式の設定方法がわかりません。

1、数値フィールドで日付を持っています。(20040304など)
このフィールドをスラッシュ編集で表示するにはどうしたらいいですか?

式フィールドで
Left(フィールド,4) & "/" & Mid(フィールド,5,2) & "/" & Right(フィールド,2)

と、しようと思ったのですが、結果は"20,0/40/00" となってしまいました
  勝手に数値をカンマ編集、小数2桁表示しているようです。

2、同じく数値フィールドで、数値にゼロを足して表示する方法がわかりません。

例えば、19なら0000019、1なら0000001、110なら0000110 というふうにしたいです。

よろしくお願い致します。

Aベストアンサー

#1です。
私はてっきりVBで持っているデータをクリスタルレポートの式フィールドに渡すものだと思っていたのでFormat関数を利用したらどうかと思ったのですが、MDBの情報をクリスタルレポートで出すということなんですね。

フィールドのプロパティにそういうのってなかったでしょうか…。

ちょっとそれは考えていなかったので調べてみます。
役に立てなくてすみません…。

もしどうしても出来ないのであれば、書式の設定をしたいものだけ(この場合は日付と0フォーマットしたい数字)をデータベースからVBに読み込んで、そこからクリスタルレポートの式フィールドにFormat関数で変換したものを渡したらどうでしょうか。
一応VBにはコンポーネントにクリスタルレポートの操作が出来るものがあるのでそれを利用してみるのもいいのではないかと思います。

本当、お役に立てなくてすみません…

QVB.NET と クリスタルレポート

現在、VB.NETのプログラムから、
クリスタルレポートを使用して印刷を出しています。

ですが、現在よくわからないエラーに悩まされています。

何枚かを送って印刷するぶんには問題ないのですが、
15枚以上印刷をしようとすると、

PrintToPrint のところでエラーとなるのですが、
いざエラーメッセージを見ると、「エラーはありません」となっています。
エラーになり止るのに、メッセージでは「エラーはない」という風になっているので、
完全に意味がわかりません。

なお、印刷は15枚以上、別々にプリンタに送っています。
(ループで指定データ数分まわして、その枚数をプリンタに送っています)

その印刷するときのデータのせいかな、とも思ったのですが、
複数枚出さず、単体で印刷しようとするときちんと動作します。

それに、エラーが出たときにその部分を飛ばして、
残りの印刷をさせようとするときちんと動作します。

「VB.NET エラーはありません」 や 「クリスタルレポート エラーはありません」 で
ウェブ検索をしてみたのですが、情報を見つけることができませんでした。

理由をご存知の方、
こうではないかという予想を付けられる方、
ぜひご教授願います。

現在、VB.NETのプログラムから、
クリスタルレポートを使用して印刷を出しています。

ですが、現在よくわからないエラーに悩まされています。

何枚かを送って印刷するぶんには問題ないのですが、
15枚以上印刷をしようとすると、

PrintToPrint のところでエラーとなるのですが、
いざエラーメッセージを見ると、「エラーはありません」となっています。
エラーになり止るのに、メッセージでは「エラーはない」という風になっているので、
完全に意味がわかりません。

なお、印刷は15枚以上、別々にプリンタに...続きを読む

Aベストアンサー

英語の情報ですが...
http://scn.sap.com/thread/1445453

英語が苦手なので、間違っていたらゴメンなさい。
「レポートを開く,データソースの変更,データ追加のいずれかに問題がある」
「-crpetrace 7オプションをコマンドラインに追加して、クリスタルレポートのトレースを取得することができる」


※ あまり参考にならないかもしれません。

Qクリスタルレポートで文字列の部分抽出をする方法

クリスタルレポートで式フィールドを挿入する際、
データベースフィールドの文字列を部分的に抽出
することは出来ないでしょうか。
「あるフィールドの○文字目から△文字目までを抽出する」という、VBで言うMID関数を使いたいのですが、
術が見つからなくて困っています。
よろしくお願いします。

Aベストアンサー

添字演算子[]を使えばMID関数のように利用できます。

x[y to z] で、文字列 x から、y ~z までの範囲の文字を取り出せます。
添字は0から始まります、またこの演算子で文字の代入もできます。

{データベースフィールド} [3 to 10] で
データベースフィールド の 3から 10個目の文字列がとれます。

詳しくは、クリスタルレポートのヘルプに記載されています。


このカテゴリの人気Q&Aランキング

おすすめ情報