過去の桐井戸端BBS (桐ver.8)
16307 日付の計算でファイルが開いたときや実行途中で日付が変わったときに値が変わる方法はないのでしょうか 老人と桐 2002/06/14-07:51
日付は元号年で入力しており、整数で例えば[年][月][日]と分けています。
[年][月][日]は、作品の締め切り日を入力する事にしています。
締め切り日の有る物と、無い?物が有りますので、
無い物に付いては[年][月][日]にデータは入れません。

この他に[〆]と言う項目と、[TODAY]と言う項目が有ります。
[〆]は計算式で[年]×10000+[月]×100+[日]としました。
例えば平成14年6月15日は、140615と表示されます。

[TODAY]は変数を含む計算式です。
[&元号年]×10000+[&月]×100+[&日]としました。

そして項目の表示条件で、[〆]より[TODAY]の数が少ない時(〆前)は、
背景色をピンクに表示させ、[〆]日の当日以降は背景色を淡いグリーンに設定しました。
ここまでは上手く出来た筈なのですが・・・・
このファイルを開いた時に、[TODAY]を置換(再計算)させないと、
値が変わりませんので、ファイルを開くたびに置換が必要です。

ファイルを開いた時に、値が変わる方法は何か無い物でしょうか?。

桐の変数の[&元号年][&月][&日]は、桐を立ち上げた時の物で処理されている様で、
例えば徹夜で仕事をして(或いは桐を立ち上げたまま寝てしまって)日付が変わったにも関わらず、
日付は昨日のままなので、桐を一度立ち上げ直す必要が有ります。
これは仕方のない事なのでしょうか?
或いは何か解決策が有るのでしょうか?

お分かりの方が御座いましたら、御教示の程をお願い申し上げます。

16308 一括処理にトライしては? toshi-chan 2002/06/14-11:28
記事番号16307へのコメント
老人と桐さん、こんにちは。がんばっていらっしゃいますね。

★桐では、項目計算式を設定しておくと計算を自動的にしてくれますね。
しかし一旦データが確定してしまうと、それを変更するためには置換を行う必要があります。
老人と桐さんの事例では、ファイルを開くたびに置換を実行することが必ず必要になると思います。
ただし、フォームのコマンドボタンや一括処理を使用すると、表を開いたときに自動的に再計算をさせることができます。

老人と桐さんはフォームはお使いでしょうか。
もしそうでしたら、コマンドボタンに置換を設定しておき、
そのボタンをフォームの開始時実行コマンドボタンとして指定しておけばOKです。

次に最も簡単な一括処理を考えてみると、

    表”ファイル名”
    置換 [TODAY]
    表形式編集

の3行になります。
苦手でいらっしゃる変数宣言も必要ありません。
ただし、この方法だと表を閉じるときに必ず「保存終了」となってしまいます。
保存終了と破棄終了を使い分けたいのであれば、やはり変数宣言が必要になります。

★ご指摘のように、&年 &月 &日 &年月日 は、桐の起動時の値が代入されます。
これに対して #年月日(別表記 #DATE) は現在の年月日を返します。
これを利用して、年、月、日の値を取り出してはどうでしょうか。TODAYの計算式は、

#年(#年月日)×10000+#月(#年月日)×100+#日(#年月日)

となります。

16310 Re:一括処理にトライしては? うにん 2002/06/14-14:54
記事番号16308へのコメント
>★ご指摘のように、&年 &月 &日 &年月日 は、桐の起動時の値が代入されます。これ
>に対して #年月日(別表記 #DATE) は現在の年月日を返します。これを利用し
>て、年、月、日の値を取り出してはどうでしょうか。TODAYの計算式は、
>
>#年(#年月日)×10000+#月(#年月日)×100+#日(#年月日)

[TODAY]は多分、項目の表示条件を設定するために作った項目だと思いますが、
それでしたら項目にしないで直接表示条件の計算式に入れれば、
表を開いたときに再計算させる必要がなくなります。
上記の式を使って、[〆]項目の表示条件の「条件編集の設定」で「条件式」に
([]≦#年(#年月日)×10000+#月(#年月日)×100+#日(#年月日))
と入れてみたらどうでしょうか。

16311 Re:日付の計算式について natsu 2002/06/14-15:21
記事番号16307へのコメント
データ型が日時であっても不等号が使用できます
たとえば[〆]<[TODAY]
日付入力方法は現行通りが都合がよいのであれば、別項目に項目計算式で
[〆日]という項目を作成しましょう

さて、[TODAY]という項目ですが当然日時が変われば変わるわけです
けれども、全てのレコード(桐では行)で[TODAY]の値は同じはずです
(一括処理では、こんな時に変数が役立ちます)

ただし、[TODAY]の目的が[〆]日以降かどうかの判定だけであれば
[TODAY]は不要で、#日時値という関数が使用できます
(ヘルプより:コンピュータの内蔵時計から、現在の日付と時刻を取り出します。
取り出した値は、日時値になります。)
表の、項目の表示条件の条件編集で条件式を[〆日]<#日時値としてください




16316 早速やって見ます。 老人と桐 2002/06/15-07:58
記事番号16307へのコメント
確かに[TODAY]の目的は、項目の表示条件で背景色を変える事が目的です。
項目の表示条件に計算式を書けば良いとは・・・・良く分かりました。
早速やってみます。
本当に有り難うございました。

追伸>一括にもチャレンジしてみます。
訳の分からない相談をさせて頂く事になると思いますが、今後も宜しくお願い申し上げます。

戻る