VB.NETから印刷
京子 - 2005/05/25(Wed) 16:08 No.727
- こんにちわ。
vb.net CrystalReport9.0で開発をおこなっております。
vb上のフォームから印刷というボタンをクリックすると印刷、画面というボタンを押すとプレビューを出すようなプログラムを作成したいと思っています。
今VBにあるクリスタルレポートビュアーというのを使用してやりかけているのですがビュアー上には正しいサイズで表示されますが印刷しようとすると通常使うプリンタを選択してきてしまいます。
現地で位置調整必要な場合があるのでEXEはそのままでクリスタルレポートのレイアウトを変更すれば反映するようにしたいのですが
方法が分かりません。
何かご存知のかた、ご教授お願いします。
PDFファイルのサイズを指定したい
かおる - 2005/05/22(Sun) 13:37 No.713
- RDCからPDFファイルへのエクスポートをする時に、作成された
PDFファイルのサイズをA3に固定させたいのですが、そのやり方
がわかりません。
Report.PaperSize = crPaperA3
の記述を入れればできるかと思ったのですが、できたPDFファイルのサイズを見るとA4になっています。
また、プリンタに出力してもA4になってしまいます。なお、Crystal ReportsのRPTファイルのプリンタの設定の用紙サイズはA3、クライアントの通常使うプリンタのサイズもA3になっていますがそれでもA4になってしまいます。
何かヒントになることでもよいのでご存知の方がいらっしゃいましたら教えてください。よろしくお願いいたします。
開発環境は以下のとおりです。
Crystal Reports 10
VB6
RDC
ORACLE 9i(ODBC接続)
- Re: PDFファイルのサイズ・..
Kimberly - 2005/05/24(Tue) 06:37 No.721
- かおる様
このVBアプリケーションはどこで実行していますか。実行する環境の用紙サイズA3の値とVBコード記述した値(crPaperA3)が一致していないと正しい用紙サイズは選択されません。
- Re: PDFファイルのサイズ・..
かおる - 2005/05/24(Tue) 16:53 No.725
- Kimberly様
すみません。私の勘違いでした。印刷時の設定がA4になっていたためA4で出力
されているように見えましたが、PDFファイル自体はA3のサイズでできていました。
回答どうもありがとうございました。
オーバーフローについて
YAMA - 2005/05/20(Fri) 18:40 No.706
- はじめましてYAMAと申します。
開発環境は、CrystalReport9を使用しています。
質問ですが、あるテキストフィールドに入りきらないデータを横に改ページしたいのですが、やり方がわかりません。クリスタルレポートで、可能なのかさえもわからない状況です。
イメージ的には、以下のような感じです。
よい方法がありましたら、ご教授お願いします。
---------- ----------
AAAAAAAA DDDDDDDD
BBBBBBBB 改ページ EEEEEEEEE
CCCCCCC FFFFFFFFF
--------- -----------
- Re: オーバーフローについて
Kimberly - 2005/05/21(Sat) 01:03 No.709
- YAMA様
Crystal Reports 9 では、横の改ページはできません。
- Re: オーバーフローについて
YAMA - 2005/05/24(Tue) 14:04 No.724
- Kimberly様
回答ありがとうございます。
別の対策を考えます。
明細の集計
集計 - 2005/05/13(Fri) 18:47 No.657
はじめまして
質問があります。
以下のデータ
項目@ 項目A 項目B 項目C
aaaaa BBBB CCCC 100
aaaaa BBBB CCCC 200
aaaaa CCCC DDDD 300
aaaaa CCCC DDDD 400
を以下のように出力したいのですが
ヘッダー
aaaaa
詳細
BBBB CCCC
CCCC DDDD
と、詳細を項目Aで集約し最初のレコードのみ出力としたいのですが。
どなたかご教授頂けないでしょうか。
- Re: 明細の集計
Kimberly - 2005/05/14(Sat) 00:59 No.660
集計様
詳細セクションにこだわらなければ、項目Aも項目Bもグループにすればどうでしょうか。
- Re: 明細の集計
集計 - 2005/05/16(Mon) 08:14 No.669
- ご回答ありがとう御座います。
グループにすると、キーとなる項目単位で印字されるのみで、
4明細印字されてしまうのですが、グループ化した場合、
印字する明細を指定できるのでしょうか。
素人質問で申し訳御座いません。
- Re: 明細の集計
Kimberly - 2005/05/16(Mon) 13:53 No.673
- 集計様
このレポートの場合、項目Cはどのように表示したいのでしょうか。
- Re: 明細の集計
明細の集計 - 2005/05/24(Tue) 08:56 No.722
- Kimberly様
項目Cにつきましては最小値のみ印字したいのですが。
- Re: 明細の集計
Kimberly - 2005/05/24(Tue) 10:13 No.723
- 集計様
こんな感じで表示したいわけですね。
ヘッダー
aaaaa
詳細
BBBB CCCC 100
CCCC DDDD 300
この場合、項目@、項目A、項目Bでそれぞれグループを挿入します。
項目@のグループフッター、項目Aのグループヘッダー、フッター、項目Bのグループヘッダーを非表示にします。詳細も非表示にします。
項目Aと項目Bを項目Bのグループフッターに挿入します。
項目Bのグループフッターに以下の内容の式フィールドを挿入します。
WhilePrintingRecords;
Minimum ({テーブル.項目C}, {テーブル.項目B});
その結果、以下のような表示イメージになるかと思います。
項目@のグループヘッダー aaaaa
項目Bのグループフッター BBBB CCCC 100
項目Bのグループフッター CCCC DDDD 300
VB6+CR10での印刷について(DB接続周りです)
シンゴ - 2005/05/20(Fri) 11:54 No.705
- はじめましてシンゴと申します。
VB6からCrystalReport10を使用して帳票を出力しようとしています。
帳票の内容は、VB側からOracleDBのテーブル、条件を渡し、
レポート側でDBを参照し印刷するものなのですが、
顧客への導入時に一点不都合が生じました。
Oracleへの接続に使う、OracleID,ユーザーID,パスワードはVB側より与えているのですが、実際はCrystalReportの中で定義しているものを使って接続していた模様です。
顧客への導入では、レポートを顧客の環境に合わせて緊急対応しましたが、環境が変わる毎にレポートを触るのはあまりよろしくないことだと思いますので、VB側からの設定ができるようにしたいと考えております。
何かよい方法がありましたらご教授お願いいたします。
念の為、ソースの一部を添付いたします。
Dim CRXAprication As New CRAXDRT.Application
Dim CRXConnection As CRAXDRT.ConnectionProperty
Dim CRXReport As CRAXDRT.Report
Dim CRXDatabase As CRAXDRT.DatabaseTable
Dim CRXDatabaseField As CRAXDRT.DatabaseFieldDefinition
…
Set CRXReport = CRXAprication.OpenReport(レポートファイル)
Set CRXDatabase = CRXReport.Database.Tables(1)
CRXReport.Database.LogOnServer "crdb_oracle.dll", オラクルID, , ユーザーID, パスワード
CRXReport.Database.Tables.Item(1).Location = テーブル1
CRXReport.Database.Tables.Item(2).Location = テーブル2
…
CRXReport.RecordSelectionFormula = 条件
Set CRXDatabaseField = CRXReport.Database.Tables.Item(1).Fields.Item(1)
CRXReport.RecordSortFields.Add CRXDatabaseField, crAscendingOrder
CRXReport.PrintOut False
長文失礼いたしました。
- Re: VB6+CR10での印刷につ...
Kimberly - 2005/05/21(Sat) 00:57 No.708
シンゴ様
Oracle データベースで接続先を変更するには、以下のような記述で試してみてください。
CRXReport.Database.Tables.Item(1).ConnectionProperties.Item("Server") = "Oracle サービス名"
CRXReport.Database.Tables.Item(1).ConnectionProperties.Item("User Id") = "ユーザ名"
CRXReport.Database.Tables.Item(1).ConnectionProperties.Item("Password") = "パスワード"
CRXReport.Database.Tables.Item(1).SetTableLocation "スキーマ名.テーブル名", "スキーマ名.テーブル名", ""
また、最後の行は、Location プロパティでも可能と思います。
CRXReport.Database.Tables.Item(1).Location = "スキーマ名.テーブル名"
- Re: VB6+CR10での印刷につ...
シンゴ - 2005/05/23(Mon) 10:42 No.715
- Kimberly様
回答ありがとうございました。
その通りやってはみたのですが、エラーが出てしまいます。
内容を調べたのですが、
Error Code:-2147189176
ログオンに失敗しました。
詳細:サーバーに接続できません。OCI呼び出し:OCIServerAttach
でした。
また、後にわかったことなのですが、ソース最初にある
Set CRXReport = CRXAprication.OpenReport(レポートファイル)
でCRからOracleに接続しているようですので、
もしかすると手を入れないといけないのはここではないかと考えております。
何かよい方法はございませんでしょうか。
お手数おかけしますがよろしくお願いいたします。
- Re: VB6+CR10での印刷につ...
Kimberly - 2005/05/23(Mon) 14:22 No.717
- シンゴ様
LogOnServer の代わりにConnectionPropertiesを利用していますか。
あと、その後に、CRXReport.SaveAs App.Path & "\ReportSaveAs.rpt", fileformat を追加して、レポートファイルに保存してみてください。第2パラメータの値は、おぼえていませんが、VBプロジェクト内で自動的に選択できると思います。
このレポートファイルをデザイナで開いてみて、設定されてデータベースの情報を確認してみてください。また、そのままプレビューしてみてください。どこに問題があるかわかると思いますが・・エラーの内容からデータベースのログイン情報が正しくないように思えます。
また、レポートファイルで利用しているデータベースの接続方法は、コード記述と
- Re: VB6+CR10での印刷につ...
Kimberly - 2005/05/23(Mon) 14:24 No.718
- シンゴ様
LogOnServer の代わりにConnectionPropertiesを利用していますか。
あと、その後に、以下のコードを追加します。
CRXReport.SaveAs App.Path & "\ReportSaveAs.rpt", ファイル形式
その結果、データベースの接続情報の変更後、レポートファイルに保存することができます。第2パラメータの値は、おぼえていませんが、VBプロジェクト内で自動的に選択できると思います。
このレポートファイルをデザイナで開いてみて、設定されてデータベースの情報を確認してみてください。また、そのままプレビューしてみてください。どこに問題があるかわかると思いますが・・エラーの内容からデータベースのログイン情報が正しくないように思えます。
また、レポートファイルで利用しているデータベースの接続方法は、コード記述と一致していますか。VB記述では、ネイティブ接続になっています。
- Re: VB6+CR10での印刷につ...
シンゴ - 2005/05/23(Mon) 16:19 No.720
- Kimberly様
回答ありがとうございます。
ご指摘の通りやってみるとうまくいきました。
丁寧に教えていただきありがとうございました。
ページヘッダーのグループ化
まさ吉 - 2005/05/21(Sat) 16:09 No.711
- ページヘッダーにあるフィールドが変化したら改ページする仕様を考えています。
ページヘッダー
1111111
2222222
3333333
--------------------------------
DATA-1 DATA-2 DATA-3
DATA-4 DATA-5 DATA-6
↓
1111112 ←この場合は新しいページに先頭から印字したい
2222222
3333333
--------------------------------
DATA-1 DATA-2 DATA-3
DATA-4 DATA-5 DATA-6
レコード
111111 2222222 3333333 DATA-1 DATA-2 DATA-3 DATA-4・・・・
111111 2222222 3333333 DATA-1 DATA-2 DATA-3 DATA-4・・・・
111112 2222222 3333333 DATA-1 DATA-2 DATA-3 DATA-4・・・・
↑ここで改ページ
111111 2222222 3333333 DATA-1 DATA-2 DATA-3 DATA-4・・・・
ご存知の方、是非お願いいたします。
- 自己レス
まさ吉 - 2005/05/21(Sat) 16:11 No.712
- ページヘッダーのうちどれか1つでも変わったらが正式な仕様です
もし、出来るなら同じ方法だとは思いましたが、伝わらないといけないので
追記しておきます
- Re: ページヘッダーのグル...
Kimberly - 2005/05/22(Sun) 16:58 No.714
- まさ吉様
セクションエキスパートの「出力後に改ページ」の条件式に以下の式を挿入したら、だめですか。
(例)
WhilePrintingRecords;
{テーブル名.項目1名} <> Next({テーブル名.項目1名})
複数項目の中でどれか1つでも違ったら、ORを利用して式をつなげることでできると思います。
- Re: ページヘッダーのグル...
まさ吉 - 2005/05/23(Mon) 11:37 No.716
- いろいろ試した結果、非表示のセクションを3つ追加して、
それぞれのセクションで「出力前に改ページ」と「続くセクションをアンダーレイ」を
追加する事でなんとか事なきを得ました。
この方法が適切かどうかはわかりませんが、開発時間がないのでこのまま
行く事にします、Kimberlyさんありがとうございました。
納期後(週末)、Kimberlyさんのアドバイスでやってみて、ご報告します。
ありがとうございました<(_ _)>
CSVファイルのリンクについて
京子 - 2005/05/19(Thu) 19:35 No.700
- こんばんわ
クリスタルレポート9で開発しています。
ODBCドライバ経由で(MicrosoftTextDriver)CSVファイルをデータとして利用しています。
複数のCSVファイルをデータベースエキスパートでリンクを設定し利用しています。
例えばAのファイルは得意先コード、得意先名
Bのファイルは得意先コード、電話番号
という2つのファイルがあります。
得意先コードでリンクさせているのですが、Aの得意先は存在しているが、BのファイルにAの得意先コードが無い場合、データが何も表示されません。
Bに得意先コードが無い場合はAの情報のみ印字させたいのですが可能でしょうか
わかりにくい例で申し訳ありません。
よろしくお願いします。
- Re: CSVファイルのリンク・..
Kimberly - 2005/05/19(Thu) 22:28 No.702
- 京子様
データベースエキスパートで2つのテーブルのリンクを選択し、右クリックからリンクオプションを選択します。Aが左側に位置されていれば、Left Outer Join を選択します。データが左側に有って、右側に無い場合も左側のテーブルのデータは表示されると思います。
- ありがとうございました。
京子 - 2005/05/20(Fri) 19:49 No.707
- Kimberly様
ありがとうございました。
アドバイス通り設定すると出来ました。
横に出力した時の見出し
どむ - 2005/05/19(Thu) 22:22 No.701
- 複数行あるデータを横に出力し見出しをつけたいのですがうまくいきません。
日付、時間、数のデータを時間でグループ化してグループヘッダに見出しを
入れて出力すると、1件目のデータが見出しに重なってしまいます。
詳細の幅を広げれば重ならないのですが、そうすると1週間分のデータが
1行で収まらなくなってしまいます。
何か良い方法がありましたら教えてください。
イメージは以下のようなものです。
見出し1 5/9 5/10 5/11 5/12 5/13 5/14 5/15
9時
見出し2 100 200 50 125 90 700 1200
見出し1 5/16 5/17 5/18 5/19 5/20 5/21 5/22
10時
見出し2 100 200 50 125 90 700 1200
: : : : : : : :
- Re: 横に出力した時の見出し
どむ - 2005/05/20(Fri) 10:23 No.703
- 自己レスです。
「セクションエキスパート」−「レイアウトタブ」の「複数の列でグループを書式設定」を
チェックする事で解決しました!!!
SQL文の書き方について
かおる - 2005/05/19(Thu) 11:02 No.695
先日、PDF出力についての質問をした者です。
PDFへのエクスポートはできるようになりましたが、できたPDFを見るとデータが
出力されていません。
ReportオブジェクトのSQLQueryStringプロパティか
SQLExpressionFieldDefinition オブジェクトのTextプロパティあたりに
SQL文をセットすればよさそうに思えるのですが、具体的な構文の書き方がわかりません。
どなたかご存知の方がいましたら教えてください。よろしくお願いいたします。
開発環境は以下のとおりです。
Crystal Reports 10
VB6
RDC
ORACLE 9i(ODBC接続)
- Re: SQL文の書き方について
Kimberly - 2005/05/19(Thu) 14:24 No.697
- かおる様
データベースのメニューから「SQLクエリーの表示」で表示される内容を
そのままRDCのSQLQueryString に設定してみてください。
(例)
Dim sqlstring As String
sqlstring ="SELECT" _
& " `Customer`.`顧客番号`" _
& " From `Customer` `Customer`"
Report.SQLQueryString = sqlstring
- Re: SQL文の書き方について
かおる - 2005/05/19(Thu) 17:41 No.699
Kimberly様
例にならってSQLQueryStringにSQL文をセットしたらうまく行きました。
毎回迅速に回答していただき、誠にありがとうございます。
今後ともよろしくお願いいたします。
「複数行あるデータを横に並べて出力」についての質問
かよ - 2005/05/18(Wed) 15:55 No.689
VB.NET 2003で開発しています。
複数行あるデータを横に並べて出力に関して、以下のように表示したいのですが、どうすればよろしいでしょうか?よろしくお願いします。
Cまでの場合
―――――――――――
|項目名@| 項目名A|
―――――――――――
|A1 | A2 |
―――――――――――
|B1 | B2 |
―――――――――――
|C1 | C2 |
―――――――――――
D以降がある場合
――――――――――― ―――――――――――
|項目名@| 項目名A| | 項目名@| 項目名A|
――――――――――― ―――――――――――
|A1 | A2 | | D1 | D2 |
――――――――――― ―――――――――――
|B1 | B2 | | E1 | E2 |
――――――――――― ―――――――――――
|C1 | C2 |
―――――――――――
- Re: 「複数行あるデータを...
Kimberly - 2005/05/19(Thu) 05:49 No.691
かよ様
レポートの詳細セクションの「複数の列で書式設定」をチェックし、レイアウトタブから
印刷方向を「縦から横」を選択するとご希望に近いレポートになると思います。
どこで列を変えるか調整が必要ですが・・
用紙サイズ、表示領域のサイズ、行間、列間のサイズにより変化しますので適当に調整してみてください。
- Re: 「複数行あるデータを...
かよ - 2005/05/19(Thu) 10:20 No.693
Kimberly様 ご回答ありがとうございます。
詳細な質問なのですが、項目名@、項目名Aを詳細セクションに入れると
――――――――――― ―――――――――――
|項目名@| 項目名A| |項目名@| 項目名A|
――――――――――― ―――――――――――
|A1 | A2 | |C1 | C2 |
――――――――――― ―――――――――――
|項目名@| 項目名A| |項目名@| 項目名A|
――――――――――― ―――――――――――
|B1 | B2 | |D1 | D2 |
――――――――――― ―――――――――――
のようなイメージで、項目名@、項目名Aをグループヘッダもしくはヘッダに入れると
(Bまでの場合)
――――――――――― ―――――――――――
|項目名@| 項目名A| |項目名@| 項目名A|
――――――――――― ―――――――――――
|A1 | A2 |
―――――――――――
|項目名@| 項目名A|
―――――――――――
|B1 | B2 |
―――――――――――
のような感じになるかと思います。
右側の項目名@、項目名Aの出力・非出力はコードなどで色々制御しないといけないのでしょうか?
何かアドバイスがあればよろしくお願いいたします。
- Re: 「複数行あるデータを...
Kimberly - 2005/05/19(Thu) 14:15 No.696
- かよ様
はい、色々と式フィールドや条件式等を利用することになります。
例えば、一番最初の表示イメージを例にします。
この場合、1ページに2列で表示させるものと仮定します。
ページヘッダーに項目名を挿入します。
------ 1列分 ------- ------ 2列分 -------
ページヘッダー|項目名@ | 項目名A| |項目名@| 項目名A|
詳細 {x.項目名@}{x.項目名A}
行数は、4つとします。その結果、4行x2列のレポートになりますね。
2列目の項目名の表示は、1ページから最終ページ-1までは表示されるものとします。
3つの式フィールドを作成します。
詳細には、以下の式フィールドを挿入します。
WhilePrintingRecords;
//変数のカウントアップ
NumberVar cnt:=cnt+1;
レポートヘッダーとページフッターには、以下の式フィールドを挿入します。
WhilePrintingRecords;
//変数のリセット
NumberVar cnt:=0;
2列目の各項目の「非表示」の条件式に以下の式を挿入します。
WhilePrintingRecords;
NumberVar cnt;
cnt < 5 and TotalPageCount = PageNumber
この結果、最終ページの2列目にデータが無い場合、項目名を非表示にします。
- Re: 「複数行あるデータを...
かよ - 2005/05/19(Thu) 14:58 No.698
- 色々とありがとうございます。
参考にさせていただきます。