質問 |
||
| QNo.3921120 | 法則にのっとった入力設定を行いたいのですが | |
|---|---|---|
| 質問者:nikomasa |
とあるデータベースです ●●コード ☆☆番号 年度 金額内容 003 2005263 2000 \100,000 002 3016533 2001 \4,000 004 1023256 2002 \600,000 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 以下続くわけですが、ごらん頂きたいのは☆☆番号の左から2〜3桁目の数値を年度の下ニケタと一致させていくデータベースの法則の存在があります。 そこで間違って入力されないように1.7桁の数字であること、2.上記の法則を満たしていることを条件に入力できるようにするためにはどのような設定を行えば宜しいでしょうか? VBAとかまったく判らないので、トグルボタン「・・・」で出来るのであればと思います。(トグルボタンっていう名称で合ってましたか?) どなたか教えていただけますでしょうか? 誤字脱字があれば前もってお詫びいたします。 |
|
困り度:
|
||
| 質問投稿日時: 08/04/04 11:43 |
||
回答良回答20pt |
|
| ANo.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 桁以上に改めるべきでしょう。 |
|---|---|
| 回答者:irija_bari | |
| 種類:回答 どんな人:経験者 自信:参考意見 |
|
| 回答日時: 08/04/07 14:25 |
|
| |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |
回答 |
|
| ANo.1 | 補足要求です。 ・まず、VBA を使うということなのでデータベースは ACCESS なのですよね? ・「入力」というのは単票フォームを使って入力ということなのですか? 以下、参考です。 ・「7桁の数字である」という条件はテーブルの定義(テーブルの「デザイン ビュー」)で「☆☆番号」の入力規則を「>999999 And <10000000」とすれば 良いのでは? ・「年度」は2000に「☆☆番号」の上から2〜3桁目を加えたものなのです よね?それならば、フォームで「☆☆番号」を入力した時点で自動的に 「年度」の値をセットするようにすれば良いのでは? |
|---|---|
| 回答者:irija_bari | |
| 種類:補足要求 どんな人:一般人 自信:参考意見 |
|
| 回答日時: 08/04/05 12:54 |
|
| |
| この回答への補足 | データベースはACCESSになります。 単票フォームの入力でございます。 7桁の数字の入力規則は非常に参考になりました。 早速設定いたします。 年度については☆☆番号を入力する際に必ず20〜、30〜と 最初に二桁は固定されます。それに伴い年度も自動入力されるようにしたいのです。 学校のデータベースを作っており、200と入力した段階で2年生で00年(西暦2000年)という風に表示したいのです。 301なら3年生で年度は01年(年度表示は2001)といった具合に。 399なら3年生で年度は99年(年度表示は1999)といった具合に。 上記のように設定したいのですが。。。 質問がいたらなくてご迷惑おかけしました。 |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |