過去の桐井戸端BBS (桐ver.9)
24964 レポートの一覧表オブジェクトのヘッダに絞り込みの範囲を印字したい 脱初級! 2004/02/19-14:55
いつも勉強させて頂いております。
またご教授お願いしたく、よろしくお願い申し上げます。
表のデータに例えば、100レコードあり、項目[採用]の欄に"○"があるデータのみを絞込み、
レポートで印刷処理したい、と思っています。

そのレコードには項目:[日付](日時型データ)があり、
"平成16年 2月19日"ような形でデータをもっています。
その他に、項目:[旬]には、"上旬"・"中旬"・"下旬"の
いずれかの文字列データが入っています。

このとき、例えば、

75行目(項目:[日付]の値は、"平成15年10月 1日"で同じレコードの項目:[旬]の値は"上旬")

から、

100行目(項目:[日付]の値は、"平成16年 1月31日"で、同じレコードの項目:[旬]の値は"下旬")

までのレコードを一覧表印刷する場合に、レポートの一覧表オブジェクトのページヘッダの部分に

#文字列([日付])+[旬]+"〜"+#文字列([日付])+[旬]

というテキストオブジェクトを貼付けています。
これを印刷しようとすると、
上の部分は、

2004年 1月31日下旬〜2004年 1月31日下旬

と印刷されてしまいます。(項目:[日付]の100行目のみ参照されている格好。)

これを

平成15年10月上旬〜平成16年1月

・日付を元号に月まで表示
・全部全角数字に変更

というように印刷したいのですが、レポートの関数をどう書けばよいのかわかりません。

よろしくご教授のほど、お願い申し上げます。

24969 Re:レポート内関数の記述の仕方について うにん 2004/02/19-19:43
記事番号24964へのコメント

>平成15年10月上旬〜平成16年1月

これは「頁計」にあたる値なので、一覧表ではむずかしいです。
頁の一番下に印字するならできますが、頁の最初では最後の行の値は取得できないので。


24974 一括処理を併用するなら 佐田 守弘 2004/02/19-22:33
記事番号24964へのコメント
脱初級!さん
印刷前に絞り込みを行うとの事なので、その処理も含めて一括処理を併用し、
一括処理の中からレポート印刷を行うという前提であれば、何とかできるかと思います。
印刷対象レコード(○があるデータ)を絞り込んだら、日付順に並べて、
先頭行と最終行にジャンプさせて、それらの行の日付のデータを変数に取り込んでおきます。
そして所定の書式に文字列演算を行って、開始と終了の値(○年○月上旬など)を作っておきます。
 ジャンプ 行番号=先頭
 代入 &開始=#文字列(#年([日付]))+"年"
      +#文字列(#月([日付]))+"月"
      +#条件選択(#日([日付])<11,"上旬",#日([日付])<21,"中旬",1,"下旬")
 ジャンプ 行番号=最終
 代入 &終了=#文字列(#年([日付]))+"年"
      +#文字列(#月([日付]))+"月"
      +#条件選択(#日([日付])<11,"上旬",#日([日付])<21,"中旬",1,"下旬")

後はレポート印刷の中で、&開始と&終了をソース値として印刷してみて下さい。

佐田守弘(KS-00119)
24986 Re:一括処理を併用するなら 脱初級! 2004/02/20-17:44
記事番号24974へのコメント
>一括処理の中からレポート印刷を行うという前提であれば、何とかできるかと
>思います。

いつも貴重な助言をありがとうございます。
一括処理ですかぁ。脱初級!にはまだレベルが高すぎるようです。(^^;;
これを機会に少し勉強してみます。
貴重なアドバイスをありがとうございました。

24998 Re:一括処理を併用するなら うにん 2004/02/21-10:35
記事番号24986へのコメント

ページごとに違うものを印字したいのかと思っていましたが、
選択した行(印字対象)の最小・最大値でいいのなら
結合表でできそうな気がします。
(一覧表のヘッダに総計を置けないとは...)
25017 reレポートの期間の出し方 今村 誠 2004/02/22-11:54
記事番号24964へのコメント
脱初級!さんこんにちは、
ページヘッダのオブジェクトを集計にします。
オブジェクト名が”集計8”等になると思います。
オブジェクトの属性の集計タブの集計種別を総計にします。
ソースのところに下記の式を貼り付けてみて下さい。

#計算(#代入(&STR,""),#代入(&STR,#s(&STR,1,"平成"+#str(#元号年([日付]),2)+"年")),
#代入(&STR,#s(&STR,2,#str(#月([日付]),2)+"月")),
#代入(&STR,#s(&STR,3,#cond(
#日([日付])<11,"上旬",#日([日付])<21,"中旬",1,"下旬"))),
#代入(&STR,#s(&STR,4,"〜"+#str(#元号年(#項目値([日付])),2)+"年")),
#代入(&STR,#s(&STR,5,#str(#月(#項目値([日付])),2)+"月")),
#代入(&STR,#s(&STR,6,#cond(
#日(#項目値([日付]))<11,"上旬",#日(#項目値([日付]))<21,"中旬",1,"下旬"))),
#全角(#s(&STR,",","")))

生成される文字列は
平成03年05月上旬〜15年12月下旬
のようになります。0がいらない場合は”,2”を削除します。
グループ項目のない表でテストしたので、同じ結果が出るかはわかりません。
25089 Re:reレポートの期間の出し方 脱初級! 2004/02/25-16:56
記事番号25017へのコメント
今村さん、こんにちわ。
久しぶりにのぞいてみたら、とてもうつくしい回答をいただいており、
びっくしています。
でも、脱初級!にはこの計算式の意味がわかりません。
ご親切な方、觧説頂けませんでしょうか?


>オブジェクト名が”集計8”等になると思います。
>オブジェクトの属性の集計タブの集計種別を総計にします。
>ソースのところに下記の式を貼り付けてみて下さい。
>
>#計算(#代入(&STR,""),#代入(&STR,#s(&STR,1,"平成"+#str(#元号年([日付]),2)+"年")),
>#代入(&STR,#s(&STR,2,#str(#月([日付]),2)+"月")),
>#代入(&STR,#s(&STR,3,#cond(
>#日([日付])<11,"上旬",#日([日付])<21,"中旬",1,"下旬"))),
>#代入(&STR,#s(&STR,4,"〜"+#str(#元号年(#項目値([日付])),2)+"年")),
>#代入(&STR,#s(&STR,5,#str(#月(#項目値([日付])),2)+"月")),
>#代入(&STR,#s(&STR,6,#cond(
>#日(#項目値([日付]))<11,"上旬",#日(#項目値([日付]))<21,"中旬",1,"下旬"))),
>#全角(#s(&STR,",","")))
>
>生成される文字列は
>平成03年05月上旬〜15年12月下旬
>のようになります。0がいらない場合は”,2”を削除します。
>グループ項目のない表でテストしたので、同じ結果が出るかはわかりません。

25096 Re:reレポートの期間の出し方 今村 誠 2004/02/25-19:14
記事番号25089へのコメント
脱初級さんこんにちは、投稿後に式を見直したら
変数を使用する必要がないことに気が付きましたが、
御返事がなかったのでそのままにしていました。

#全角("平成"+#str(#元号年([日付]),2)+"年"+
#str(#月([日付]),2)+"月"+
#cond(
#日([日付])<11,"上旬",#日([日付])<21,"中旬",1,"下旬")+
"〜"+#str(#元号年(#項目値([日付])),2)+"年"+
#str(#月(#項目値([日付])),2)+"月"+
#cond(
#日(#項目値([日付]))<11,"上旬",#日(#項目値([日付]))<21,"中旬",1,"下旬"))

上記の式でもうまくいくと思うのですが、(平成03年05月上旬〜15年12月下旬)

#sstr(#TISTR([日付],3,1,3),1,#文字位置(#TISTR([日付],3,1,3),"月"))+
#cond(#日([日付])<11,"上旬",#日([日付])<21,"中旬",1,"下旬")+"〜"+
#sstr(#TISTR(#項目値([日付]),3,1,3),1,#文字位置(#TISTR(#項目値([日付]),3,1,3),"月"))+
#cond(#日(#項目値([日付]))<11,"上旬",#日(#項目値([日付]))<21,"中旬",1,"下旬")

この式でもいいと思います。(平成3年5月上旬〜平成15年12月下旬)

[日付]データの並び順が重要です。
「昨年から今年」順だと上記の式で、
「今年から昨年」の場合は注意が必要です。
#項目値([日付])この関数がポイントだと思います。

以前の書き込みの分で
#代入(&STR,#s(&STR,2,…………))
の    "#s(" は "#文字置換("と同じ意味です。
コンマ区切りの2番目の文字を次の文字と交換する
と言うことです。
2番目のコンマが存在していない場合コンマを補います。
最期にコンマが不要なのでもう一度置換してコンマを削除したのです。
25098 Re:reレポートの期間の出し方 脱初級! 2004/02/25-19:22
記事番号25097へのコメント
すいませんです。間違って「投稿する」を押してしまいました。
今村さんのご提案には本当に脱帽です。
目からウロコが落ちました。感謝感激です。ありがとうございました。

ところで、
>[日付]データの並び順が重要です。
>「昨年から今年」順だと上記の式で、
>「今年から昨年」の場合は注意が必要です。
>#項目値([日付])この関数がポイントだと思います。
ご指摘の通り、データの並びは逆順(上のレコードほど新しい)で印刷したいので、ご指示のとおりに書くと、

平成16年1月上旬〜15年12月下旬

のようになってしまいます。
自分の理解度ではとても修正できませんです。できましたら、
再度ご教授のほど、お願い申し上げます。m(_ _)m


25100 Re:reレポートの期間の出し方 今村 誠 2004/02/25-19:58
記事番号25098へのコメント
脱初級さんこんにちは、
並び順に関係なく期間を印刷するときに「昨年から今年」になるようになる式を考えてみました。
最初の日と最期の日を比べます。

#計算(#代入(&STR,""),
#代入(&STR,#s(&STR,1,
#str(#元号年([日付]),2)+"年"+
#str(#月([日付]),2)+"月"+
#cond(
#日([日付])<11,"上旬",#日([日付])<21,"中旬",1,"下旬"))),
#代入(&STR,#s(&STR,2,
#str(#元号年(#項目値([日付])),2)+"年"+
#str(#月(#項目値([日付])),2)+"月"+
#cond(
#日(#項目値([日付]))<11,"上旬",#日(#項目値([日付]))<21,"中旬",1,"下
旬"))),
"平成"+#全角(#cond(#項目値([日付])>[日付],
#対応文字列(&STR,1)+"〜"+#対応文字列(&STR,2),
1,#対応文字列(&STR,2)+"〜"+#対応文字列(&STR,1))))
25128 ありがとうございました。 脱初級! 2004/02/26-11:52
記事番号25100へのコメント
今村様、数々の秘技をご披露頂き本当に有難うございました。
今村様の桐関数の造詣の深さにただただ感服しました。
本当に助かりました。これで美しいレポートができました。
今回は重ね重ねご教授頂き、ありがとうございました。m(_ _)m

脱初級!

戻る