• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:法則にのっとった入力設定を行いたいのですが)

データベース入力設定の要約

このQ&Aのポイント
  • データベースの入力設定において、特定の条件を満たすための設定方法を教えてください。
  • 入力されるデータは7桁の数字であり、特定の法則に従っている必要があります。
  • VBAを使用せずに、トグルボタンを使用する方法があれば教えていただきたいです。

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

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

ANo. 1 です。 以下の条件で話を進めます。 ==== ・フォーム "Form1" を作成し、Form1 のレコードソースにはご質問で出された  テーブルを関連付ける。 ・以下の名前の 4 つのテキスト フィールドを作成する。  1. code - コントロールソースは「●●コード」  2. number - コントロールソースは「☆☆番号」  3. year - コントロールソースは「年度」  4. money - コントロールソースは「金額内容」 ==== 以下のようなコードを作成します。 テキスト フィールド "number" に値を入力して、カーソル(フォーカス)を マウスや Tab キーなどで他に移したときにテキスト フィールド "year" に 値がセットされるようにします。 [手順] 1. テキスト フィールド "number" のプロパティを開き、「イベント」の  「フォーカス喪失時」をクリック、その行の右端に「・・・」というボタンが表示  されるのでそれをクリックし、「コード ビルダ」を選択する。 2. VBA のエディタが起動するのでそこに以下のコードを貼り付ける。 ==== ここから ==== Option Compare Database Private Sub number_Exit(Cancel As Integer)  Dim num As Long '☆☆番号  Dim tmpYear As Integer '年度  Dim grade As Integer '学年    'テキスト フィールド "number" から「☆☆番号」の値を取得  num = Me.number.Value    'tmpYear に num の上位 2~3 桁目を取り出す  tmpYear = (num / 10000) Mod 100 'Mod は「割り算した余り」のこと    'tmpYear が 50 以上なら 1900 年代、50 未満であれば 2000 年代とする  '!!!!このやりかたは改善すべき!!!!  If tmpYear > 49 Then   tmpYear = tmpYear + 1900  Else   tmpYear = tmpYear + 2000  End If    'テキスト フィールド "year" に tmpYear の値をセット  Me.year.Value = tmpYear    'grade に num の上位 1 桁目を取り出す  grade = num / 1000000 'ここでは使い道が無い End Sub ==== ここまで ==== 以上です。 コードにはコメントを書いておいたので参考にしてください。 テキスト フィールド "number" の上位 2~3 桁目が 50 以上であれば 1900 年代、 50 未満であれば 2000 年代にするようにしています。 しかし、これは問題のあるやり方です。2000年問題を覚えていますよね? テーブル定義で年度を表す桁数を 4 桁以上に改めるべきでしょう。

その他の回答 (1)

回答No.1

補足要求です。 ・まず、VBA を使うということなのでデータベースは ACCESS なのですよね? ・「入力」というのは単票フォームを使って入力ということなのですか? 以下、参考です。 ・「7桁の数字である」という条件はテーブルの定義(テーブルの「デザイン ビュー」)で「☆☆番号」の入力規則を「>999999 And <10000000」とすれば 良いのでは? ・「年度」は2000に「☆☆番号」の上から2~3桁目を加えたものなのです よね?それならば、フォームで「☆☆番号」を入力した時点で自動的に 「年度」の値をセットするようにすれば良いのでは?

nikomasa
質問者

補足

データベースはACCESSになります。 単票フォームの入力でございます。 7桁の数字の入力規則は非常に参考になりました。 早速設定いたします。 年度については☆☆番号を入力する際に必ず20~、30~と 最初に二桁は固定されます。それに伴い年度も自動入力されるようにしたいのです。 学校のデータベースを作っており、200と入力した段階で2年生で00年(西暦2000年)という風に表示したいのです。 301なら3年生で年度は01年(年度表示は2001)といった具合に。 399なら3年生で年度は99年(年度表示は1999)といった具合に。 上記のように設定したいのですが。。。 質問がいたらなくてご迷惑おかけしました。

関連するQ&A