一.原理
データベースを照合しって,フィールドが帳票に示意しています。
●データベース(ワークテーブル)を参照してデータを印字する
二.手順
<CrystalReport>
【CockTail】
CockTailの中に,たいてい,ワークにデータを追加して,帳票用レコードを生成する。
●カクテルの場合は印字用ワークテーブルにデータを追加し帳票にデータを印字する
3.PL/SQLで,ワークにデータを追加する。
●PL/SQLで引取った対象データ条件でワークテーブルにデータを追加するSQL文を作成する
2.M01の中に,画面の範囲はG_PlCnd.sCndStr()で保存する。それから,PL/SQLにその範囲を使用することができます。
●VBのM01モージュールには画面で指定する条件をG_PlCnd.sCndStr()配列に格納し引数としてPL/SQLに渡す
4.グループ計はグループフッターにセットしない,ページフッターにセットするとき,下記条件に従い,該当グループ計を着力します。
●グループ計を頁フッターに印字する場合
【VB】
1.レコードを作成する
①ワークにデータを追加
仕様書の通りに,ワークにデータを追加して,帳票用レコードを生成する。
●印字仕様の通り、ワークテーブルに印字データを追加し帳票印字用レコードを生成する。
例:
?コントロールCrystalReportを使用するとき
●CRコントロールを使用する場合
m_Report.Database.SetDataSource WorkRs, 3, 1
(WorkRs:ワークレコード;m_Report:レコード)
●WorkRs:ワークデータレコードセット;m_Report:レポートオブジェクト
?コントロールCSFormとPreviewウードを使用するとき
●プレビューウィンドウ(CR8.5のみ)を使用する場合
でも,同じ条件に従うレコードは一つ頁で示意しないなら,グループ計が最後の頁のみに示意するために,該当オブジェクトの書式の[非示意]の式を編集してください。
●頁フッターに設定された項目は改ページ時点で印字してしまうので
グループが変わっていない場合項目を「非示意」に設定する
仕様書の通りに,レコードの選択条件でSQL条件文を作成する
●CRコントロールのRecordSelectionFormulaプロパティにデータ選択条件(SQL文)をセットする
例:
?コントロールCrystalReportを使用するとき
aSql = "{Table.A} >= " & StartA
aSql = "{Table.A} <= " & EndA
?コントロールCSFormとPreviewウードを使用するとき
aSql = "{Table.A} >= " & StartA
aSql = "{Table.A} <= " & EndA
m_Report.RecordSelectionFormula = aSql
(aSql:SQL条件文;Table:表名;A:データ名)
③ADOを使用とき,データベースの開き方が違って,その他は②目と同じです。
●ADOを使用する場合、データベースの開き方法が違いますがその他の部分は2番目と同じ
2.帳票を印刷する
コントロールによって,印刷の方が違います。
●使用コントロールによって印刷方法が違う
例:
?コントロールCrystalReportを使用するとき
CrEXP.ReportFileName = REPORTPATH & REPORTNAME & ".RPT"
CrEXP.SelectionFormula = aSql
CrEXP.WindowTitle = " "
'PrintReport aPrtFileName, CrEXP, DEST_WINDOW
PrintReport aPrtFileName, CrEXP, DEST_PRINTER
(CrEXP:コントロールCrystalReportの名;REPORTPATH:レポートの格納先;REPORTNAME:帳票の名)
1.IRTで,PL/SQL用のテーブルの”使用辨别”は「VB」と「SQL?をセットしてください。
●IRTでワークテーブルを追加してテーブルの”使用辨别”を「SQL」に設定する
【帳票】
1.データベースの”保存場所の設定”と”エイリアスの設定”に該当プロフラムで設定して,ファイルの””に,該当帳票の名を設定してください。
●帳票に関連するDBはプログラムで設定しますので帳票では"NEW"で設定してください
2.データベースの”データベースの照合”を行う。
●”データベースの照合”をチェックしてください
3.帳票の仕様の通りに,データベースや式などをセットする。
●印字仕様の通り印字項目と须要な式を作成する
三.留意点
<CrystalReport>
1.ADOで使用するとき,データベースの“着力時データベースを照合する”をセットしてください。
ADOで使用しないとき,データベースの“着力時データベースを照合する”をセットしないください
●ADOを使う場合だけ“着力時データベースを照合する”をチェックする
2.データベースで日付と時刻があって,帳票で日付に示意のみ,関数DateTo2000を使用していいです。
例:DateTo2000 (CDate(Year(DATE),Month(DATE),Day(DATE)),0 )
(DATE:フィールド名)
●日付時刻型の項目を帳票に日付形式で示意する場合はDateTo2000関数を使った方がいいでしょう
5.書式と位置が特に注意してください。
●???特に注意する须要がある
例:ToNumber (AAA)
(AAA:フィールド名)
そのデータを指定の桁数で編集なら,関数ToNumberを使用する前に,関数NumberToCode39(CrystalReport8.5)と関数Replace(CrystalReport7.0)を使用していいです。
●更に該当項目を指定形式に編集する须要があるなら
CrystalReport8.5の場合、NumberToCode39関数を使う
CrystalReport7.0の場合、Replace関数を使う
使用方法は以下の例に参照してください。
例:検品実績データ.伝票番号(下桁から7桁)でセットする
?CrystalReport7.0:right(mid(NumberToCode39 (ToNumber (DENNO),0),2,length(NumberToCode39 (ToNumber (DENNO),0))-2),7)
?CrystalReport8.5:ToNumber(Right(Replace (Replace (ToText (DENNO),".00" ,"" ),",",""),7))
?コントロールCSFormとPreviewウードを使用するとき
Set aPreviewForm = New frmPreview
If Dest = DEST_WINDOW Then
aPreviewForm.Caption = TITLE
aPreviewForm.Show ' ビューワーコントロールを貼り付けたフォームを示意
aPreviewForm.CRViewer1.ReportSource = m_Report
m_Report.ReadRecords ' データ読み孙俪面临罚款込み(これがないとだめ)
aPreviewForm.CRViewer1.ViewReport ' プレビュー
Else
m_Report.ReadRecords ' データ読み込み(これがないとだめ)
PrintReport m_Report, aRepNam, Dest ' 印刷
End If
(aPreviewForm:Previewウード;aRepNam:帳票名)
?該当グループ名フィールドは最後のレコードです。
●改ページを制御するフィールドをグループ化する
?または,以前グループ名フィールドと該当グループ名フィールドが変わります。
●
②ワークにデータを生成しわないが,データベースを読み込み
●ワークテーブルを使用しないで直接データテーブルを参照して印字する場合
例:グループ1:TORIHIKICD
グループ2:NOHINDATE
グループ3:MISECD
下記条件に従い、店計は着力する。
NextIsNull ({MISECD}) or {TORIHIKICD}<>Next ({TORIHIKICD}) or {NOHINDATE}<>Next ({NOHINDATE}) or {MISECD}<>Next ({MISECD})
下記条件に従い,[非示意]の式を編集してください。
not (NextIsNull ({MISECD}) or {TORIHIKICD}<>Next ({TORIHIKICD}) or {NOHINDATE}<>Next ({NOHINDATE}) or {MISECD}<>Next ({MISECD}))
3.データベースはOracleだなら,示意するデータが“.00”と桁区切り(,)を自動追加していますが,関数ToNumberを使用していいです。
●データベースはOracleで通貨型フィールドがなぜか自動的通貨形式に編集し示意されている
対策:ToNumber関数を使った方がいいでしょう
<ActiveReport>
一.手順
1.範囲より,レコードを作成します。
●印字対象データのレコードセットを作成する
2.ActiveReport_FetchDataの中には,レコードを帳票にセットする。
●ActiveReport_FetchDataプロシージャの中で各印字項目の値をセットする
二.留意点
●合計項目がある場合はグループのプロパティを以下のように設定してください
1.合計とき,SummaryFuncで0-ddSFSumをセットしてください
SummaryRunningで2-ddSRAllをセットしてください
SummaryTypeで1-ddSMGrandTotalをせっとしてださい
一 <CrystalReport>
1 [ADO] で使用する場合: データベースの’着力時データベースを照合する’をチェックする。
その他の場合は「データベース」の’着力時データベースを照合する’をチェックなくてもいいです。
2 [ADO]で使用する場合: 伝票は多表関連場合(特に表間の関連キーが2キー以上の時)は無効です。
そのことに注意してください。
修正方法:SUBREPORTを使用する。
二 <ActiveReport>
1 GROUP変わった場合、改ページの方法: [NEWPAGE]属性は’1-Before’をセットする。
2 GROUP計方法:[SummaryFunc]属性は’0-ddSFSum’をセットする。
[SummaryGroup]属性は’GroupHeaderXX’をセットする。
[SummaryRunning]属性は’1-ddSGroup’をセットする。
[SummaryType]属性は’3-ddSMSubTotal’をセットする。
3 合計方法:[SummaryFunc]属性は’0-ddSFSum’をセットする。
[SummaryGroup]属性は’’をセットする。
[SummaryRunning]属性は’2-ddSRAll’をセットする。
[SummaryType]属性は’1-ddSMGrandTotal’をセットする。
4 用紙のサイズはA4縦場合:伝票の横WIDTH < 20CM 、かつ伝票左側は少し空白を保持しなければなりません、
用紙のサイズはA4横場合:伝票の横WIDTH < 29CM 、かつ伝票左側は少し空白を保持しなければなりません。
5 GROUP変わったないかつ改ページ場合:
仕様は改頁後にGroupHeaderは繰り返すれば場合、[Repeat]属性は’Every Page’をセットする。