headmaster_01的博客


一.原理
 データベースを照合しって,フィールドが帳票に示意しています。
●データベース(ワークテーブル)を参照してデータを印字する
二.手順 

<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’をセットする。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值