過去ログ
キーワード 条件 表示

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

色々とありがとうございます。
参考にさせていただきます。

| 1| 2| 3| 4| 5|