過去の桐井戸端BBS (桐ver.8)
12688 フォームで日時値か否かの判断をしたい 若葉マークン 2001/08/20-17:41
どなたかご教授ください。

#IS数値(val)…valが数値であるか否かの判断
#IS文字列(val)…valが文字列であるか否かの判断

そこで
valが日時値であるか否かの判断をするには、
なにかよい方法があるのでしょうか?
それ用の関数はないようですが……

12691 Re:日時値か否かの判断 野良犬 2001/08/20-20:47
記事番号12688へのコメント
こんにちは。

>valが日時値であるか否かの判断をするには、なにか
>よい方法があるのでしょうか?

このvalは表の項目でしょうか?そうだとしたら、#項目属性()が使えます。

12704 Re:項目属性の判断ではありません。 若葉マークン 2001/08/21-10:23
記事番号12691へのコメント

>このvalは表の項目でしょうか?そうだとしたら、#項目属性()が使えます。

説明不足でした。状況は下記の通りです。
フォーム編集をしています。
フォームには何個かの編集対象表の項目をソースとしたテキストオブジェクトと"中止"なる表題のコマンドボタンを配置しています。(以下中止ボタン)
テキストオブジェクト[あ]のデータ型は日時です。
中止ボタンにはマウス左クリックイベントを設定し、追加入力の中止を行います。
イベントハンドラは下記の通りです。

method @フォーム.更新モード設定(0)
行削除
絞り込み解除 1
jump ……

テキストオブジェクト[あ]に文字列"aaa"を誤入力し、確定すると「日時型入力に誤りがあります」との
エラーメッセージが出て再入力待ちとなります。
しかし…
文字列"aaa"を誤入力し確定する前に中止ボタンを左クリックすると、
上記エラーメッセージが二度繰り返された後
「対象表が更新中のためこのコマンドは実行できません。   行削除 」
とダウンしてしまいます。
このトラブルを避けたいのですが……

12707 Re:日時値か否かの判断 悲しげ 2001/08/21-14:43
記事番号12704へのコメント
どのような値(文字列)が誤入力されると想定されているのかは、
一寸雲を掴むような話ですが、恐らくは入力して欲しい日時値的値の範囲と云うのは決まっていると思うので、
その幅を某値1〜某値2とすれば、
例えば当該の日時値項目テキストに、入力後イベントを設定して
------------------------------------
if(&編集文字列<某値1 .or 某値2<&編集文字列)
 確認 "入力値が変です"
 &入力継続=1
end
------------------------------------
なんて考え方はどうでしょう?

12710 Re:項目属性の判断ではありません。 いかすぱげてぃ 2001/08/21-16:24
記事番号12704へのコメント
若葉マークンさんこんにちわ。

>method @フォーム.更新モード設定(0)
>行削除
>絞り込み解除 1
>jump ……
>
>テキストオブジェクト[あ]に文字列"aaa"を誤入力し、確定すると「日時型
>入力に誤りがあります」とのエラーメッセージが出て再入力待ちとなります。
>しかし…
>文字列"aaa"を誤入力し確定する前に中止ボタンを左クリックすると、上記
>エラーメッセージが二度繰り返された後
>「対象表が更新中のためこのコマンドは実行できません。   行削除 」
>とダウンしてしまいます。
>このトラブルを避けたいのですが……

ごくオーソドックスに考えれば

method 戻り値=&end,@フォーム.更新モード設定(0)
if(&end<>1)
return
end
行削除
絞り込み解除 1
jump ……

とすれば、いいように思えたのですが、ちょっと試したら、
表示モードへ正常に設定出来ていないにも関わらず、なぜか戻り値に「1」が返ってきてしまう。(^^;
たははは、どないしましょう。(^^; > K3

しょうがないので、コマンドボタン機能を使ってはどうでしょうか?

機能名   機能パラメータリスト
----------------------------------
表示    確定            中止ってことだと、破棄のほうがいい感じ
手続き実行 中止,           ですが、その後、データ削除しているので…


proc 中止()
行削除
絞り込み解除 1
jump ……

とりあえず、お試しください。

桐8は「まずはコマンドボタン」、どうしてもそれでは出来なければ、イベントっていう手順でいくのが「幸せ」な使い方です。(トホホ)
同じような悩みどころに「フォーム開始」<>「実行ボタン:開始時」なんてのも非常に曲者です。

12719 Re:お世話になりました。 若葉マークン 2001/08/22-11:48
記事番号12688へのコメント
>
皆様、アドバイスありがとうございました。
いかすぱげてぃさんのアドバイスを参考に
イベントハンドラの内容を下記の通りに変更すると
とりあえず所期の目的は達成できました。

method @フォーム.更新モード設定(0)
method @フォーム.更新モード取得(&okfrg)
if (&okfrg=0)
行削除
絞り込み解除 1
……
……
else
……
end

余談ですが、日付値の範囲を…と思っていろいろやっている時
#日時値(aaa)…1989年1月1日
#日時値(若葉マークン)…1989年1月1日
#日付(若葉マークン,1)…1989-1-1
これって何故ですかね?????


12720 Re:余談(#日時値) 悲しげ 2001/08/22-13:12
記事番号12719へのコメント
>余談ですが、日付値の範囲を…と思っていろいろやっている時
>#日時値(aaa)…1989年1月1日
>#日時値(若葉マークン)…1989年1月1日
>#日付(若葉マークン,1)…1989-1-1
>これって何故ですかね?????

ほほぅ、そう出ましたか。(^^;)
これは恐らく該当なし=1年1月1日と解釈されて、かつ「1年」を西暦とはみなさず「平成」に変換しているのでしょうね。
そうか、該当ない場合は、エラーにはならないんですね。

戻る