過去の桐井戸端BBS (桐ver.7)
1307 日付の絞り込み 前田 1999/2/12-07:58
現在桐5.1から7.1への売り上げプログラムの移行中です。
日付処理が基本的に違いますので表の変更、CMDの変更で苦労しております。(譲渡プログラム)
日付の絞り込みでストップしてしまいました。
絞り込み [日付]{=<#月数加算(&年月日,-1,1)}で日付項目のデータを選択したいのですが
うまく行きません、日付データを文字列に変更する項目を作成したほうがいいのでしょうか。
ご指導ください。
1310 Re: 悲しげ 1999/2/12-13:56
記事番号1307へのコメント
どもっ、前田さん
状況が判らないことが数点あります。
ひとつは、これがうまく行かないのは、v5(v5.1と云うものは存在しません)上でのことなのか、
v7上でのことなのか、と云う点です。

もしv5上でなら、選択の比較式でこのような計算式は使えません。
ちょっとトリッキーな条件選択式を使えばできますが。
 例 [日付]=#cond([]=<#月数加算(&年月日,-1,1),[],[],#U,1,"1")
この時、[日付]項目は文字列型ですよね?

v7上でうまく行かないとすれば、おかしい可能性のひとつに、[日付]項目のデータ型の問題が
考えられます。
日時型になっていますか?

さて、その上で試してみると、レレレ、1件も選択されませんね(?_?)。
そこで、次のようにしたらうまく行きました。

 絞り込み [日付]=<#日時値(#月数加算(&年月日,-1,1))

この時、{ }囲みは有っても無くてもいいみたいです。
単に、#月数加算だけだと、おそらくデータ型は文字列のままなんでしょうね。
意識的に日時型に変換する必要があるようでした。
日時の扱いはよく判らなかったので、私は今までなるべく数値で逃げて来ましたが、
おかげさまでこの度は勉強になりました。(^^;)
1313 Re: 前田 1999/2/12-16:10
記事番号1310へのコメント
> 絞り込み [日付]=<#日時値(#月数加算(&年月日,-1,1))

大変ありがとうございました。
V7.1の日時型データのポイントが今一つ理解できてませんでした。
確かに&年月日は文字型ですので、日時型と比較する場合は”#日時値”の関数で変換しなくては
いけなかったのですね。
バッチリうまく行きました、ありがとうございます。
1315 Re: MIT 1999/2/12-16:46
記事番号1307へのコメント
桐V7になって項目タイプに日時項目が出来て便利な反面、これまでの一括処理でエラーが
発生するケースも多いようですね。
ところで日付型項目に対して絞り込みをしたい時に
例えば比較式で

[]=d”1999/02/12”
比較式先頭に小文字の「d」、とそれに続く文字列を””で括る
なお年、月、日の区別は「/」や「−」など区切りが分かれば良い。

と記述すると希望する絞り込み結果を得られます。表形式編集時など使うと便利です。
すでにご存知の事と思いますが、掲示板をご覧の皆様の参考になればと思い投函させて
いただきました。MIT
1316 Re: アックン 1999/2/12-16:56
記事番号1307へのコメント
前田さん、悲しげさん、MITさん>
勝手に回答をフォローしておきます。(わらぃ)

悲しげさんの記述でOKでしょうが、MITさんが書かれていたように
日時型の定数を用いた一括は次のようになります。

&STR="=<d"""+#月数加算(&年月日,-1,1)+"""
絞り込み [日付]_&STR

・会話形式では
日時型の項目で比較式を使って絞り込みたいときは、
>=d"1999/2/12" のようにします。
d"日時文字列"で日時型定数になります(dでもDでも可)。

・一括では
いったんこの定数を&STRに取得しておき、
絞り込み <項目名>_<文字列型変数>・・の書式にします。

 NIFTY/FAPPLI桐Q&A会議室で、#月数加算(&年月日,-1,1)を
使った回答を数日前に書いたばかりで、目に留まりました。

悲しげさん>
どうも昔から <項目名>_<文字列型変数> に縁があるようで・・。(わらぃ)

            アックン(=^・^=)
1318 Re: 川浪 1999/2/12-23:45
記事番号1307へのコメント
前田さん こんばんわ 
ちょっと質問の趣旨からははずれますが...
私もV5からV7へアップする作業で2000年対策も考え,西暦2桁文字列型を日時型に替え
ようとやってみました. が,途中でやりかたをかえました.

2000年問題に関係する表にすべて,例えば[年月日]項目(文字列型)に対しては
[年月日4桁](文字列型)という計算項目を追加し,[年月日]項目の頭2桁が50以下なら
頭に20をつけ,50以上なら頭に19を付けるという計算式を設定しました.そして索引名をかえずに
索引設定の項目を[年月日]から[年月日4桁]にかえました.

理由は,年月日での選択や検索のとき 文字列型でないと *など(ワイルドカード)が使えないこと,
一括処理や表の変更箇所が非常に多くなることなどです.

私共の会社のように,並びが おもな問題の場合 必ずしも日時型を使う必要がないと思いますし
手間もかけない方がいいと思いますが いかがでしょうか?
もし,すこしでも参考になれば嬉しく思います.

戻る