クリスタルレポート8でのFormulaとは?

このQ&Aのポイント
  • クリスタルレポート8を使用してアクセスのMDBのテーブルの中身を出力する際、特定のグループ(Aグループ)だけを出力する方法について教えてください。
  • Formulaという言葉を耳にしたことがありますが、その詳細について理解できません。どのような機能なのでしょうか?
  • ワークテーブルに対象のレコードだけを入れて全件出力する方法は今の状態ではできません。別の方法でAグループだけを出力することは可能でしょうか?
回答を見る
  • ベストアンサー

クリスタルレポート8でのFormula??たすけてください。

開発環境 windows2000 SP3 visualbasic6.0 SP5 crystlreport8.0 今クリスタルレポート8で アクセスのMDBのテーブルの中身を レポートに出力しています。 テーブルの中身には Aグループ Bグループ Cグループ  の3つが全て入っているとして VBからクリスタルレポートを出力する際に ワークテーブルに全レコードが入った状況で クリスタルレポートに出力する際に Aグループだけを出力させたいのですが そのようなことは可能でしょうか? 可能であれば方法を教えて下さいませんでしょうか? Formulaというのをちらっと耳にしたのですが 何のことやら・・・涙 元のワークテーブルに対象のレコードだけを 入れておいて全件出力すればよい話なのですが それは今できない状態です。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mfuku
  • ベストアンサー率50% (173/345)
回答No.4

他の質問を見ました。 APIを使用して、帳票を出力されているのですね。 私の場合、ビューワーコントロールやオブジェクトを宣言することにより出力してますので、以下の私の回答とはそもそも出力の方法が違うようですね。 少なからず、出力方法は違いますが、私の場合、以下の方法で問題なく目的を達成しております。 他の方からの回答をご期待下さい。

SEAMOON
質問者

お礼

何度も回答ありがとうございます!!! ビューワーコントロールを使用しての帳票出力は 行ったことがあったのですが、Starfaxの関連で APIを使わざるをえない状況です。 丁寧な回答に感謝致します。

SEAMOON
質問者

補足

http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/0003/api/hyo8.html ここの表にはない SelectionFormulaに対応するAPIが分かれば何とかなりそうですが。。。 どなたか知らないでしょうか。

その他の回答 (3)

  • mfuku
  • ベストアンサー率50% (173/345)
回答No.3

CRViewer1 とは Crystal ReportsのReport Viewerコントロールのことです。 ここでは、Report Viewerのプレビュー出力を例としてます。 また、オブジェクトの認識のためには、Ctystal Reportsのライブラリを使用するわけですので、参照設定で、 Crystal Report 8 ActiveX Designer Run Time Library Crystal Report 8 ActiveX Designer Design Time Library(Internal) 等をチェックしてください。 また、StarFaxについては、残念ながらわかりません。 いずれにせよ、レコード選択式への条件設定でしたらReportオブジェクトのRecordSelectionFormulaプロパティを介して設定することができます。

SEAMOON
質問者

お礼

Declare Function PESetSelectionFormula Lib "crpe32.dll" (ByVal printJob%, ByVal formulaString$) As Integer で解決することができました!!!! ありがとうございました。

  • mfuku
  • ベストアンサー率50% (173/345)
回答No.2

#1の者です。 すみません、先ほど下記の宣言が抜けてましたね。 追加します。 Dim objApplication As New craxdrt.Application

SEAMOON
質問者

補足

ユーザー定義型が宣言されていません・・と出ます。

  • mfuku
  • ベストアンサー率50% (173/345)
回答No.1

クリスタルレポートのレコード選択式に設定する内容をそのままVBからRecordSelectionFormulaプロパティを通して渡してあげれば可能です。 具体的にはこんな感じです。 Dim objReport As craxdrt.Report Set objReport = objApplication.OpenReport("レポートファイル名.RPT", 1) objReport.RecordSelectionFormula = "{テーブル名.フィールド名} = 'Aグループ'" CRViewer1.ReportSource = objReport CRViewer1.ViewReport 他にも、ソート順や、DBの接続先など、同様の方法(それぞれ専用のプロパティ)で、色々なものを変更することができますので応用してみてください。

