• ベストアンサー

ACCESS自動でデータを入力するには

ACCESS2000を使用しています。データベースを作成中です。つぎの2点の入力法を教えてください。 1,データ入力時の年月日を取得し、それを元にIDとしたい。たとえば、2003年10月に入力したとすると、 20031001というIDを自動で入力したいのですが・・・。ちなみに最後の01は入力順番です。 2,前レコードの値とちがいがなければその値を入力しないと自動に前のレコードの値が現レコードに自動入力される。 以上2点です。わかりにくいとは存じますが、よろしくお願いします。

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

  • ベストアンサー
noname#27115
noname#27115
回答No.2

やり方はいろいろあるとおもので、考え方の一つを書きます。 最初はVBAでやるのは大変そうだと思いがちですが、VBAでやり始めるとこちらの方が整理されていてAccessの標準機能の方を使う方が面倒になってきます。 たぶん、連結フォームで作成されているとおものですが、これだとレコードが動くごとに画面のデータは消えますよね。反対に非連結フォームだとわざわざ消すという作業をしないとそのまま残ってしまいます。 それはおいておいて、、、 これを解決するには、やっぱりモジュール(フォームレベル)でやると簡単だと思います。 項目がいくつあるのかわかりませんが、 Dim m住所 As String Dim m電話 As String Dim mファックス As string とかを 宣言して、フォームのTextBoxの値が変化するごとにそこに代入していけばいいと思います。で、、レコードが動いて、フォームが新規になった時、コマンドボタンでもいいし、ショートカットでもいいし、そのイベントの際、上で宣言した変数の値をひらって来ればいいと思います。 1)変数に今のフォームデータを覚えさせる m住所 = Forms!アドレス帳.Controls!住所 m電話 = Forms!アドレス帳.Controls!電話 mファックス = Forms!アドレス帳.Controls!ファックス 2)変数からフォームにデータを読み込む Forms!アドレス帳.Controls!住所 = m住所 Forms!アドレス帳.Controls!電話 = m電話 Forms!アドレス帳.Controls!ファックス = mファックス ってな感じです。 ただ、Accessの標準機能でもできたかもしれませんが。。

その他の回答 (1)

noname#27115
noname#27115
回答No.1

>1,データ入力時の年月日を取得し、それを元にIDとしたい。たとえば、 >2003年10月に入力したとすると、 20031001というIDを自動で入 >力したいのですが・・・。ちなみに最後の01は入力順番です。 200310は Format(Date,"YYYYMM")で取得できます。 01,02,03 は 採番テーブルというのを作り、そこで管理します。 その2つを文字列として取得し、 "&"でつないでやればOKです。 なお、01,02,03は日付が変わることにクリアすることになると思うので、日付管理テーブルで日付の変化をチェックします。 なお、テーブルで管理としている部分は、INIファイルでやっても問題なです。 これらをTxtboxの初期値に入れればいいのじゃないでしょうか? >2,前レコードの値とちがいがなければその値を入力しないと自動に前の >レコードの値が現レコードに自動入力される。 値と違いがないとはどの値のことでしょうか? 20031001は自動的なので 同じにはならないだろうし、他のデータが同じとすると、同じと判断する時点ではすべてのデータがはいっていないといけないので、事前のレコード値をそのまま採用するということの意味がないと思うのですが。。

Scotty_99
質問者

お礼

回答ありがとうございます。とても参考になりました。1についてまだ理解し難い部分があります。やはりプロシージャを使うようですね。アクセスのプロシージャはほとんど経験がなくて現在想像し難いです。 2については、1の質問とは別です。たとえば前のレコードで 名前 住所 川田 神奈川県川崎市 橘  神奈川県川崎市 となると名前はちがうけど住所が同じになりますね。このような場合、橘さんの住所をエンターキーを押すと自動で神奈川県川崎市と入力されるようにしたいと思っています。もしこのような方法をご存知であれば再度よろしくお願いします。

専門家に質問してみよう