• ベストアンサー

ACCESSフォームで、入力から一定時間経過した時にデータを表示する

いつもお世話になります。 アクセスのフォームで、8行×5列の枠を作っており、リンクしたテーブルに打ち込んだ数値データを表示させる仕組みを作ったのですが、打ち込んでから2分経つまで非表示にしたいのです。 既にかなり作りこんでいるのですが、単純な仕組みなので、打ち込んだ時間は取得していないのですが、たとえばフォームの条件書式で、「データが登録されてから2分間はデータを背景色と同じにする」などのことは可能でしょうか? 方法をご存知の方、ご教授お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

なぜそんな手の込んだ仕組みにするのですか。入力者は何を打ち込んだか判っていると思うし。正解を2分後の表示するなんてことなのかな。質問者の珍奇なアイデアで、回答者が振り回されるだけの質問と思うが。 フォームが有る プロパティでイベントの「キーボードイベント取得」を「はい」にする。 テキスト0を貼り付ける。 下記イベントプロシを作っておく。ENTERを押した機会を捉えるため。 Private Sub テキスト0_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then x = テキスト0.Text テキスト0.Text = "" MsgBox x stimer = Timer lval = 30 Do Until Timer > stimer + lval DoEvents Loop テキスト0.SetFocus テキスト0.Text = x End If End Sub ーー 実験はテキスト0に何か文字を入れてエンターキーを押す。 するとテキスト0の文字を消して、30秒後に、入力していた先ほどの文字列が、テキスト0に現れる。 ただし自信はありません。上記のような簡単なモデル的な例ではなく、30秒間に他のコントロールを触ったり、その他色んな場合で、酷使に耐えられるかどうか小生の知識は不十分。

7-samurai
質問者

お礼

お礼が遅くなりまして申し訳ございません。 いただいた回答をもとに作成することが出来ました。 ありがとうございました。

その他の回答 (2)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

>打ち込んでから2分経つまで ものすごく曖昧ですね。どの時点からの経過かがさっぱり分かりません。 (1)最後のキーストロークから (2)8×5のいずれか1個でも内容が変更された時から (3)レコードが更新された時から (4)未知のイベント(質問者さんだけが知っていて、閲覧者は知らない) 「データが更新されてから」を考えると、(3)のような気もしますが、 ハッキリしない。それに、フォームの更新では8×5以外のフィールドを 更新しても「更新」ですので、そのマトリクス限定というのが厄介です。 また、8×5が1レコードの中の40フィールドを分割したものか、 8レコード×5フィールドなのか不明です。 この辺りを明示的にしてもらうと、何らかの解決が見つかるかもしれません。 可視の制御自体はVisibleプロパティの設定で可能です。タイマ割込も #1の方の方法で実現できます。

7-samurai
質問者

お礼

お礼が遅くなりまして申し訳ございません。 皆様のご協力のおかげで、本日ようやく作成することが出来ました。 ありがとうございました。

7-samurai
質問者

補足

ご回答ありがとうございます。質問の内容が不明瞭のため、ご迷惑をおかけします。 まず、8×5の計40マスのフォームと同じ形のテーブルがリンクいます。別に数値を打ち込む入力フォームがあり、そこで数値を打ち込むと、テーブルに書き込まれ、フォームにも表示される仕組みです。 2分後にしたい理由ですが、具体的には物流センターの入庫管理の場で、トラック単位の入庫商品と伝票に「1番」と振り分けたとすると、伝票入力担当者はパソコンで伝票情報を入力し、終了し次第アクセスの入力フォームに「1」と打ち込みます。すると検品作業場の8×5のマスが表示された画面に「1」が現れ、検品担当者が1番の検品を開始する流れです。しかし、伝票情報入力終了直後から2分間は打ち込んだデータの処理がシステム内部で出来ておらず、打ち込んでから2分後に検品を開始しなければならないという事情があるため、このような質問をさせていただきました。

noname#110201
noname#110201
回答No.1

フォームのタイマイベントが利用できるのではないでしょうか。 タイマイベントについては、ググッてたまたま上に出てきたサイトへのリンクを張っておきますので、ご参照ください。 http://www.serpress.co.jp/access/vba036.html 話が込み入ってしまうので、基本的なアイデアだけ書きます。 1) 入力した時刻は、例えば非表示のテキストボックスなどに、書いておきます(例えば、入力時イベントで)。 2) 同じイベントで、同時に、データは背景色と同じに換えてしまいます。 3) タイマイベントの間隔は、例えば30秒くらいにしておきます。 4) タイマイベントで、入力時刻と現在の時刻を比べて、2分以上たっていたら、データの色を変えます。 どうでしょう?

7-samurai
質問者

お礼

お礼が遅くなりまして申し訳ございません。 いただいた考え方を参考に作成することが出来ました。 ありがとうございました。

関連するQ&A