どなたかわかるかたおしえてください。
クリスタルレポート8を使って帳票を出したいのですが、1ページに19レコード出したら改ページをしたいのですが、どのようにしたらよいのでしょうか。
どなたか教えてください。お願いします。

A 回答 (1件)

こんにちわ


この前の人ですね。

いろいろ方法がありますが 2つの方法でアドバイスできるかもしれません

1.クリスタルレポートのRecordNumbeを使う方法
2.レコード自体にページNoを振る

1.まず、詳細のセクションの書式設定を開きます。
その中で出力後に改ページの式を設定するボタン(X・2のアイコン)で式エディタ

(RecordNumber Mod 19)=0
と記述保存します。
セクションの書式設定に戻りアイコンが赤くなったのを確認します。

2.の方法は、そのままグループフッタにページNoを設定して、
セクションの書式の 出力後に改ページ にチェックを入れます。
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

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にはコンポーネントにクリスタルレポートの操作が出来るものがあるのでそれを利用してみるのもいいのではないかと思います。

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

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

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

Aベストアンサー

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

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

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

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

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

はじめまして
仕事でクリスタルレポート使うことになったのですが、
初心者のためわからないことが多々あり教えていただきたいのです。

レコード数に関係なく空行を出力したいのですが
どうすれば実現できるのでしょうか?
たとえば、10行明細を出力するとしたら
レコード件数が1件でも残りの9行は空行で出力するという感じです。

クリスタルレポートのバージョンは
8.5.0.217です。
データベースはOracle9を使用しています。

なにぶん初心者なので具体的な手順を教えていただけると
ありがたいです。
お手数をおかけしますが、どうぞ何か良いアドバイスを
よろしくお願いします。

Aベストアンサー

それじゃ、ヒントだけ書いておきます。

Private Sub ActiveReport_Initialize()
レポートが呼び出された時の処理を記述します。

Private Sub ActiveReport_ReportStart()
レポートが起動したときの処理を記述します。

Private Sub ActiveReport_FetchData(eof as Boolean)
レポートにデータを貼り付ける時の処理を記述します。

まあ、これくらいでご容赦ください。もし、ヘルプ等がインストールされていないとの事ですが必要なものですからインストールされてください。また、メールのでのやり取りでこれ以上の細かなやり取りは出来ないと思いますので、書店で関連書籍をお求めになることをお勧めします。

Qクリスタルレポートの式フィールドで日付変換。

クリスタルレポート8の式フィールドで日付を表示させようと思っています。

標準では『YYYY/MM/DD』形式なのですがこれを『YYYY-MM-DD』で表示させたいのですがうまくいきません。

式フィールドには

if A ="1" then formula = CurrentDate

と記述しています。
Aの値が"1"ならば日付を表示です。
説明が下手で分かりづらいかもしれませんが、
補足しますのでヨロシクお願いします。

Aベストアンサー

私が使っている .net 2003 のクリレポではカスタム設定で第一区切り、第二区切りの文字が指定できるんで、簡単に実現できますが、クリレポ8だと良くわかりませんねぇ。

formulaは文字列型なんでしょうか?であれば、right, mid, leftでそれぞれ年月日をつなぎ合わせるとか。
もしくは、Year, Month, day関数を使って、
Year(CurrentDate) + "-" + Month(CurrentDate) + "-" + Day(CurrentDate)
にしてみるとか。
すみません、上記のコードは全く検証していません(^^;

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;

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

QCrystalReportの文字列の折返しについて

[OSのVER]:WindowsXPSP2
[VBのVER]:.Net

今現在 .NET+CrystalReportXI で開発をしております。

半角カナ、記号、英数字等等混在したフィールドを式フィールドで
連結し、折り返して表示しようと思うのですがデータを出力すると
表示領域は確保してあるにもかかわらず、データが途中までしか
出力されないという事象が発生しています。

例)
[連結データ]
"レポート" & "(TEST0126)"

[表示結果] MSゴシック 10.5Pで出力
レポー
ト(TEST0126)

っと折返しの位置がおかしくなっています。
色々と調べてみたのですが、文字ピッチの問題やら、バージョンの違いなど原因はいくつかあるようなのですが、どの質問でも解決まで至っていません。
どなたかご存知の方いらっしゃいましたら、解決方法を教えてください。
よろしくお願いいたします。

Aベストアンサー

