データの置き換え
ちうこ - 2007/10/11(Thu) 18:19 No.3344
いつもお世話になっています。
クリスタルレポートでMSDEをつかってデータを出力していますが、データセットに置き換えたいと考えています。
MSDEからデータセットへの置き換えは可能でしょうか?
(データセットのテーブル名、フィールド名はMSDEと同じにしようと考えています)
環境:VisualStudio .NET 2003
ご教授宜しくお願い致します
データ毎の処理の書き方
あゆみ - 2007/10/05(Fri) 15:39 No.3337
この度はお世話になります。
VisualStudio2005、VBで、VisualStudioについている
クリスタルレポートを使用しています。
作成アプリはWinアプリです。
DataSetを使用してクリスタルレポートの出力を行っているのですが、
そのDataSetのとあるフィールドの値によって線の表示/非表示を切り替えたいのですが、
どのようにしたらよろしいでしょうか?
Accessのレポートなどでは、詳細を出力する際のイベントなどがあったと思うのですが、
今回作成しているrptファイルのソース記述部分では、
それらしきイベントを見つける事が出来ませんでした。
何卒ご教授よろしくお願い致します。
- Re: データ毎の処理の書き方
24x7 - 2007/10/09(Tue) 07:17 No.3338
- 線のオブジェクトには、条件式で表示と非表示を制御することはできません。
- Re: データ毎の処理の書き方
クロ - 2007/10/09(Tue) 16:39 No.3339
- 初めましてクロと申します。
線オブジェクトの上に、背景色を白に指定したテキストオブジェクトを貼り付けます。
そしてフィールド値による表示・非表示の式をテキストオブジェクトに入れてやります。
実際印字すると見かけ上は、線オブジェクトが消えたように見えるという仕組みです。
原始的な方法ではありますが、簡単にやりたいことを実現できるのではないでしょうか?
- Re: データ毎の処理の書き方
24x7 - 2007/10/09(Tue) 23:03 No.3342
なるほどね。できると思います。
テキストオブジェクトの境界線なら条件式が使えると思っていました。
レポートの見栄えというか印刷した結果が期待したものであれば、いいと思います。
- Re: データ毎の処理の書き方
あゆみ - 2007/10/10(Wed) 08:55 No.3343
24x7さん、クロさん、ありがとうございます。
投稿した後テキストオブジェクトの境界線を設定する方法を思いついたのですが、
線の太さを設定するところがなく、シングルの場合、線オブジェクトのデフォルトの太さより太くなるので困ってました。
クロさんにアドバイス頂いた方法でやってみようと思います。
有難うございました。
バイト数の取得
masa - 2007/10/04(Thu) 14:27 No.3333
- 初めて投稿します。
Crystal Reports8を使用しています。
出力項目に、全角半角文字の混ざった文字列のバイト数を取得したいです。
len関数だと文字数を取得してしまいうまくいきません。
どなたかよい方法をご存知でしょうか?
- Re: バイト数の取得
24x7 - 2007/10/04(Thu) 23:10 No.3335
古いバージョンでは、バイト数を取得する関数が存在していましたが、V7(?) から文字数に変わってしまいました。
昔、メーカーのサイトにバイト数を取得することができるUFL関数があったけど、今は、見つかりませんでした。
式フィールドを使って、1文字ずつ文字コードを取得して、半角、全角を確認するしかないと思います。
あとは、UFL関数を自分で作成する。UFL関数は、式フィールドの中で利用する関数を自分で作成したものです。
- Re: バイト数の取得
masa - 2007/10/09(Tue) 22:51 No.3341
返信遅くなりました。
回答ありがとうございます。
式フィールドにて1文字づつコードを取得するようにしました。
参考になるかわかりませんが、コードをのせておきます。
dim i as number
dim j as number
for i =1 to len(文字列) step 1
if asc(mid(文字列,i,1))<0 or asc(mid(文字列,i,1))>255 then
j=j+2
else
j=j+1
end if
next i
formula=j
帳票の表示データ選出について
ふら - 2007/10/09(Tue) 21:17 No.3340
- はじめまして。お世話になります。
vb.net(2003)による開発で、本体とレポートの開発グループが別になっているため、
クリスタルレポートのバージョンをまだ知らされていなくて申し訳ないのですが、
一般的にクリスタルレポートで可能かどうかを教えていただきたいことがあります。
現在、
---------------------------------------------------------------
(レポート名) (ページNo)
(Aの項目名) (Bの項目名) (Cの項目名) (Dの項目名) (Eの項目名) (Fの項目名)
(Aの出力値) (Bの出力値) (Cの出力値) (Dの出力値) (Eの出力値) (Fの出力値)
・
・
・
(Aの出力値) (Bの出力値) (Cの出力値) (Dの出力値) (Eの出力値) (Fの出力値)
合計 N件 (Fの合計値)
---------------------------------------------------------------
という感じのレポートを出力させようとしているのですが、
細かい条件として
1. A・B・Cの値の昇順でならべる
2. 合計行は最終レコードのすぐ下に表示
3. Fの値が1000以上のもので1セット、1000〜0のもので1セット、-のもので1セット作る
というものがあります。
1.と2.はネットで検索した結果なんとかなりそうだというのはわかったのですが、
最後の3.を達成するために、クリスタルレポートで選り分けすることは可能でしょうか?
その際、ページ数を各セットごとにカウントすることは可能でしょうか?
いざとなったらvb.net側でデータを選り分けて3回実行しようかとは思っているのですが、
もしクリスタルレポートで簡単に可能であればやり方を教えていただけないでしょうか?
わからないことが多くて申し訳ありませんが、宜しくお願いいたします。
グループヘッダが表示されない
初心者 - 2007/10/05(Fri) 13:42 No.3336
はじめまして。
現在、以下のような構成で開発をしています
グループ1(会社コード)・・・・・・・・・・・・・・・・・タイトルのみ
商品コード
商品名
価格
・
・
・
グループ2(部門コード)
グループ3(商品コード)
詳細・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・明細
商品コード
商品名
価格
・
・
・
グループ3
グループ2・・・・・・・・・・・・・・・・・・・・・・・・・・小計
商品コード
商品名
価格
・
・
・
グループ1・・・・・・・・・・・・・・・・・・・・・・・・・・総合計
商品コード
商品名
価格
・
・
・
縦から横に印刷で設定しています。
グループ1の設定で「毎ページごと印刷する」にチェックし
グループ2のフッタで「印刷後に改ページ」にチェックをしています。
通常時は、問題ないのですが、
最終ページに総合計のみだった場合、
グループ1のヘッダが印刷されません。
どのようにすれば、総合計のみでも印刷されますでしょうか。
よろしくお願いいたします。
複数のテーブル(クエリ・ビュー)した追加場合に抽出した内容が表示されない・・・
飯田 - 2007/10/03(Wed) 16:50 No.3331
たびたびお世話になります。。。
24x7様昨日はお世話になりました。。。
昨日、グループ化で、解決した!かと思ったのですが・・・
再び別の問題が発生してしまいました・・・
問題というのは、ここでも何度か質問にでている
抽出後のデータセット、またはデータテーブルを
印字するというものです。
ただし、条件がちょっと違います・・・
現在書いている方法では
このようなソースを記述しています。
************************************************************
Dim dt As New DataTable
Dim sqlString As String
Dim Data_Set = New DataSet
Dim oCommand As New OleDbCommand
Dim rp As New CrystalReport1
Dim i As Integer
oCommand = oConn.CreateCommand()
sqlString = "SELECT * FROM 詳細クエリ WHERE 部署='東京A'"
oCommand.CommandText = sqlString
Dim Ole_Adp_Sizai1 = New OleDbDataAdapter(oCommand)
Ole_Adp_Sizai1.Fill(dt)
dt.TableName = "tbl1"
Data_Set.Tables.Add(dt)
'rp.SetDataSource(Data_Set) <--この記述でも問題ないはず(?)
rp.SetDataSource(dt)
************************************************************
ここで、ビューとしてアクセスのクエリを
もう1つ追加しました。
その場合、フィールドエクスプローラ上の
データベースフィールドは2つのクエリが表示されている状態です。
(1)詳細クエリ(詳細を表示するよう
------------------------------------
"SELECT * FROM テーブル"
------------------------------------
(2)カウントクエリ(カウント用)
------------------------------------
SELECT 部署,フラグ,count(フラグ) AS カウント
FROM テーブル
GROUP BY 部署,フラグ
HAVING (フラグ)=True
------------------------------------
この状態で、実行すると、全てのデータが表示されてしまいます。
デザイン時には
「詳細クエリ」を使ってデザインしています。
データベースを追加する際には OLE DB(ADO)を選択して
mdbファイルを選択しています。
フィールドエクスプローラ上に1つのテーブル(クエリ・ビュー)がある場合には
上記のソースで、抽出したデータを表示できたのですが、
複数のテーブル(クエリ・ビュー)がある場合には、どのように
行えばよろしいのでしょうか・・・?
複数テーブルの場合過去ログに無く悩んでおります・・・
お助け願いますm(__)m
- Re: 複数のテーブル(クエ...
24x7 - 2007/10/04(Thu) 12:13 No.3332
.NET のコードはよくわかりませんが、
一般的にレポートで複数テーブルを利用する場合、そのテーブルはリンクすると理解しています。
旧バージョンから複数テーブルをリンクしないでデザインすると警告メッセージが表示されていました。また、ランタイムからそれぞれのデータベース接続情報は引き渡すことができないと思います。
そのため、メインとサブレポートにそれぞれ分けて処理することになると思います。
- Re: 複数のテーブル(クエ...
飯田 - 2007/10/04(Thu) 17:25 No.3334
- 24x7様
ご返信・ご情報ありがとうございます。
そうでしたか・・・
仕方が無いのでクエリを追加しサブレポートで実現しました。
メインレポート用に
各部署毎にグループ化した集計クエリ
サブレポートはそのままです。
メインレポートとサブレポートを
部署でリンクさせ
メインレポートは部署でグループ化させ
グループヘッダ出力前に改ページプロパティをTrueにし
なんとか形になりました。
もちろんサブレポートの参照先ファイルは変更してます。
形にこだわるとなかなかうまくいかないものなのですね・・・
別の方法であっけなくできてしまいました。。。
(><)
また何かありましたらよろしくお願いいたします。
ページヘッダでの集計表示
飯田 - 2007/10/02(Tue) 19:10 No.3327
以前、大変お世話になりました。
またしてもお世話になります・・・
クリスタルレポートで
以下の様なレポートを作成しようとしております。
レポート1枚目
======================================================================
部署: 東京A カウント:2
項目A 項目B フラグ
______________________________________
1234 1234 True
1235 1235 False
1236 1237 True
レポート2枚目
======================================================================
部署: 東京B カウント:1
項目A 項目B フラグ
______________________________________
2234 2234 False
2235 2235 False
2236 2237 True
このデータに対応するのは
-----------------------------------------
部署 項目A 項目B フラグ
-----------------------------------------
東京A 1234 1234 True
東京A 1235 1235 False
東京A 1236 1237 True
東京B 2234 2234 False
東京B 2235 2235 False
東京B 2236 2237 True
-----------------------------------------
なのですが
部署のグループ化や改ページはできたのですが
「フラグの集計方法」がページヘッダにあるため、
集計ができず、困っております・・・
WhilePrintingRecordsや
積算合計を利用すればできるというところまでは
解ったのですが、利用方法がわからず苦戦しております。
評価の式に
if {フラグ} = true then
true
else
false
などと書いてもダメです。。。
グループヘッダや、ページフッターに貼り付ければ
うまいこと集計してくれるようなのですが・・・
お助け願えますでしょうか・・・
- Re: ページヘッダでの集計表示
飯田 - 2007/10/02(Tue) 19:12 No.3328
>>グループヘッダや、ページフッターに貼り付ければ
一部間違えました。
× グループヘッダや、ページフッターに貼り付ければ
○ グループフッターや、ページフッターに貼り付ければ
よろしくお願いいたします。
- Re: ページヘッダでの集計表示
24x7 - 2007/10/02(Tue) 23:54 No.3329
- グループフッターで実現するのが簡単だと思います。
評価対象よりも先に表示させることはできないので、積算合計フィールドでも実現できません。
この場合、カウンタの表示をサブレポートで実現することになると思います。
同じテーブルを利用して、グループヘッダーにサブレポートを挿入して、
以下の3つの式フィールドを作成します。
1. レポートヘッダー
WhilePrintingRecords;
numberVar cnt:=0;
2. 詳細
WhilePrintingRecords;
numberVar cnt;
if {フラグ} = true then
cnt:=cnt+1
else
cnt:=cnt
3. レポートフッター
WhilePrintingRecords;
numberVar cnt;
レポートフッター以外は、すべて非表示とします。
メインとサブレポートは、部署でリンクします。
サブレポートは、以下の「n」部分だけ表示するようにサイズを調整します。
部署: 東京B カウント:「1」
- Re: ページヘッダでの集計表示
飯田 - 2007/10/03(Wed) 10:27 No.3330
うーん。そうでしたか・・・・
できれば、サブレポートは使わいたくなかったため
積算合計を使ってみたかったのですがダメですか^^;
いちおう、妥協案として解決した方法を
載せておきます。
先ほどのテーブルに
部署とフラグでグループ化するクエリを吐き
HAVINGでTrueのもののみ抽出し
カウントでTrueの個数を集計します。
SELECT 部署,フラグ,count(フラグ) AS カウント
FROM テーブル
GROUP BY 部署,フラグ
HAVING (フラグ)=True
このクエリを追加しカウントのフィールドをヘッダに貼り付けます。
この時にデータベースエキスパートが表示される(?)と思うので
リンクを部署のみにします。
矢印の方向が逆向きにならないように注意します。
(逆の場合は矢印を右クリックし逆方法にリンクさせます。
逆向きになっていると、カウントが1以上のものしか表示されなくなってしまいます。)
(右クリックでデータベース>ビジュアルリンクエキスパートでも表示可能)
このままでは カウントが0の場合に何も表示されないので、
テキストフィールドを追加し、0と表示
カウントがNullの場合に表示、1以上の場合非表示とします。
これで一応要件は満たせました・・・
他にいい方法がありそうですが・・・
というわけで、よろしくお願いいたします。
TextObject内の文字色の変更に関して
かいこと - 2007/10/01(Mon) 17:29 No.3326
初めて投稿させていただきます。
開発環境
・VS2003CrystalReport
・OS:WindowsXP
・ASP.NET+VB.NET2003
・CR XI
今、テキストオブジェクトに表示する文字列の、
ある特定部分の文字色をプログラム中から変更したいと思っています。
※テキストオブジェクトに表示する文字列全部の色変更は可能でした。
--
abcedfghjiklmn
~~~~~~~
↑
文字色を変更したい
--
レポートファイルに配置したテキストオブジェクトの文字列を直接選択し、
テキストの書式設定を行えば、選択した文字列のみの色の変更は可能です。
ということは、プログラム中からも可能なのではと思っています。
以上、何とぞご教授をお願いいたします。
PDF出力後のページサイズについて
せい - 2007/09/27(Thu) 02:02 No.3325
初めて投稿させていただきます。
開発環境
・VS2005付属のCrystalReport
・OSはWindowsVista
・ASP.NET+VB.NET2005
使用しているプリンターはテレフォンカードサイズのカードを印刷するプリンターです。
レポートを作成する際、CrystalReport→デザイン→プリンタの設定 でカードサイズになるよう設定し、
レポートプレビュー画面でカードサイズに作成されていることを確認しています。
※サーバにはカード印刷用のプリンタとは接続していません(ドライバもインストールしていない)。
処理内容としては
1)クライアントからHTTPで接続し、レポート作成指示を行い、内部でPDFを出力
2)作成したPDFをポップアップで画面に表示(例:http://***SVR/PDF/test.pdf)
3)ポップアップ画面からカードに印刷
デバッグでは、このPDFをポップアップ表示すると、設定したページサイズで表示されます。
しかし、クライアントからPDFの作成指示を行うとA4サイズで作成されて表示されます。
※クライアントにはカード印刷用のプリンタを「通常使うプリンタ」に設定しています。
クライアントからもカード印刷用のプリンタのサイズまたは、CrystalReport→デザイン→プリンタの設定 で
設定したカードサイズで表示されるよう、正しくPDFを作成することはできないのでしょうか?
知識不足ですいません。
ご存知の方、よろしくおねがいいたします。
無題
モアイ - 2007/09/20(Thu) 14:49 No.3319
- いつも参考にさせていただいております。
■環境
Windows 2000 Pro. SP4
Visual Basic 6 SP6
Crystal Report 9 SP6
下記のようなレポートを作成しています。
A支店 取引先A 事務所A 9,999 999,999,999,999
事務所B 9,999 999,999,999,999
事務所C 9,999 999,999,999,999
-----------------------------------------------
小 計 9,999 999,999,999,999 → グループ フッター #2
取引先毎に集計
◆
取引先B 事務所D 9,999 999,999,999,999
事務所E 9,999 999,999,999,999
-----------------------------------------------
小 計 9,999 999,999,999,999
---------------------------------------------------------
支店合計 9,999 999,999,999,999 → グループ フッター #1
支店毎に集計
B支店 取引先C 事務所A 9,999 999,999,999,999
事務所B 9,999 999,999,999,999
事務所C 9,999 999,999,999,999
-----------------------------------------------
小 計 9,999 999,999,999,999
→グループ フッター #1
取引先の出力が1件の場合は
出力しない
■質問1
B支店のように、取引先の出力件数が1件の場合は、支店合計を
出力しないようにする為には、どのようにしたら宜しいのでしょうか。
■質問2
式を使用して、支店名(A支店など)の重複表示を抑制したのですが、
「◆」の場所で、改ページが行われた場合、支店名を表示することが
出来無くなってしまいました。
改ページ後に表示する方法はありませんでしょうか。
以上、2点について何とぞ、ご教授をお願いいたします。
- Re: 無題
24x7 - 2007/09/21(Fri) 09:32 No.3321
- ■質問1
B支店のように、取引先の出力件数が1件の場合は、支店合計を
出力しないようにする為には、どのようにしたら宜しいのでしょうか。
グループフッター#1の非表示の条件式で同一グループ内の件数が1ならTrueになるような式を挿入してみてください。
例えば、以下のような式です。
Count({xxxx},{グループ#1} =1
あるいは、手動でカウントすることもできます。
- Re: 無題
24x7 - 2007/09/21(Fri) 09:35 No.3322
- ■質問2
式を使用して、支店名(A支店など)の重複表示を抑制したのですが、
「◆」の場所で、改ページが行われた場合、支店名を表示することが
出来無くなってしまいました。
改ページ後に表示する方法はありませんでしょうか。
グループの変更から改ページ毎にグループヘッダーを出力するように設定してみてください。
不要なグループヘッダーも表示されると思いますが、そのときは、非表示できる条件を考えます。
- Re: 無題
モアイ - 2007/09/21(Fri) 16:40 No.3323
24x7様 ご回答いただきまして、有難う御座いました。
返信が遅くなり申し訳ありませんでした。
質問1については、ご教授頂きました式の方法で、思い通りの内容にすることが出来ました。
質問2なのですが、私の書き方がいけなかったようで申し訳ありません。
> グループの変更から改ページ毎にグループヘッダーを出力するように設定してみてください。
> 不要なグループヘッダーも表示されると思いますが、そのときは、非表示できる条件を考えます。
とご回答頂きましたが、「A支店 取引先A 事務所A ・・・」は『詳細』の場所にある為、
グループヘッダーでは出来ませんでした。
グループ ヘッダー #1 ・・・ 非表示
グループ ヘッダー #2 ・・・ 非表示
詳細 ↓
A支店 取引先A 事務所A 9,999 999,999,999,999
事務所B 9,999 999,999,999,999
事務所C 9,999 999,999,999,999
詳細 ↑
グループ フッター #2 ↓
----------------------------------------------
小 計 9,999 999,999,999,999
グループ フッター #2 ↑
◆
詳細 ↓ → 上記の出力後に余白が無く、改ページが行われた場合は以下のように出力したい
取引先B 事務所D 9,999 999,999,999,999 A支店 取引先B 事務所D 9,999 999,999,999,999
事務所E 9,999 999,999,999,999 事務所E 9,999 999,999,999,999
詳細 ↑
グループ フッター #2 ↓
----------------------------------------------
小 計 9,999 999,999,999,999
グループ フッター #2 ↑
グループ フッター #1 ↓
---------------------------------------------------------
支店合計 9,999 999,999,999,999
グループ フッター #1 ↑
ちなみに、「A支店」出力での重複データの非表示は、以下の式を用いております。
If PreviousIsNull ({帳票.支店名}) = True Then
{帳票.支店名}
Else
If {帳票.支店名} = Previous({帳票.支店名}) Then
""
Else
{帳票.支店名}
ご教授をお願いいたします。
- Re: 無題
24x7 - 2007/09/24(Mon) 13:30 No.3324
- 支店でグループ化することで実現できると思います。あまり、詳細セクションにこだわる必要はなく、表示や印刷した結果イメージで判断したほうがよいと思います。
グループフッタのアンダーレイの方法
でこ - 2007/09/17(Mon) 21:15 No.3310
- お世話になります。
VS2005付属のCrystalReport(Crystal Reports for Visual Studio 2005)を使っています。(OSはWindows2000ProでVB.NET2005(SP1)で開発しています。)
グループを1つ使った帳票で、
・グループヘッダ
・詳細
・グループフッタ
・ページフッタ
とセクションを組んでいます。
(レポートヘッダとレポートフッタは使わないので空にしています。本当はセクションごと消したいのですが...)
グループフッタの出力をページフッタに重ねようと、グループフッタにアンダーレイをかけたのですが、
どうも重なってくれず、グループフッタの高さ分、下がってページフッタが表示されてしまいます。
何かチェックしたほうがよいことがありましたら、ぜひご教示ください。
もしかして、グループフッタとページフッタの間にある、消せないレポートフッタがあるゆえに、この2セクションどうしはアンダーレイできないのでしょうか?
(情報不足でしたら、ご指摘下さい。)
- Re: グループフッタのアン...
24x7 - 2007/09/18(Tue) 09:13 No.3312
- レポートヘッダとレポートフッタは使わないので空にしています。本当はセクションごと消したいのですが...)
レポートヘッダーとレポートフッターは、セクションごと非表示に設定することで表示する際には消えます。
または、上下どちらかのセクションにピタリとくっつけることでもそのセクションは表示されません。
グループフッタの出力をページフッタに重ねようと、グループフッタにアンダーレイをかけたのですが、
どうも重なってくれず、グループフッタの高さ分、下がってページフッタが表示されてしまいます。
何かチェックしたほうがよいことがありましたら、ぜひご教示ください。
グループ毎に改ページしていませんか?
改ページさせているとアンダーレイは期待した結果になりませんよ。
もしかして、グループフッタとページフッタの間にある、消せないレポートフッタがあるゆえに、この2セクションどうしはアンダーレイできないのでしょうか?
レポートフッターは、レポートで1回しか(最終ページ)しか表示されないので関係ないでしょう。
- Re: グループフッタのアン...
でこ - 2007/09/19(Wed) 10:09 No.3315
早速有難う御座います。
お蔭様で
レポートヘッダ・フッタにつきまして、うまく非表示にすることが出来ました。
アンダーレイの件ですが、
グループセクションの改ページは入れていない設定にしてみましたが
残念ながらうまくアンダーレイされませんでした。
「セクションエキスパート」の設定は、
レポートヘッダ:非表示-ドリルダウン不可、まとめて表示
ページヘッダ:まとめて表示(強制)
グループヘッダ:なし
詳細:なし
グループフッタ:続くセクションをアンダーレイ
ページフッタ:ページ下部へ出力(強制)、出力後に改ページ(強制)、まとめて表示(強制)
レポートフッタ:非表示-ドリルダウン不可
にチェックを入れています。(強制)の個所は、固定でチェックされており外すことができない項目です。
式設定は、どこにも入れていません。
もはや、一からプロジェクトを作り直したほうが早いかな、とも思っています。
他にも何か確認点がありましたら、ぜひご教示下さい。
- Re: グループフッタのアン...
24x7 - 2007/09/19(Wed) 11:08 No.3316
- ページフッターは、「ページ下部へ出力」がデフォルトだから、アンダーレイにならないのではないですか。
この場合、ページフッターの替わりにグループフッターを挿入して、対処することになると思います。
- Re: グループフッタのアン...
24x7 - 2007/09/19(Wed) 11:16 No.3317
1. グループフッターの下にもう1つグループフッターを挿入します。
2. グループフッターb は、「出力後に改ページ」をチェックします。
3. ページフッターに挿入したものをすべてグループフッターb に移動します。
ページフッターは利用しないことになります。
レポートのデザイン的に期待した結果になるかわかりませんが・・
- Re: グループフッタのアン...
でこ - 2007/09/19(Wed) 17:23 No.3318
ご教示有難う御座います。
早速試してみましたところ
1aと1bとでアンダーレイはうまく動作してくれましたが、
グループ単位でのフッタ印字になってしまったため、
各ページに印刷したい固定のフッタが
印字されないページが出来てしまいました。
データソースに手を加えて、
もう1つページ単位のグループをつくって実現するなど必要な気がしてきました。
CrystalReportは、なかなか致し痒しです。。
- Re: グループフッタのアン...
24x7 - 2007/09/21(Fri) 08:55 No.3320
- レポートのイメージがよくわかりませんね。
もともと、グループフッターとページフッターを重ねて表示させることだとおもいました。グループフッターaとbで実現できたと思いますが・・
>各ページに印刷したい固定のフッタが
>印字されないページが出来てしまいました。
この部分は、ページフッターに挿入することでは期待したイメージにはならないということでしょうか。
CRViewerオブジェクトを使用したい
こう - 2007/09/15(Sat) 18:45 No.3309
Crystal Report 8.5からXIに移行しています。
CRViewer オブジェクトを使用したいと思ったのですがCRVIEWER.DLLを参照して
いるのにもかかわらずCrystal Report Viewer ActiveX コントロールが追加されません。何故なんでしょう?
どなたかご教授いただけないでしょうか。
OS:Windows XP
DB:Oracle 10g
言語:VB6.0
- Re: CRViewerオブジェクト...
24x7 - 2007/09/18(Tue) 08:57 No.3311
- VBプロジェクト内の参照設定から「Crystal ActiveX Report Viewer Library 11.0」ga
存在し、チェックされていることが必要です。
- Re: CRViewerオブジェクト...
こう - 2007/09/18(Tue) 11:29 No.3313
- ありがとうございます。
参照設定はチェックできているのですが、コントロールが表示されません。
何故なんでしょう?
- Re: CRViewerオブジェクト...
24x7 - 2007/09/18(Tue) 13:28 No.3314
- コンポーネントのコントロールタブでも同じようにチェックがないとコントロールは表示されません。
フォントサイズ変更方法
石 - 2007/09/13(Thu) 09:55 No.3305
CrystalReports.NET(2003)にてシステムを作成していますが、どうしてもテキストオブジェクトのフォントサイズをVBコードから変更させることができません。どうかご教授お願いいたします。
- Re: フォントサイズ変更方法
クリレポ初心者 - 2007/09/15(Sat) 03:11 No.3308
- テキストボックス等を変えるプロパティとかなかったような気がします。
CrystalReportViewerのタブについて
mori - 2007/09/13(Thu) 20:50 No.3307
- はじめまして。
XP、VS2005(C#)のCrystal Reportを使用しています。
Form上にCrystalReportViewerを配置し、
プレビュー表示させています。
クリスタルにサブレポートを配置しているのですが、
配置されている部分をクリックすると、タブが追加されてしまいます。
サブレポートをクリックした際に展開されないようにするには
どうすればよいのでしょうか?
もしくは、このタブを非表示にすることは可能でしょうか?
どなたかご教授いただけないでしょうか。
よろしくお願いします。
しょぼい質問ですが・・・
てる - 2007/09/12(Wed) 23:05 No.3304
- .NETでなく、VB6.0でCrystalreport4.6を使用しているのですが、ページ毎に明細金額の集計をとりたいのですが、小計を明細の伝票日付で集計しています。同じレベルでなくページ毎に集計をとる方法ありませんか。できればフッターにページ計を出したいです。
- Re: しょぼい質問ですが・・・
gry - 2007/09/13(Thu) 15:17 No.3306
各セクションに式フィールドを追加して以下のような内容の式で
集計できると思います。ちょっと泥臭いですが^^;
ヘッダ
WhilePrintingRecords;
NumberVar sum_money;
sum_money := 0;
ディティール
WhilePrintingRecords;
NumberVar sum_money;
sum_money := sum_money + 100;
フッタ
WhilePrintingRecords;
NumberVar sum_money;
sum_money;
ヘッダの式で零クリア、ディティールで集計、フッタは出力(表示)みたいな。
間違ってたらすみません。
複数のパラメータを渡すには?
トッチー - 2007/09/08(Sat) 13:49 No.3296
VB.NET2003及び付属しているCrystalReport+Accessです。
二つのコンボボックス(cmbStart・cmbEnd)があり、
パラメータ a,bを設定してあります。
選択エキスパートには「{帳票作成.DVDナンバー} in {?a} to {?b}」
が設定してあります。
(?aのcmbStart.texrと?bのcmbEnd.text大小比較は関数の呼び出し前に
cmbStart.text<cmbEnd.textになるように入れ替えをしてあります。)
それで、プレビュー画面をロードする関数ですが、
Private Sub Report_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim rp As New RecordReport_2 '対象レポート名
Dim fm As frmvideoPrint '呼び出し元フォーム名
Dim pf As New CrystalDecisions.Shared.ParameterField 'Parameterfield
Dim pfs As New CrystalDecisions.Shared.ParameterFields 'Parameterfields
Dim pv As New CrystalDecisions.Shared.ParameterDiscreteValue 'パラメータの値
Dim pf2 As New CrystalDecisions.Shared.ParameterField 'Parameterfield
Dim pfs2 As New CrystalDecisions.Shared.ParameterFields 'Parameterfields
Dim pv2 As New CrystalDecisions.Shared.ParameterDiscreteValue 'パラメータの値
'呼び出し元をアクティブにする
fm = MainMenu.ActiveForm
pf.ParameterFieldName = "a" 'パラメータ名
pv.Value = fm.cmbStart.Text
pf.CurrentValues.Add(pv)
pfs.Add(pf)
rptViewer.ParameterFieldInfo = pfs
pf2.ParameterFieldName = "b" 'パラメータ名
pv2.Value = fm.cmbEnd.Text
pf2.CurrentValues.Add(pv2)
pfs2.Add(pf2)
rptViewer.ParameterFieldInfo = pfs2
'プレビュー
rptViewer.ReportSource = rp
rptViewer.Zoom(1)
End Sub
において、?aは読み込んでくれますが、?bはパラメータを入力する画面が表示されます。
コンボボックスに選択された値が、入力画面を通さずに渡すには、上記コードのどこを修正したらよろしいでしょうか?
よろしくお願いいたします。
- Re: 複数のパラメータを渡...
クリレポ初心者 - 2007/09/12(Wed) 05:35 No.3302
参考になるか分かりませんが、私の場合複数パラメータ渡しに以下のロジックを使ってます。複数パラメータでも問題なく渡せています。
Dim repoDoc As New CrystalDecisions.CrystalReports.Engine.ReportDocument
Dim paramFieldDefinitiongs As CrystalDecisions.CrystalReports.Engine.ParameterFieldDefinitions
Dim paramFieldDefinitiong As CrystalDecisions.CrystalReports.Engine.ParameterFieldDefinition
Dim paravalue As CrystalDecisions.Shared.ParameterValues
Dim paraDuscrete As CrystalDecisions.Shared.ParameterDiscreteValue
paramFieldDefinitiongs = testReport.DataDefinition.ParameterFields
'** レポートファイルに作成したパラメータフィールドの名前を指定
paramFieldDefinitiong = paramFieldDefinitiongs.Item("parm1")
paravalue = paramFieldDefinitiong.CurrentValues
paraDuscrete = New CrystalDecisions.Shared.ParameterDiscreteValue
''** パラメータフィイールドに渡す値をセット
paraDuscrete.Value = "a"
paravalue.Add(paraDuscrete)
paramFieldDefinitiong.ApplyCurrentValues(paravalue)
'----------
'** レポートファイルに作成したパラメータフィールドの名前を指定
paramFieldDefinitiong = paramFieldDefinitiongs.Item("parm2")
paravalue = paramFieldDefinitiong.CurrentValues
''** パラメータフィイールドに渡す値をセット
paraDuscrete.Value = "b"
paravalue.Add(paraDuscrete)
paramFieldDefinitiong.ApplyCurrentValues(paravalue)
- Re: 複数のパラメータを渡...
トッチー - 2007/09/12(Wed) 20:00 No.3303
- ご回答ありがとうございました。
> '** レポートファイルに作成したパラメータフィールドの名前を指定
paramFieldDefinitiong = paramFieldDefinitiongs.Item("parm1")
paravalue = paramFieldDefinitiong.CurrentValues
paraDuscrete = New CrystalDecisions.Shared.ParameterDiscreteValue
''** パラメータフィイールドに渡す値をセット
paraDuscrete.Value = "a"
paravalue.Add(paraDuscrete)
paramFieldDefinitiong.ApplyCurrentValues(paravalue)
この辺が肝のようですね。
あと、MSDNを見たら離散値ではなく範囲値を使ったらいいみたいでした。
失礼いたします。
インストーラー作成でエントリ破壊?
クリレポ初心者 - 2007/09/12(Wed) 03:57 No.3301
- VS2005、VB.NETでクリスタルレポートを使っています。
開発プロジェクトでうまく動くので、VB,NETでマージモジュールを含んだ配布パッケージを作成しました。
その配布パッケージを開発環境のあるPCでインストールすると、以降開発プロジェクトの中にあるクリスタルレポート関連のフォームが開けなくなります。
クリスタルレポート関連のエントリが破壊されたように見えるのです。
VS2005の再インストールで再度扱えるようになります。とりあえず、開発と実行モジュールチェックのPCを別にしているのですが、開発用PCでインストールモジュールのチェック
まで行える方法はあるのでしょうか。
また、同様の現象が発生している人はいませんでしょうか。
エクスポート エラー
初心者 - 2007/09/11(Tue) 11:11 No.3299
- aspでクリスタルレポートをPDFにエクスポートして表示する処理を作っています。
ローカル環境では問題なく動いていたのですが
本番環境では
oRpt.Export False
でエラーが出ています。「例外が発生しました。」
そしてその後エクスポートされたファイルはほかのアプリケーションで使用されています等のメッセージが表示され消さなくなります。
アクセス権等の問題でしょうか?
該当フォルダのプロパティで「書き込み」はチェック済みです。
- 環境 -
Windows XP
asp
Crystarl Reports XI
SQLServer
- Re: エクスポート エラー
24x7 - 2007/09/11(Tue) 13:42 No.3300
- .net わかりませんが、PDFファイルを書き込むフォルダだけでなく、TEMPファイルを書き込むフォルダのアクセス権限も確認してみてください。
えくすピーと
初心者 - 2007/09/11(Tue) 10:55 No.3298
- 環境 -
Windows XP
asp
Crystarl Reports XI
SQLServer
ビットマップイメージの印字
佐藤 - 2007/08/08(Wed) 17:03 No.3246
DBに画像のフルパスを格納し、ページごとに異なった画像を印字する帳票を
クリスタルレポートを使用して作成し、VBのアプリをから帳票印刷を行いたいのですが。
クリスタルレポートで作成した帳票を、印刷プレビューで確認すると、それぞれのレコードに格納した画像のフルパスで取得してきた
画像が表示され印字されるのですが、同じ帳票ををVB側から印字させるとテーブルから取得してきたパスの画像が正常に印字されません。
VBから印字を行う際になにか、必要なことがあるのでしょうか?
- クリスタルレポートの設定 -
・OLEオブジェクト(Picture1)を配置し、グラフィックの書式のピクチャ(タブ名)にある、保存場所: の設定を画像のフルパスが格納してあるテーブルのフィールドを指定してあります。
- 環境 -
Windows XP
Visual Basic .NET 2003
Crystarl Reports XI
Oracle9i
- 原因が判明しました。
佐藤 - 2007/09/10(Mon) 11:38 No.3297
VB側でイメージを表示している場合、そのイメージファイルをクリスタルレポート側で
参照する場合に、参照できずに印字ができないことがわかりました。
インデックスが有効範囲にありません
むた - 2007/08/31(Fri) 18:20 No.3276
初めて投稿します。
VB6.0 SQLSERVER2005 クリレポ]Tを使って帳票を印刷することに
なり、いろんなサイトを見て印刷を試みていますが
「インデックスが有効範囲にありません」というメッセージが表示されます。
サイトを見る限りでは、他の方はこれで解決されているようですが、書き方が
おかしいのでしょうか?申し訳ありませんがご教授願います。
Dim CRApp As New CRAXDRT.Application
Dim report As CRAXDDRT.report
Dim ConnectProperty As CRAXDDRT.ConnectionProperty
Set report = CRApp.OpenReport(strReportNamewk, 1)
report.DiscardSavedData
Dim i As Integer
For i = 1 To report.Database.Tables.Count
'ODBCの場合
Set ConnectProperty = report.Database.Tables.Item(i).ConnectionProperties.Item("DSN")
ConnectProperty.Value = "123456"
↓この部分でエラーメッセージが表示されます
Set ConnectProperty = report.Database.Tables.Item(1).ConnectionProperties.Item("User Id")
↑メッセージ(インデックスが有効範囲にありません)
ConnectProperty.Value = "sa"
Set ConnectProperty = report.Database.Tables.Item(1).ConnectionProperties.Item("Pwd")
ConnectProperty.Value = "sa"
Next i
'レポート表示
CrystalActiveXReportViewer.ReportSource = report
Call Sleep(1000)
report.RecordSelectionFormula = strSelectFormula
CrystalActiveXReportViewer.ViewReport
Set CRApp = Nothing
Set report = Nothing
End Function
- Re: インデックスが有効範...
24x7 - 2007/08/31(Fri) 22:06 No.3277
- Dim CRApp As New CRAXDRT.Application
Dim report As CRAXDDRT.report
Dim ConnectProperty As CRAXDDRT.ConnectionProperty
記述ミスかなぁ?
"CRAXDRT"、"CRAXDDRT" どちらか1つにします。
混在は駄目です。
- Re: インデックスが有効範...
むた - 2007/09/03(Mon) 10:47 No.3278
- 24x7様
返信が送れて申し訳ありませんでした。
ご指摘の部分ですが、記述ミスでした。
従って混在はしていない状況です。ご迷惑をおかけしました。
Tables.Item(1)としていた部分をiに変更してみましたが、
これでも同じエラー(インデックスが有効範囲にありません)になりました。
- Re: インデックスが有効範...
24x7 - 2007/09/03(Mon) 23:34 No.3280
念のためにデータベースの接続に必要な接続プロパティが正しいか確認してください。
For Each ConnectProperty In Report1.Database.Tables(1).ConnectionProperties.Count
Debug.Print ConnectProperty.Name
Next
エラーの箇所は違いますが、パスワード("Password") が "Pwd" になっているところがあります。
- Re: インデックスが有効範...
24x7 - 2007/09/04(Tue) 23:26 No.3283
データベースの接続方法は、レポートのデザイン時と同じですよね。
ODBC と書いてあるけど、レポートは異なる接続方法を利用しているとか??
- Re: インデックスが有効範...
むた - 2007/09/05(Wed) 16:42 No.3286
- 24x7 様
この度はお手数をおかけしております。
接続プロパティの確認ですが、
For Each ConnectProperty In Report1.Database.Tables(1).ConnectionProperties.Count
Debug.Print ConnectProperty.Name
Next
と入力して実行したところ、「For Eachはコレクションオブジェクトまたは配列のみ繰り返しを実行します」とエラーが出てしまいました。
UserID部分をコメントにしておいて次に進めたところ、パスワード
部分はPwdでとおりました。
また、接続方法ですがレポートを作成する際にODBC(RDO)を選択しました。VBから呼び出す際は記述したものしか書いておりませんが、それがいけないのでしょうか?
- Re: インデックスが有効範...
24x7 - 2007/09/05(Wed) 23:05 No.3288
- 申し訳ございません。コード記述が間違っていました。
Dim ConnectProperty As CRAXDDRT.ConnectionProperty
For Each ConnectProperty In Report1.Database.Tables
(1).ConnectionProperties
Debug.Print ConnectProperty.Name
Next
上記コードから1テーブルのプロパティの内容が取得できます。
ODBC(Oracle)を利用しているとDSN, User ID, Password、UseDSNProperties と表示されたけど。
これは、開発者向けのヘルプに記述されています。
↓この部分でエラーメッセージが表示されます
Set ConnectProperty = report.Database.Tables.Item(1).ConnectionProperties.Item("User Id")
↑メッセージ(インデックスが有効範囲にありません)
"User"と"Id"の間は、半角スペースになっていますよね。
試したけど、全角スペースなら同じエラーになりました。
"User ID" でも問題なく動きました。
また、"Pwd"だと、同じエラーになりました。やはり、"Password"だと思います。
- Re: インデックスが有効範...
24x7 - 2007/09/05(Wed) 23:14 No.3289
また、コード間違えた。
Dim ConnectProperty As CRAXDRT.ConnectionProperty
For Each ConnectProperty In report.Database.Tables(1).ConnectionProperties
Debug.Print ConnectProperty.Name
Next
- Re: インデックスが有効範...
むた - 2007/09/06(Thu) 10:40 No.3290
- 24x7様
いつもご丁寧に本当にありがとうございます。
教えていただいたとおり実行いたしまして、以下が戻ってきました。
DSN Database Trusted_Connection UseDSNProperties
また、問題の部分をコメントで止めてPwd部分のチェックをしましたが、
ご指摘のとおりやはり"Password"でOKでした。
- Re: インデックスが有効範...
24x7 - 2007/09/06(Thu) 13:08 No.3291
- ConectionProperty に "User ID" が存在しないなら、
SQL認証とWindows認証の違いがあるかもしれませんね。
- Re: インデックスが有効範...
24x7 - 2007/09/06(Thu) 13:08 No.3292
- このプロパティで表示されるもの以外は、設定不要ということになります。
- Re: インデックスが有効範...
むた - 2007/09/07(Fri) 09:13 No.3294
- 24x7様
この度はありがとうございました。
すいませんがもう1点教えていただけないでしょうか?
開発環境PCからは問題なくレポートの印刷ができるのですが
配布環境(他のPC)で印刷を実行すると、
「ログオンに失敗しました。詳細:[データベース ベンダーコード:18456]
と表示されて印刷できません。
試しに配布環境にクリスタルレポート]Tのソフトをインストールしてレポートを表示しようとすると、必ずユーザIDとパスワードを
聞かれて、「信頼関係接続」をチェックしてもログオンに失敗します。
(パスワードを入力すると表示されます)
この辺りで何か設定が必要なのでしょうか?お手数をおかけしますが
ご教授の程、お願いいたします。
- Re: インデックスが有効範...
24x7 - 2007/09/07(Fri) 10:39 No.3295
- 開発環境で実行したときの connectionProperties の item と同じものとその値は設定されていますか。
「信頼関係接続」は、使ったことがないのでよくわかりませんが、以下のサイトにはサンプル記述があります。
http://technicalsupport.businessobjects.com/KanisaSupportSite/search.do?cmd=displayKC&docType=kc&externalId=c2012061&sliceId=&dialogID=7200031&stateId=1 0 7198202
http://technicalsupport.businessobjects.com/KanisaSupportSite/search.do?cmd=displayKC&docType=kc&externalId=c2012882&sliceId=&dialogID=7200031&stateId=1 0 7198202
report.Database.Tables.Item(1).ConnectionProperties.item("Trusted_Connection")=True
report.Database.Tables.Item(1).ConnectionProperties.item("User ID") =""
こんなような記述になるのではないですか。
DataGridViewをクリスタルレポートにて印刷
ピンキー - 2007/09/06(Thu) 18:26 No.3293
はじめまして。
VB.NET、SQLServer2005でクリスタルレポートにて帳票作成を行おうとしています。Windowsアプリケーションです。
画面にはDataGridViewが2つ配置されており、SQLからの結果を受け取って表示させています。
そこにボタンを配置しており、押すとクリスタルレポートのプレビュー画面に遷移するといった仕様にしたいと思っております。
SQL文ではたくさんのテーブルを連結したり、DataGridViewの中で計算をさせたりとしているので、DataGridViewを見たままクリスタルレポートに表示させたいのですが可能でしょうか?
データテーブルには検索結果しかありませんので、もしデータテーブルを持ってきたとしても計算結果が取得できないという状態になってしまいます。
それより以前に別画面である親画面のデータテーブルをクリスタルレポートの方で使用するにはどうしたらいいのかもわかりませんでした。
今の状態では親画面でSQLの結果はDataTableで取得しています。
取得方法は共通関数を使用していますので、パラメータ(SQL文)をそれに渡すとDataTable型で結果が返ってきます。
それをそのまま活かして表示させて計算部分は後でやるのがいいのか、DataGridViewに表示されているそのままを持ってくるのがいいのかそれも迷っています。
クリスタルレポート側↓(こんな感じでしょうか?それもよくわかりませんが・・・)
Public dataTable As DataTable
フォームロード処理()
Dim crReportDocument As CrystalDecisions.CrystalReports.Engine.ReportDocument
dataTable = [ここに親画面から持ってきたデータテーブルを取得したいです]
crReportDocument.SetDataSource(dataTable)
CrystalReportViewer1.ReportSource = crReportDocument
Me.Show()
親画面↓(SQL実行のところだけ抜粋しました。)
↓ここでSQLを実行し結果をBindDatatableで取得しています。
BindDatatable = _database.SelectCommand(SQL.ToString)BindingSource.DataSource = BindDatatable
DetailGrid.DataSource = BindingSource
DataGridViewにはバインドした結果を表示させています。
この次にクリスタルレポートへDataTableを渡せばいいのかなと思ってこんな感じで書いて見ましたが、もちろんエラーが出ます。下のdataTableってのはくリスたるレポートの方で宣言したDataTable型の変数なのですが・・・どうやってこっちに持ってきて書けばいいのかわかりませんでした。
dataTable = BindDatatable
初心者なのでもしかしたら的外れな質問をしているかもしれませんが、どうぞよろしくお願いいたします。
9からXIへの表示の差異?
ろん - 2007/09/05(Wed) 20:51 No.3287
- 毎度すみません。
質問でぃす。
VB2005 + CRXI R2 OS:Win2003
CR8.5または9.0で作成されたレポートテンプレートファイルをXIR2の環境下で開いて、プレビューを表示させると、
ボックスがずれたり、線が今まで表示されていなかったフッターエリアに表示されたりします。
構成は
レポートヘッダー
ページヘッダー (1ページ目、グループフッター#2−Bは 非表示)
グループヘッダー#1
グループヘッダー#2 縦線描画開始
グループヘッダー#3 データ表示部
詳細 (非表示 − ドリルダウン可) ドリルダウン用データ表示部
グループフッター#3 (非表示-ドリルダウン不可)
グループフッター#2-A 縦線描画終了 (改ページ)
グループフッター#2-B グラフ表示
グループフッター#1
レポートフッター
ページフッター
詳細をドリルダウンする前は、ちゃんと表示されているのですが、
ドリルダウンして詳細を表示すると、グループフッター#2-Bに、描画された縦線が表示されてしまいます。
かなりわかりずらいと思うのですが。。
XIに上げたときになにか異常が発生するというような情報がなかなかないのですが、これは、CR9で開かれる場合とXIで開かれる場合は表示はことなるものなのでしょうか?
縦書きフォント
やまさん - 2007/09/05(Wed) 11:22 No.3285
こんにちは。
ハガキ、封筒のPGを作成しているのですが、−(長音)がどうしても横のまま表示されてしまします。
原因がわかる方がいらっしゃったら、教えて頂きたいのですが...
ちなみに、フォントは縦書き用の「@MS明朝(日本語)」を使用し、プロパティのテキストの回転も270°になっています。
宜しくお願いします。
印刷できない
シデ - 2007/09/04(Tue) 16:07 No.3281
- いつも参考にさせていただいています。
VB:6.0
CrystalReport:8.0
DB:Oracle 8i
の環境なのですが
Win 2000では、印刷が出来るのに
XPでは、印刷が出来なくなってしまいました。
印刷プレビューは出力されるのですが。
どなたか原因わかりませんか?
- Re: 印刷できない
24x7 - 2007/09/04(Tue) 23:28 No.3284
- どのように印刷できないのか詳細に書かないとわからないと思います。
印字について
初心者 - 2007/09/03(Mon) 20:09 No.3279
いつも参考にさせていただいてます。
宜しくお願い致します。
OS:Windows XP
DB:Oracle 10g
クリレポ:Crystal Report XI
言語:VB.Net(2003)
出力プリンター: EPSON ESC/P 2001
現在、PrintOptions.PaperSizeにユーザー定義で作成した
用紙[連続紙](21cm×15.24cm)を指定し、
3台のPCから、同一データを1枚ずつ印字した所、
1枚は、完璧に印字され、2台目のPCからの印字は右にズレており、
3台目のPCからの印字は右上にズレて印字される現象に悩まされています。
なお、3枚印刷した結果より1枚目と2枚目の出力されたサイズは、
問題なく。3枚目だけ用紙サイズが大きくなって印字されているようです。
完璧に印字されたPCには、プリンターケーブルが接続されており、接続されている
プリンターを共有設定にし他2台が、参照し出力しています。
------------------------------------------------------------
クリスタルレポートは用紙サイズを名称ではなく値でもっている。
------------------------------------------------------------
↑正にこれが原因でしょうか?
しょうも無い質問で申し訳ありませんが、よろしくお願いいたします。
- Re: 印字について
24x7 - 2007/09/04(Tue) 23:24 No.3282
------------------------------------------------------------
クリスタルレポートは用紙サイズを名称ではなく値でもっている。
------------------------------------------------------------
↑正にこれが原因でしょうか?
そうだと思います。
それぞれの動作環境で設定された用紙サイズの値がどの用紙サイズに対応しているか調べてみたらどうですか。
以下のリンクが役立つと思います。
http://japan.businessobjects.com/support/crystalreports9/faq_dev.asp#dev_paper
http://support.microsoft.com/kb/282474/ja
DBに列を追加後、クリレポを配布すると追加したデータが表示されない
ひろ - 2007/08/31(Fri) 10:12 No.3275
- crystal reports V11を使用しています。
クリレポはVB.NETより起動し、画面表示または印刷を行っています。
すでに配布したレポートが使用するDBに列を追加し、レポート上にもデータベースフィールドとして追加しました。
開発環境では追加されたフィールドが表示されるのですが、配布先で実行すると、表示されません。
どのようにすれば、配布先でも追加されたデータベースフィールドの値を表示することができるでしょうか?
ご存知の方は、お教えください。宜しくお願いします。
データオブジェクトが無効のエラー
まっちゃん - 2007/08/30(Thu) 18:37 No.3274
開発環境:vb.net 2005
crystal reports for .net2005です。
マージモジュールも組み込みインストーラを作成して配布しましたが、
一部マシンでレポートの出力をしたところ、下記エラーがでます。
正常に出力できるマシンもあるのでなにかしらのdllの登録がおかしいと思うのですが、
どうしたらいいのか、教えてください。
Just-In-Time (JIT) デバッグを呼び出すための詳細については、
ダイアログ ボックスではなく、このメッセージの最後を参照してください。
************** 例外テキスト **************
CrystalDecisions.CrystalReports.Engine.DataSourceException: データ ソース オブジェクトが無効です。
場所 CrystalDecisions.CrystalReports.Engine.Table.SetDataSource(Object val, Type type)
場所 CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSourceInternal(Object val, Type type)
場所 CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSource(Object dataSet)
場所 ERP販売管理システム.frmNyukinKakunin.Button1_Click(Object sender, EventArgs e)
場所 System.Windows.Forms.Control.OnClick(EventArgs e)
場所 System.Windows.Forms.Button.OnClick(EventArgs e)
場所 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
場所 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
場所 System.Windows.Forms.Control.WndProc(Message& m)
場所 System.Windows.Forms.ButtonBase.WndProc(Message& m)
場所 System.Windows.Forms.Button.WndProc(Message& m)
場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
ページ別のレイアウトを変える方法
RIN - 2007/08/29(Wed) 18:03 No.3271
- Crystal Report 6 を使用しています。
納品書を作成したいと思っています。
得意先でグループ化を行い、1ページ目は自社名をヘッダーに表示し、
もし、2ページ目以降がある場合は自社名を出さないようにしたいです。
明細用のレイアウトを行っており、線など使用しているために、
1ページ用と2ページ以降用のページヘッダーを作成し、ページ数を参照し
非表示の式で対応しようとしていました。
ページヘッダーA --非表示式 IF PAGENUMBER <> 1 THEN TRUE
*1ページ用の自社名及び明細タイトル
ページヘッダーB --非表示式 IF PAGENUMBER <> 1 THEN TRUE
*1ページ用の明細用に使用する線レイアウト *アンダーレイ
ページヘッダーC --非表示式IF PAGENUMBER = 1 THEN TRUE
*2ページ用の明細タイトル
ページヘッダーD --非表示式IF PAGENUMBER = 1 THEN TRUE
*2ページ用の明細用に使用する線レイアウト *アンダーレイ
グループ 顧客 ヘッダー *非表示
明細
グループ 顧客 テール *非表示 改ページ
ページフッター
上記のようにやったのですが、クリスタルレポート側のプレビューで
『ヘッダーとテールの合計サイズがおおきすぎます』
のエラーが出ます。
イメージしている様に非表示が動けば用紙サイズオーバーは起こるはずは
ないのですがメッセージが出てしまいます。
ためしに、1ページ用と2ページ用を分離して表示させたら特に問題ありませんでした。
おそらく非表示の部分がうまくいってないような気がします。
どうしたら、イメージ通りにいきますでしょうか?
宜しくお願い致します。
- Re: ページ別のレイアウト...
24x7 - 2007/08/29(Wed) 22:02 No.3272
- 非表示の部分もサイズに加算されているとか?
試しに、非表示部分となるセクションは何も挿入しないで、色だけつけて、さらにサイズを小さくしてから表示してみてください。
エラーがなくなれば、非表示部分も加算されていることになるのでは?
- Re: ページ別のレイアウト...
RIN - 2007/08/30(Thu) 09:21 No.3273
- 24×7様ありがとうございました。
おそらく言われているとおりだと思います。
別の方法を考えてみます。
最終行の値取得方法
clm26 - 2007/08/28(Tue) 17:31 No.3269
Crystal Report 6 を使用しています。
下記帳票イメージの時、※1 を「456」と表示するにはどのようにすればよろしいでしょうか。
要するに、「残高」で数値が入っている最終行の数値を※1 に表示したいということです。
最初、「残高」に式を挿入し、その式に「If 残高 <> 0 Then 残高」といった式を記述したら、※1 は
「0」が表示されました。
当たり前ですが...(最終行の「0」がセットされてしまったので)
売上日 | 品名|・・・|残高
------+----+------+
08/01 | A |・・・| 123
08/02 | B |・・・| 456
08/03 | C |・・・|
------+----+-- +---
456 ※1
御教授の程、宜しくお願い致します。
以上
- Re: 最終行の値取得方法
24x7 - 2007/08/28(Tue) 22:53 No.3270
- 質問の内容が理解できない。
タイトルには、「最終行の値取得方法」でも、
「(最終行の「0」がセットされてしまったので)」と?
最終行の値を取得方法なら、最終行の値がゼロなら、ゼロを取得して何が問題なのでしょうか?
無題
超初心者 - 2007/08/24(Fri) 15:02 No.3265
- CrystalReport XIを使用しています。
データベース接続先の切り替えについて質問させて下さい。
現在開発環境からテスト環境へサーバーを切り替えました。
サーバー名・テーブル名・フィールド名は同じです。ただ接続先が変わりました。
このような場合でもフィールドを張りかえないといけないのでしょうか?
いい方法がないか困っています。
ご教授宜しくお願いします。
接続:OLEDB(ADO)
- Re: 無題
24x7 - 2007/08/24(Fri) 22:35 No.3266
- レポートのデザイン自体は変更はいらないです。
但し、データベース エキスパートからデータベースを変更先に変えます。
また、アプリケーションから利用するなら、アプリケーションでデータベースの接続先を変更することができるので、レポートは何も変更はいりません。
- Re: 無題
超初心者 - 2007/08/27(Mon) 08:55 No.3268
- 24x7さま
うまくできました。
有難うございました!
レポートビューワーの表示
dendenman - 2007/08/24(Fri) 14:49 No.3264
すいません、ものすごく簡単な質問になるのかもしれませんが
レポートビューワーでプリントイメージを表示時に、処理を行った
タイミングや環境により1ページ目から出力されない現象が
発生します。
このような状況が発生時はどのような対処を行えばよいでしょうか。
すいませんが宜しくお願い致します。
---------------------------------------
VB.NET 2005
CrystalReport標準
- Re: レポートビューワーの表示
24x7 - 2007/08/24(Fri) 22:37 No.3267
- これだけじゃ、簡単な質問にならないと思います。
処理のタイミング、環境、って何?
1ページ目から出力されずに何が出力されるの?
クロス集計の集計結果を使って、計算するやり方はありますか?
COOK2 - 2007/08/22(Wed) 20:45 No.3257
- お世話になります。
バージョン7
です。
クロス集計で
注文数 99
返品数 88
返品率 77.7
のようなことをしたいのですが、
注文数と返品数の合計を用いて、返品率を
出すようなクロス集計は作成可能でしょうか?
すいませんがよろしくお願いします。
- Re: クロス集計の集計結果...
COOK2 - 2007/08/23(Thu) 09:16 No.3258
- すいません。
補足します。
開発環境はDelphi6です。
お客さん1 お客さん2
商品1 注文数 xx uu
返品数 yy vv
返品率 zz ww
というようなクロス集計があって
注文数、返品数はそれぞれ合計がでます。
その合計を用いて、返品率を計算するというようなクロス集計を
作成したいのですが
あちこち調べたりしましたが、よくわかりませんでした。
できないのでしょうか?
以上、よろしくお願いします。
- Re: クロス集計の集計結果...
COOK2 - 2007/08/23(Thu) 09:54 No.3259
- たびたびすいません。
再度補足します。
ZZ=yy/xx*100
のような感じで計算した結果をだしたいという意味でした。
- Re: クロス集計の集計結果...
24x7 - 2007/08/23(Thu) 23:34 No.3262
バージョン7のクロス集計では実現できないと思います。
- Re: クロス集計の集計結果...
COOK2 - 2007/08/24(Fri) 08:56 No.3263
- 24x7様
お返事ありがとうございます。
そうですか。わかりました。
ありがとうございました。
VB2005 上のデザイナ
とも - 2007/08/23(Thu) 20:49 No.3260
すみません。しつもんであります。
VB.NET 2005
CrystalReport(標準
ソリューションエクスプローラで、新規にクリスタルレポートを作成したら、
以下のような並びでセクションができていました、
レポートヘッダー
ページヘッダー
詳細
レポートフッター
ページフッター
レポートフッターとページフッターの順を逆にしたいのですが、
デザイナが変更を一切うけつけてくれません。
帳票が数枚にわたるため、ページフッターにページ名で、全ページを出力した後に、レポートフッターにレコードカウントを入れたいと思っています。
どなたかわかるかたいらっしゃいますか?よろしくお願いします
- Re: VB2005 上のデザイナ
24x7 - 2007/08/23(Thu) 23:33 No.3261
これは、デザイン時だけで、実際、プレビューしたときは、レポートフッターはページフッターの後です。
重複データの非表示について
サイババ - 2007/08/21(Tue) 14:06 No.3252
- いつも参考にさせていただいております。
■環境
VB6
クリレポ8
■質問
重複データの非表示を行ないたいのですがうまくいきません。
やりたい事は、以下のようなことです。
データイメージ
---------------------------
1 AAAA AK-1000 12 100,000,000
2 AAAA AK-1000 12 200,000,000
3 AAAA AK-1000 10 300,000,000
4 AAAA BD-2000 10 400,000,000
5 AAAA BD-2000 10 500,000,000
6 BBBB BD-2000 10 600,000,000
帳票
--------------------------
1 AAAA AK-1000 12 100,000,000
2 200,000,000
3 AAAA AK-1000 10 300,000,000
4 AAAA BD-2000 10 400,000,000
5 500,000,000
6 BBBB BD-2000 10 600,000,000
※次のデータが前のデータと比較して3つの
コードが一致し場合のみは、非表示にしたい。
初歩的なこととは、思いますがご返答をお願いいたします。
- Re: 重複データの非表示に...
24x7 - 2007/08/21(Tue) 23:12 No.3253
- やり方はいろいろあると思いますが・・
一番最初に思いついたのは、グループ化にすることでした。
以下の式フィールドを作成して、この式フィールドを利用してグループ化します。
WhileReadingRecords;
{xxx.1番目の項目}&{xxx.2番目の項目}&{xxx.3番目の項目}
詳細に、4番目の項目を挿入すると2行になるけど、最初の3項目が一致したものは、最初の1つしか表示されません。
- Re: 重複データの非表示に...
24x7 - 2007/08/21(Tue) 23:21 No.3254
もう少し見栄えをよくするために・・
上記の式フィールドでグループ化した後、
詳細には、4つの項目を挿入して、最初の3つの項目は、それぞれ「重複データを非表示」をチェックします。その結果、グループ単位で重複データを非表示にすることができます。
- Re: 重複データの非表示に...
24x7 - 2007/08/21(Tue) 23:23 No.3255
- グループヘッダー、フッターは不要なので非表示にします。
- Re: 重複データの非表示に...
サイババ - 2007/08/22(Wed) 10:54 No.3256
- ご返答ありがとうございます。
参考にさせて頂きます。
配列の値を引き渡す方法について
サイババ - 2007/08/13(Mon) 18:53 No.3249
- はじめまして。
■環境
VB6
クリレポ8
VBにてデータベースからデータを取得後、取得したデータを直接、
クリスタルレポート送って印刷を行ないたいと考えております。
パラメータフィールドに配列を渡す方法がわかりません。
同じようなことを書かれていた方がいらっしゃいましたがあきらたようで。。。
返信に
>古いバージョンでは、VB6コード内の配列変数の値を直接レポートに引き渡して表示させることができましたが・・
と書かれており、かすかな光が見えたように思います。
記述の仕方を教えていただけませんか?
よろしくお願いします。
- Re: 配列の値を引き渡す方...
24x7 - 2007/08/13(Mon) 22:46 No.3250
Crystral Reports のパラメータフィールドに配列の値を引き渡すことはできません。
過去のログは、データベースに接続しないで値をレポートで表示(印刷)させるものと解釈して書いたものです。
古いバージョン、多分V8.5かV9までは、CDO(Crystal Data Object) と呼ばれるものがあります。
このCDOを使って、VB6で空からレコードセットを作成して、値にはデータベースから取得したものを挿入します。このレコードセットをレポートに引き渡すことができます。レポートのデザインは、レポート定義ファイルを利用するか、OLE DB 接続で実際に利用するデータベースに接続して行います。
あと、開発手法は、RDCです。OCXやPrintEngine API は使えるか知りません。
以下は、メーカーのサイトからダウンロードしたサンプルコードの中からCDOに関連した部分の抜粋です。
(RSは、データを取得するデータベース用のレコードセットです。)
Dim cdoRowSet As CrystalDataObject.CrystalComObject
Dim Rows() As Variant
'//CDOオブジェクトの作成
Set cdoRowSet = CreateObject("CrystalDataObject.CrystalComObject")
'//配列構造を作成する
cdoRowSet.AddField "Customer No", vbString
cdoRowSet.AddField "Customer NameCity", vbString
cdoRowSet.AddField "country", vbString
'//データベース(RS)から値を挿入する。
Do While Not RS.EOF
Rows(i, 0) = CStr(RS("CustomerID"))
Rows(i, 1) = CStr(RS("CompanyName"))
Rows(i, 2) = CStr(RS("Country"))
i = i + 1
RS.MoveNext
Loop
'Now we populate our VB array with data.
'Now that the array is populated, we add it to the cdoRowSet
'//配列構造に値を挿入する
cdoRowSet.AddRows Rows
'//レポートにCDOレコードセットを引き渡す
CrystalReport.DatabaseTable.SetDataSource cdoRowSet, 3
'//レポートの保持されたデータ破棄
CrystalReport.DiscardSavedData
'//レポートの表示または、印刷する
(省略)
あと、データベースの値でなくても、上記の配列構造に値を挿入することでデータベースの接続なしでレポートに表示することが可能です。
ちょっと手間がかかるので、直接データベースに接続した方が早いと思うけど。
- Re: 配列の値を引き渡す方...
サイババ - 2007/08/14(Tue) 15:20 No.3251
- 早速の返信、ありがとうございます。v(^=^)v
うまく出来ました。助かりました。
エラー番号=-2147206396
ベモラ - 2007/08/07(Tue) 14:16 No.3240
- こんにちは。
帳票実行中にエラーが出たのですが、分からないので質問させて下さい。
環境:CR9、VB6(SP5)、XP(SP2)、ORACLE9i
VB上のエラーメッセージ:アプリケーション定義エラー
エラー番号:-2147206396
エラー番号でググって見たのですが、日本語のところがなくて困っています。
海外サイトを見ると、クリスタルレポートという文言を多く見かけたので、
こちらに投稿しました。
再現性が無いのでクリスタルレポートの設定がおかしいかも不明です。
宜しくお願い致します。
- Re: エラー番号=-2147206396
24x7 - 2007/08/07(Tue) 23:42 No.3243
「帳票実行中」ってどんな処理ですか?
これだけじゃわからないと思います。
- Re: エラー番号=-2147206396
ベモラ - 2007/08/10(Fri) 09:59 No.3247
お返事遅れてすいません。
「帳票実行中」ですが、処理は以下のようなことをしています。
1.オラクルのストアドプロシージャ実行
2.上記1で作成したDBをレポート用MDBに編集
3.レポート印刷
どこでエラーが発生したかも分からない状態です。
もうちょっと自分で調査してみます。
わかったらまたご報告しようと思います。
お騒がせしました。
- Re: エラー番号=-2147206396
24x7 - 2007/08/10(Fri) 23:01 No.3248
- レポートのデザインは、どちらのデータベースで行っていますか?
> 環境:CR9、VB6(SP5)、XP(SP2)、ORACLE9i
> 1.オラクルのストアドプロシージャ実行
> 2.上記1で作成したDBをレポート用MDBに編集
> 3.レポート印刷
レポートの印刷は、MDB のようだけど・・デザインは?
もしかして、Oracle データベースでレポートのデザインを行ったとか。。
CrystalReportへのrecordsetの渡し方
優 - 2007/08/07(Tue) 17:16 No.3241
- VB6とCrystalReport8のシステムをメンテナンスしています。
Crystl32.OCXを経由して、ADO接続でSPを実行してrecordsetを作成したのですが、
このrecordsetをCrystalReportへの渡し方が解りません。(sampleは見ましたが・・・)
ご存知の方が居れば、ご教示ください。
- Re: CrystalReportへのrec...
優 - 2007/08/07(Tue) 17:26 No.3242
- >Crystl32.OCXを経由して、ADO接続でSPを実行してrecordsetを作成したのですが
Crystl32.OCXを経由してレポートを出そうとして、ADO接続でSPを実行してrecordsetを作成したのですが
の間違いです。すみません。。。
- Re: CrystalReportへのrec...
24x7 - 2007/08/07(Tue) 23:48 No.3244
- Crystal32.OCX の開発手法で、ADO の RecordSet をレポートに引き渡すことができましたっけ?
- Re: CrystalReportへのrec...
優 - 2007/08/08(Wed) 14:45 No.3245
「できましたっけ?」という情報で別の手段を試しました。
下記方法で実現しました。
ありがとうございました。
'VB6
With CrystalReport1
.Connect = "DRIVER={SQL Server};SERVER=(Server);UID=;PWD=;DATABASE=(Database)"
.DiscardSavedData = True
.ReportFileName = "c:\report1.rpt"
.StoredProcParam(0) = (SP's parameter)
.Destination = 1 ' Printer
.PrinterStartPage = 1
.PrinterStopPage = 9999
.Action = 1
End With
--SP
CREATE procedure SelectTest(
@Code char(4)
)
as
select
[col01],
[col02],
[col03]
from [test01]
where [col01] = @Code
GO
CR6→CR2005
Osaru - 2007/07/26(Thu) 15:51 No.3233
はじめまして
.NET初心者のものですが、クリレポについて教えてください。
CR6→CR2005に移行する場合は、完全に作り変えるしかないのでしょうか??
移行する手段があれば教えてください。
大昔につくられたPGを.NETに移行しなくてはいけなくなり、
大変困っています。
どなたかご教授ねがいます。
■旧環境
VB5(SP3) CR6
■新環境
VB2005 CRはVB2005に付属しているものを使用
- Re: CR6→CR2005
24x7 - 2007/07/26(Thu) 22:17 No.3234
はい、その通りです。
VB5で記述された処理は、すべて .NETコンポーネントに移行(コード修正)することになります。
- Re: CR6→CR2005
Osaru - 2007/08/07(Tue) 12:38 No.3239
- 24x7 さん
回答ありがとうございます。返信が遅くなり申し訳ありません。
やはり作り直しですか。。。
またご教授願います。
ASPからレポート表示
超初心者 - 2007/08/06(Mon) 16:13 No.3236
- 初めまして。
クリスタルレポートとHTML(ASP)の連結について全く知識がなくわかりません。
やりたいことはaspから既にデータ連結済みのレポートを表示したいのです。
まずはそこまでですが最終的にはPDFで表示までしたいです。
標準的なコードを教えて頂ければありがたいです。
宜しくお願いします。
- Re: ASPからレポート表示
24x7 - 2007/08/07(Tue) 06:36 No.3237
- CR のバージョン、開発環境、開発言語が不明です。
メーカーサイトのサンプルコードを参照して見てください。
.NET は、ここ、
http://support.businessobjects.com/communityCS/FilesAndUpdates/sample_applications_for_.NET_developers.pdf
COM なら、ここです。
http://support.businessobjects.com/communityCS/FilesAndUpdates/sample_applications_for_COM_developers.pdf
- Re: ASPからレポート表示
超初心者 - 2007/08/07(Tue) 08:49 No.3238
有難うございます。参考にさせて頂きます。
環境ですが
CR:Crystal Reports XI Developer Edition 評価版
OS:Windows XPSP2
言語:ASP(VBScript)
サーバー:SQL Server 8
です。
フォントについて
若葉マーク - 2007/07/27(Fri) 11:28 No.3235
フォントについて教えてください。
フォントの種類をOSのシステムフォントにすることは出来ないのでしょう?
分かる方居ましたら教えてください。
お願いします。
印刷について
RODY - 2007/07/25(Wed) 15:26 No.3232
- いつも参考にさせてもらっています。
Crystal Reports初心者です。宜しくお願い致します。
現在、Webアプリで、クリスタルレポートを使って帳票を印刷しようとしています。
CrystalReportViewer付属の印刷ボタンを使っての印刷だと、
まず別画面で印刷オプション画面が表示され、
印刷ページの範囲を指定して「OK」を押すとPDF形式でのプレビュー画面が
表示され、その画面の印刷ボタンを押すことにより印刷ダイアログが
表示されるようになっています。
今回の帳票ではページ数が1万を超えることが予想されるので、
このようにプレビュー画面が2回表示される状態では
処理に時間がかかってしまうのではないかと心配しております。
そこで、Viewer付属の印刷ボタン(別にボタンを作ってもいいのですが)を
押すと、PDF形式でのプレビュー画面を表示せずに、直接印刷ダイアログを
表示するようにしたいのですが、そのようなことは可能なのでしょうか?
ご存知の方いらっしゃいましたら、宜しくお願い致します。
-------
開発環境
OS:XP pro Ver2002
言語:VB.NET2005
Crystal Reports XI
Crystal Reports 8.5 Library 参照
とろろん - 2007/07/23(Mon) 12:07 No.3222
- すいません、クリスタルレポートをはじめて使おうとしている者ですが。
質問させてください。
VB6.0 SP6
クリスタルレポート 9
現在、昔別の人が作成したソースの改修を行うため、
コンパイルできる開発環境を作成しています。
開発環境はVB6とクリスタルレポート9と言われていたので、
各々インストールしたのですが、
VBの参照設定で、チェックのついている項目のうち
[ Crystal Reports 8.5 Library ]が参照不可となっています。
9のDesiner Run Timeなどは参照できているのですが、
これは、アプリが純粋にCrystal Reports 9 で作成されたわけではないという
ことでしょうか?
CrystalReports 8.5 Library を参照するには、やはりCrystalReports8.5を
インストールするしかないのでしょうか?
または、Crystal Report 9 のカスタムインストールとかで、追加とかできるのでしょうか?
(一通り見たのですが、それらしい項目は見当たりませんでしたが。。。)
すいません、わかる方よろしくお願いします。
- Re: Crystal Reports 8.5 ...
24x7 - 2007/07/23(Mon) 14:06 No.3223
- 8.5が参照不可とは、そのプロジェクトファイルが8.5で開発されているということです。8.5 は、8.5 製品をインストールしないと駄目です。
8.5 のアプリケーションを 9 へアップグレードするなら、そのまま 9 のランタイムライブラリを参照することでいいのではないでしょうか。
でも、どの開発環境を利用しているかが問題です。
RDC(CRAXDRT.DLL) なら、そのままのコードで利用できますが、OCX(Crystld.ocx)なら、9 では利用できないので、コードの書き換えになります。
- Re: Crystal Reports 8.5 ...
とろろん - 2007/07/23(Mon) 17:29 No.3224
24x7さま
すばやいレスポンスありがとうございます。
やはり8.5を手に入れるしかないですか。。
自分も開発環境はVBとクリスタルレポート9だと聞いていたので、
いざ参照設定を確認して、CrystalReport8.5Libraryとなっていたので、
開発環境が違うのかと思っていたのですが。。。
しかし、Crystal Report Viewer Control 9 は参照設定でチェックされているんですよね。。(もとから)
ってことは開発環境は、やっぱり 9?
2つのバージョンが同時に入るとかはないですよね?
ちなみに、クリスタルレポート9をインストールすると、c:\ProgramFiles\Crystal Decisions 配下に
「8.5」っていうフォルダができるのですが、でももぐっていくと「Olap」とか出てくるので関係ないのかなと。。
すいません。わかるかたよろしくお願いします。
- Re: Crystal Reports 8.5 ...
24x7 - 2007/07/23(Mon) 21:55 No.3225
質問の意図が読めない??
8.5を9へアップグレードするのではないのですか?
8.5で利用している開発手法に関係しますが・・
8.5でRDCを利用していれば、そのまま、アップグレードすればいいと思います。
OCXなら、RDCのコードへ書き換える以外に方法はない。
8.5の製品CDがあれば、同一環境に2つのバージョンはインストールは可能です。
- Re: Crystal Reports 8.5 ...
とろろん - 2007/07/24(Tue) 10:09 No.3226
すいません。わかりずらくて、
状況は、クリスタルレポート9をXIにアップデートするのが最終的な目的になります。
なので、現行の開発環境っということでクリスタルレポート9の環境を作成してVBの既存プロジェクトを起動したら、「Crystal Report 8.5 Library」が参照されるように設定されていて、クリスタルレポート9しかインストールしていないので、参照不可になっていました。
同一環境への2バージョンのインストールは可能なのですか。じゃーたぶん既存のプロジェクトが作成されたマシーンでは、
くりれぽの8.5と9の両環境があったということですかね。。
とりあえず、8.5は手元にないのですが、
参照設定で8.5Libraryのチェックをはずして、完全コンパイルをかけてもエラーがでなかったので、
ひょっとしたら、くりれぽ9の現行アプリの前にもう1バージョン8.5で作成したバージョンが存在しててその時の遺物なのかなと思っています。
すいません。
いろいろとご助言いただきありがとうございました。
- Re: Crystal Reports 8.5 ...
24x7 - 2007/07/24(Tue) 11:56 No.3228
上記の説明は、期待した結果だと思います。
参照不可の8.5のチェックをはずしてもコンパイルエラーにならずに動作するなら、RDCで開発されたものでしょう。
参照不可の8.5は、参照設定の一覧の中で上位で表示されていると思います。
バージョン9は、それよりも下位アルファベット順で表示されて、チェックされていると思います。
そのまま、バージョン9で再コンパイルと、動作確認で、問題ないのでは・・
- Re: Crystal Reports 8.5 ...
とろろん - 2007/07/25(Wed) 13:45 No.3231
そうですね、問題なく動きそうです。
ありがとうございました。
ただ、最終的な目的は、VB6 を VB.NET 2005に上げて、
クリスタルレポート9 を クリスタルレポートXI に上げるのが目的なので、
また、質問を投げさせていただくかもしれません。。。。
デザイナが信用できない
kage14 - 2007/07/24(Tue) 10:12 No.3227
はじめまして、クリスタルレポート始めて3週間のものです。
レポートの修正をしているのですが、デザイナが予想以上にいろいろやってくれて困っています。
データベースエキスパートでテーブルを削除するときに使用していないDBフィールドを「使用している」と言ってきたり。
上記のメッセージを無視してテーブルを削除するとサブレポートのリンク情報(削除したテーブルとは関係ない)を勝手に削除したり。
ということで、レポートファイルの定義情報をテキストで取り出せないかと考え下記環境でマクロを作成してみました。(VB、Delphiでないのは、環境がないからです)
-----
CRAXDRT(Crystal Reports ActiveX Designer Design and Runtime Library 10.0)
Microsoft Excel 2007
取り出せる情報
-----
使用テーブル一覧(データベースエキスパート-データ-選択したテーブル)
DBリンク一覧(データベースエキスパート-リンク-リンクの順序)
パラメータフィールド(フィールドエクスプローラー-パラメータフィールド)
式フィールド(式ワークショップ-式フィールド)
SQL式フィールド(式ワークショップ-SQL式フィールド)
選択式.レコードの選択(式ワークショップ-選択式-レコードの選択)
これに、サブレポートリンク(レポートエクスプローラーでサブレポートを右クリック→サブレポートリンクの変更で表示される情報)を追加しようといろいろやっていますが、なぜかうまくいきません。
次のプロパティにアクセスできないとかなんとか。
-----
CRAXDRT.Report.Sections(1).ReportObjects(1).Links(1).SubReportField
ActiveX経由でレポートファイルの定義情報を取り出す以外に何か同じようなことを実現する方法など知っている方、情報下さい。
- Re: デザイナが信用できない
24x7 - 2007/07/24(Tue) 11:59 No.3229
- 期待した結果が取得できるかわかりませんが、デザイナ環境からレポート定義ファイルにエクスポートしたらどうでしょうか。
- Re: デザイナが信用できない
kage14 - 2007/07/24(Tue) 19:51 No.3230
残念なお知らせです。
エクスポートしましたが、エラーダイアログが表示されてエクスポートできず。
対象のサブレポートをごっそり削除するとエクスポートもうまく行きました。(サブレポートを削除したら意味無いデス)
MainReportFieldが取得できる分、自作マクロの方がましでした。
サブレポートリンクの情報取得は諦めて人力でやります。
DAO350について
oash - 2007/07/19(Thu) 19:29 No.3218
- 参考にさせてもらっています。
Vista、クリレポ4.6で、DAO360は使えないのでしょうか?
ヘルプ→バージョン情報→詳細情報で見るとDAO350を使用しています。
これを、DAO360に変えたいのですが、方法があればお教えください。
連夜の質問ですが、よろしくお願いします。
- Re: DAO350について
24x7 - 2007/07/20(Fri) 00:14 No.3219
- よくわからないけど、以下のサイトを参照してみたらいかがでしょう。
http://support.microsoft.com/kb/822545/ja
http://support.microsoft.com/kb/233002/ja
昔、Access 2000 (.MDBファイル)に直接アクセスするとエラーになった記憶があるけど・・
バンドル版 4.6.1 は、Access97 までしか直接アクセスできないと思います。
ODBCは問題ないと思いますが・・
- Re: DAO350について
24x7 - 2007/07/20(Fri) 00:17 No.3220
- KBを見つけた。
4.6.1 では、Access 2000 はサポートしていないと・・
http://technicalsupport.businessobjects.com/KanisaSupportSite/search.do?cmd=displayKC&docType=kc&externalId=c2006737&sliceId=&dialogID=360384&stateId=1%200%20356275
http://technicalsupport.businessobjects.com/KanisaSupportSite/search.do?cmd=displayKC&docType=kc&externalId=c2006736&sliceId=&dialogID=360384&stateId=1%200%20356275
http://technicalsupport.businessobjects.com/KanisaSupportSite/search.do?cmd=displayKC&docType=kc&externalId=c2005677&sliceId=&dialogID=360384&stateId=1%200%20356275
- Re: DAO350について
oash - 2007/07/20(Fri) 09:59 No.3221
- ありがとうございました。
無理だと判断し、あきらめます。
丁寧な回答ありがとうございました。
.Formulas(0) ついて
oash - 2007/07/18(Wed) 20:06 No.3214
いつも拝見させていただいています。
今回、古いVB4とクリレポ4.8で作ったプログラムを、VB6とクリレポXIで作り変えることになりました。
'Report1.Formulas(0) = "年月='" + Trim(Text1) + "'"
上記式で、フォームに表示してある年月をクリレポに渡していたのですが、XIでの記述がわかりません。
VB6から、クリレポXIへのテキストの渡し方をお教えください。
初歩的な質問ですみません。
よろしくお願いします。
- Re: .Formulas(0) ついて
24x7 - 2007/07/18(Wed) 23:09 No.3215
VB6 なら RDC を利用するわけですね。
式フィールドの内容を変更する場合、以下のような記述になります。
Dim crFormulaFields As CRAXDRT.FormulaFieldDefinitions
Dim crFormulaField As CRAXDRT.FormulaFieldDefinition
Set crFormulaField = CrystalReport.FormulaFields.Item(1)
crFormulaField.Text = "年月='" + Trim(Text1) + "'"
複数の式フィールドが存在しているような場合、For ループして、式フィールドの名前で区別することも可能です。
For i = 1 To CrystalReport.FormulaFields.Count
Set crFormulaField = CrystalReport.FormulaFields.Item(i)
If crFormulaField.FormulaFieldName = "式フィールド名" Then
crFormulaField.Text = "年月='" + Trim(Text1) + "'"
End If
Next i
- Re: .Formulas(0) ついて
oash - 2007/07/19(Thu) 09:45 No.3217
24x7様ありがとうございました。
早速試したところ、うまくいきました。
ありがとうございました。
絞り込みで質問です
ぎょたく - 2007/07/19(Thu) 09:29 No.3216
- Crystal Repors 10で、例えば、DEPT_NOで絞り込みたい場合は、
{EmpList.DEPT_NO} = {?DeptNo}
とします。
もし、DeptNoが"ALL"の場合は絞り込まないとしたら、
if {?DeptNo} <> "ALL" then
{EmpList.DEPT_NO} = {?DeptNo}
else
true
このようにすればよいと思います。(我流ですが、合ってますか?)
で、ここからが質問ですが、上の条件に別の条件も付け加えたい場合、
if {?DeptNo} <> "ALL" then
{EmpList.DEPT_NO} = {?DeptNo}
else
true
and
if {?Gender} <> "ALL" then
{EmpList.GENDER} = {?Gender}
else
true
このようにしたのですが、これだとどちらかの条件が指定されないと
もう片方の条件が指定されても、全レコードが抽出されてしまいます。
必ず両方の条件を指定するのであれば、
{EmpList.DEPT_NO} = {?DeptNo} and {EmpList.GENDER} = {?Gender}
で良いのでしょうけど、どちらかの条件を指定しない時もあります。
このような場合はどうすればよいのでしょうか。
ボックスオブジェクトの制御について
若葉マーク - 2007/07/13(Fri) 11:37 No.3213
- ボックスオブジェクトについて教えてください。
環境
OS:WindowsXP
C#2005
Section3(詳細)にボックスオブジェクトを配置し、データソースの値に応じて塗りつぶしをする、しないと切り替えたいのですが、どのようにすれば実現出来るのか分かりません。
テキストオブジェクトでしたら書式設定エディタにて構文を書くことにより実現は出来たのですが、線の太さ変更が出来ないのでボックスオブジェクトを使用しています。
どなたか分かる方、教えてください。
よろしくお願いします。
アプリから直接印字について
若葉マーク - 2007/07/12(Thu) 09:07 No.3210
- 初めまして。
環境
OS:WindowsXP
C#2005
CrystalReportを始めて使用する者です。
アプリケーションからSetDataSourceを使用せずに複数明細行印刷が出来ないか、いろいろと試しています。しかし上手くいかないのでここに書込ました。
空のレポートファイル(CrystalReport1)を作成し、パラメータフィールドに文字列のフィールド(para1)を新規作成し、それをSection3(詳細)に貼り付けます。
アプリ側で
CrystalReport1 cr = new CrystalReport1();
cr.SetParameterValue("para1", "123");
crystalReportViewer1.ReportSource = cr;
crystalReportViewerで参照したところ詳細欄に"123"が表示されました。
複数明細行を印字したいので
CrystalReport1 cr = new CrystalReport1();
cr.SetParameterValue("para1", "123");
cr.SetParameterValue("para1", "234");
crystalReportViewer1.ReportSource = cr;
としたところ詳細欄に"234"が表示されます。
詳細欄に
123
234
と複数行出力するにはどの様にすればいいのでしょうか。
出来ればDataSet等使用せず直接印刷が希望です。
手探り状態なのでどなたか分かる方、教えてください。
よろしくお願いします。
- Re: アプリから直接印字に...
24x7 - 2007/07/12(Thu) 23:19 No.3211
- パラメータフィールドを利用して直接、詳細に出力させることはできません。
上記のような場合、一度しか評価しないので、複数挿入していれば、最後のパラメータの値しか表示されません。
何でもいいからデータソースを利用しないと実現はできません。
バンドル版かな?古いバージョンでは、VB6コード内の配列変数の値を直接レポートに引き渡して表示させることができましたが・・
今のバージョンはできない。
- Re: アプリから直接印字に...
若葉マーク - 2007/07/13(Fri) 08:26 No.3212
24x7 -さん
回答有り難うございます。
やはり直接では無理みたいですね。
DataSetを利用することにします。
どうも有り難うございました。
クリレポのファイル出力ができません
さくら - 2007/07/05(Thu) 16:45 No.3187
環境:
OS Windows2000
VB6、クリレポ9
クリレポ6から9へバージョンアップをしましたが、クリレポの機能である、ファイル出力
(エクスポート)ができません。
ファイル出力のボタンは押せますが、通常なら表示されるべき<エクスポート>という
画面が表示されません。
数台のパソコンにクリレポのバージョンアップをしたのですが、ファイル出力できるものと
できないものがあります。
できないパソコンについて、再度クリレポ9のインストールを行いましたが、現象は
変わらずです。
何が原因なのでしょうか?
よろしくお願いします。
- Re: クリレポのファイル出...
あ - 2007/07/06(Fri) 20:15 No.3192
- あ
- Re: クリレポのファイル出...
24x7 - 2007/07/06(Fri) 23:00 No.3194
レポートのデザイナ環境ですか、それともVB6アプリケーションですか?
デザイナ環境の場合、原因は思い当たりませんね。
VB6アプリケーションの場合、V6->V9 にアップグレードしてもそのまま記述されたコードは正しく動作しません。VBコードは修正する必要があります。
V9 では、RDC(CRAXDRT.DLL) を利用してコード記述が必要になります。
- Re: クリレポのファイル出...
さくら - 2007/07/09(Mon) 16:46 No.3199
- 24x7さん、回答ありがとうございます。
しようとしているのは、VB6のアプリケーションです。
(宣言)
Private Type PEExportOptions
StructSize As Integer
FormatDLLName As String * PE_DLL_NAME_LEN
FormatType1 As Integer
FormatType2 As Integer
FormatOptions1 As Integer
FormatOptions2 As Integer
DestinationDLLName As String * PE_DLL_NAME_LEN
DestinationType1 As Integer
DestinationType2 As Integer
DestinationOptions1 As Integer
DestinationOptions2 As Integer
NFormatOptionsBytes As Integer
NDestinationOptionsBytes As Integer
End Type
Private Const PE_SIZEOF_EXPORT_OPTIONS = 11 * PE_WORD_LEN + 2 * PE_DLL_NAME_LEN
Private Declare Function PEGetExportOptions Lib "crpe32.dll" (ByVal printJob%, ExportOptions As PEExportOptions) As Integer
(コード)
usrExpOptions.StructSize = Len(usrExpOptions)
intRet = PEGetExportOptions(intPrintJob, usrExpOptions)
If intRet <> 0 Then
intRet = PEExportTo(intPrintJob, usrExpOptions)
End If
上記のPEGetExportOptionsを通ったときに、返り値が本来"1"であるべきはずが、
特定のパソコンのみ、"0"が帰ってきて、ダイアログが表示されません。
この記述では、CR9ではダメなのでしょうか?
引き続き、よろしくお願いします。
- Re: クリレポのファイル出...
24x7 - 2007/07/09(Mon) 22:11 No.3202
- PrintEngine API ですね。
Crystal Reports 9 でもまだ、動作しますが・・
特定のパソコンと正しく動作するパソコンって何か違いがありませんか?
動作環境に依存した問題は、その現象が発生したパソコンを詳細に調べる以外、解決方法は見つからないとおもいますが・・
例えば、CR6 のランタイムと共存しているとか??
その場合、それぞれの CRPE32.DLL は、正しく配布されているか?
Private Declare Function PEGetExportOptions Lib "crpe32.dll" (ByVal printJob%, ExportOptions As PEExportOptions) As Integer
上記の記述は、Windows システムフォルダを参照すると思いますが、
CR9 の CRPE32.DLL は、Windows システムフォルダに存在していますか。
デフォルトでは、c:\Program Files\common\crystal Reports\2.0\bin になります。
- Re: クリレポのファイル出...
さくら - 2007/07/11(Wed) 13:40 No.3209
- そうですね。
現地で詳細を確認しないことには始まらないですよね。
CRPE32.DLL の存在やバージョンなどを詳しく調べてきます。
また、結果を報告します。
ありがとうございました。