SEAMOON
質問者

お礼

おぉぉ!?SelectionFormulaというのに 条件を書くとうまく抽出できました。 ありがとうございます。 これで第一段階はクリア・・・。 今この抽出してできたクリスタルレポートを StarFaxの機能を使ってTIFファイルにして それをFAX送信させたいのです。 単純にワークテーブルの中身をすべてクリスタル レポートに表示させてできたレポートをTIFファイル にはできたのですが、 この抽出条件を渡す方法が分からず困ってます。

SEAMOON
質問者

補足

CRViewer1 とは何でしょうか・・

関連するQ&A

  • クリスタルレポートのグループヘッダ

    Visualbasic 2013とクリスタルレポートを利用してアプリケーション開発を行っております。 クリスタルレポートはサブレポートを準備しており、 メインとなるレポートの詳細部にサブレポートを配置しております。 このような構成でレポートを出力した場合、 必ず1ページ目にグループヘッダのみ出力され、それ以降は正常に出力される事象が発生しております。 1ページ目にグループヘッダのみ出力される理由が分からない状況です。 大変お手数お掛けいたしますが分かる方がいらっしゃいましたら ご教授頂けますと幸いです。

  • クリスタルレポート Barcode2of5関数

    以下の開発環境でITFバーコード付きの帳票を出力したいと考えています。 Visualbasic2013 クリスタルレポート クリスタルレポートの関数で「Barcode2of5」を利用したいと考えているのですが、 引数が分らず利用方法が分らない状況です。 お手数ですが、利用方法が分る方がいらっしゃいましたらご教授頂けますと幸いです。

  • VB.NET→クリスタルレポートにおける変数の渡し方

    VB.NETの中で、クリスタルレポートを使用しているのですが、.NET上で配列に入れた物とテーブルの1カラムの値を比較し、一致するレコードだけを抽出したいのですが、.NET上で配列にいれた値をどうやってクリスタルレポートに渡せば良いのでしょうか?

  • クリスタルレポートからPDFを作るには?

    VB6.0(SP6),Crystal Report8.5 で開発をしています。 クリスタルレポートからPDFファイルまたはJPEGファイルが作りたいのですが、方法が全然分からず困っています。 何かご存知の方は教えてください。 そもそも8.5ではそういう事が出来るのでしょうか? また、クリスタルレポートからの印刷時、プリンタにAdobePDFを指定すればPDFファイルは作れるのですが、その際、ファイルの保存先を聞くウィンドウが表示されてしまいます。 ユーザ操作なしにPDFを作りたいので、このようなウィンドウを表示させなくする方法をご存知でしたら教えてください。 宜しくお願いします。

  • クリスタルレポートについて素朴な疑問

    クリスタルレポートについて素朴な疑問。 クリスタルレポートはぜんぜん触ったことがありません。 クリスタルレポートが必要になるかもしれないので、クリスタルレポートについて調べようと本屋さんで、 書籍をパラパラめくってみました。 クリスタルレポートについての専門的な書籍はありませんでしたが、プログラミングの書籍の中に一部解説がある書籍が数冊あり、簡単な使用例についての図と説明がありました。 簡単な例しか載っていないからだったのかもしれませんが・・。どの書籍でも以下のようなことが書かれていました。 レポートのヘッダー/フッダー ページのヘッダー/フッダー 詳細エリア の位置にVisual Studio上のデザイナで帳票イメージを 作成する。 ラベル等の固定的に文言が出力される部分もあれば、 データベースのある項目に関連づいているものもある。 データベースのある項目に関連づいているものに関して、エクスプローラ型のテーブル名と項目名のツリーから項目を帳票イメージにドラックアンドドロップしていくようなイメージでした。 ・発生した素朴な疑問 DBの内容を帳票に出力する場合、デザイナで 設定するこのやり方だと、あらかじめ帳票の出力イメージにあったテーブルイメージのようなビューを定義しておかないと、できないのでは? クリスタルレポートを使う現場では、このように帳票の出力イメージに即した問い合わせをあらかじめビューとして、定義して、デザイナのエクスプローラにでてくるようにして、使用するのが一般的なのでしょうか? この場合、Whereの絞り条件の式の一部が動的に変化する場合はどうするのでしょうか? 書籍の一部に少しだけある解説を見た程度で 通り一辺倒な簡単な例が載ってるものしかみてないので変な質問になってるかもしれませんが・・。

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

    はじめまして 仕事でクリスタルレポート使うことになったのですが、 初心者のためわからないことが多々あり教えていただきたいのです。 レコード数に関係なく空行を出力したいのですが どうすれば実現できるのでしょうか? たとえば、10行明細を出力するとしたら レコード件数が1件でも残りの9行は空行で出力するという感じです。 クリスタルレポートのバージョンは 8.5.0.217です。 データベースはOracle9を使用しています。 なにぶん初心者なので具体的な手順を教えていただけると ありがたいです。 お手数をおかけしますが、どうぞ何か良いアドバイスを よろしくお願いします。

  • クリスタルレポートでメモリ不足・・・

    初めて質問します。 WINDOWS2000 Pro VB6.0 データベース:ORACLE VBで売上伝票を入力して、クリスタルレポートで伝票発行しようとしています。 用紙はA4縦でレーザープリンターから出力させようとしています。 クリスタルレポートで線も引いています。 1枚に3回同じ内容のものを印刷させようと設定しているのですが(全てページヘッダーに設定しています。)VBから印刷をかけると次のようなエラーが出ます。 “CRWPRINT.CRW STATUS : 500 メモリ不足のため操作を実行できません ” というメッセージです。 データは作成されているので、クリスタルレポートで直接出すと印刷されます。 クリスタルレポート側で半分ほどまで項目を減らしてみたりしたのですが、結果は同じでした・・・ クリスタルレポート側の設定でしょうか? それともVB?はたまたオラクルのせっていなのでしょうか? なにか複雑でもうしわけありませんがよろしくお願いいたします。

  • アクセスのレポートについて

    アクセスでテーブルAのデータをレコードソースとするレポートAを作成したのですが、レポートAのなかにテーブルBのレコードソースを追加することは可能でしょうか。  また一からレポートを作り直さずにすむ方法が知りたいのですが。

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

    クリスタルレポート8の式フィールドで日付を表示させようと思っています。 標準では『YYYY/MM/DD』形式なのですがこれを『YYYY-MM-DD』で表示させたいのですがうまくいきません。 式フィールドには if A ="1" then formula = CurrentDate と記述しています。 Aの値が"1"ならば日付を表示です。 説明が下手で分かりづらいかもしれませんが、 補足しますのでヨロシクお願いします。

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

    クリスタルレポートを作る時、 元になるデータベースを選んでテーブルを選んで、 必要な項目を画面に貼り付けていくわけですけど、 たくさん画面に式なり項目なりを貼り付けたあとで、 テーブル1 から 全く同じ構造のテーブルである テーブル2に 出力元を変えたいとします。 私は今まで、「データベース」→「データベースからレポートを追加」 でテーブル2を追加し、そのあとで、「データベース」→ 「レポートから ファイルを削除」でテーブル1を選んで消していました。 すると、項目をそのまま貼り付けてあったものはすべて消えてしまいますが、 式を作ってその中に、[テーブル1.項目1]と書いてあった場合は そのままで残っています。 その状態で例えば、プレビューボタンを押すとすると、 当然もうテーブル1はないので、エラーとなります。 その式の中のテーブル1をすべて手動でテーブル2に変えるという作業を していました。 バージョンは問いません。使っているのは、7と8です。 何か一度に変える方法はないのでしょうか? 式の中のものをすべて置き換える方法などないでしょうか? 他の方法でもいいのでどなたか至急教えて下さい。 項目がたくさんある時とても大変です・・・