英文ワードラップと禁則処理の機能によるものです。
横幅が足りないので折り返されるわけですが、英字部分が切れないように、「(」などの記号が頭にこないようになどの規則により、結果のように出力されます。
フィールドの幅を広げて1行ですむようにするか、改行コード挟んで強制的に折り返してみては?

QDataTableから条件を満たした行を別のDatatableへコピーしたい

VC#2005とSQLServer2005ExpressEditionでWindowsアプリケーションを作成しています。

データベースの中から1つのマスタテーブルのデータを呼び出すのにTableAdapterを使ってDataTableにデータをバインドしました。
そこから条件を満たしている行をすべて抽出して同じ型のDataTableにデータをコピーしたいのです。

ですから、DataTableは2つ用意しています。1つは上記の通りデータをバインドしていますが、もう1つは宣言しただけなのでまだ空っぽの状態です。
DataTableにはカラムが3列あり、その中の1列をグループIDとしています。
条件としてはグループIDが同じであるということです。
やりたいことは条件を満たしている行をすべて抽出して空のデータテーブルにコピーすることです。

どなたかご存知の方いらっしゃれば教えてください。
よろしくお願いします。

Aベストアンサー

C#だったんですね … さほど変わりないと思いますが

お使いのコードが提示されていないのでこちらで適当な変数をでっち上げております
現在お使いのコードを支障の無い範囲で提示しましょう

//元のデータテーブルがdtSourceとすると
// テーブル構造をコピー
DataTable dt = dtSource.Clone();
DataRow r = null;
foreach( DataRow dtRow in dtSource.Select("選択するための文字列"))
{
  r = dt.NewRow();
  for( int n = 0; n < dtRow.ItemArray.Length; n++ )
  {
    r[n] = dtRow[n];
  }
  dt.Rows.Add( r );
}
といった具合になると思います

# 前回の投稿中のstSorceはdtSourceの単なるミスです

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

クリスタルレポートを作る時、
元になるデータベースを選んでテーブルを選んで、
必要な項目を画面に貼り付けていくわけですけど、

たくさん画面に式なり項目なりを貼り付けたあとで、
テーブル1 から 全く同じ構造のテーブルである テーブル2に
出力元を変えたいとします。

私は今まで、「データベース」→「データベースからレポートを追加」
でテーブル2を追加し、そのあとで、「データベース」→ 「レポートから
ファイルを削除」でテーブル1を選んで消していました。
すると、項目をそのまま貼り付けてあったものはすべて消えてしまいますが、
式を作ってその中に、[テーブル1.項目1]と書いてあった場合は
そのままで残っています。

その状態で例えば、プレビューボタンを押すとすると、
当然もうテーブル1はないので、エラーとなります。

その式の中のテーブル1をすべて手動でテーブル2に変えるという作業を
していました。

バージョンは問いません。使っているのは、7と8です。

何か一度に変える方法はないのでしょうか?
式の中のものをすべて置き換える方法などないでしょうか?

他の方法でもいいのでどなたか至急教えて下さい。
項目がたくさんある時とても大変です・・・

クリスタルレポートを作る時、
元になるデータベースを選んでテーブルを選んで、
必要な項目を画面に貼り付けていくわけですけど、

たくさん画面に式なり項目なりを貼り付けたあとで、
テーブル1 から 全く同じ構造のテーブルである テーブル2に
出力元を変えたいとします。

私は今まで、「データベース」→「データベースからレポートを追加」
でテーブル2を追加し、そのあとで、「データベース」→ 「レポートから
ファイルを削除」でテーブル1を選んで消していました。
すると、項目をその...続きを読む

Aベストアンサー

記憶が薄いですが、、、

クリスタルレポートは、テーブル名とフィールドを記憶します。
しかしDBの接続先は任意です。

テーブル名が違うなら、全て関連付けずにオブジェクトを配置して、コードで関連付けるしかありません。

クリスタルレポートをインストール時に、サンプルもインストールしませんでしたか?
同様なサンプルを見たような気がします。。。

QMAX値を条件にデータを取得するには?

SQL文で困っています。
ご教授下さい。


下記のようなデータがあった場合、それぞれの区分毎に
年月が最大(最新)のデータを取得したいです。
(実際には1レコードにその他項目があり、それらも取得します。)
<検索対象データ>
区分 年月   金額
-----------------------------
A   200412  600
A   200503  560
B   200311  600
B   200508  1000
B   200504  560
C   200508  400
C   200301  1100


<取得したいデータ>

区分 年月   金額
-----------------------------
A   200503  560
B   200508  1000
C   200508  400

よろしくお願いします。

Aベストアンサー

テーブル名をXXXとすると次のようなSQLでよいと思います。(最善の方法かどうかは自信がないですが)

select B.* from (select 区分, max(年月) as 年月 from XXX group by 区分) As A
inner join XXX as B on A.区分 = B.区分 and A.年月 = B.年月
order by B.区分

QSELECTで1件のみ取得するには?

こんにちわ。
いまORACLE9iを使用している者です。

ACCESSでは
SELECT TOP 1 項目名 FROM テーブル名
ORDER BY 項目名;
で並べ替えたデータ群のうち,先頭の1件だけを
取ることができますが,
ORACLEでそのような機能(SQL)はあるでしょうか?
教えてください。
よろしくお願いします。

Aベストアンサー

order by と rownum を併用する場合は注意が必要です。

[tbl01]
cola | colb
------------
1000 | aaaa
1001 | bbbb

というデータがある場合、
select cola from tbl01 where rownum < 1 order by cola desc;
とすると、「1001」ではなく、「1000」が返されます。
これは、order by の前に rownum < 1 が適用されてしまうからです。

解決するには、
select aaa from (select cola aaa from tbl01 order by cola desc) where rownum = 1;
とすれば良いです。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング