Microsoft Access Club >SampleFile Q & A >インデックス >このページ >次頁 < 前項  サイト内検索


Q&A-009 コンボボックスで選択した値をテーブルフィールドへ代入する一例
--やはりコンボボックスで・・・



Access Club 超初心者 BBS
タイトル : やはりコンボボックスで・・・
記事No : 6622
投稿日 : 2003/04/18(Fri) 09:33
投稿者 : タケ

OS:Windows XP
Access Version:2000

みなさん、おはようございます。やはり、コンボボックスでひっかかってます。

入力フォームでコンボボックスを設けました。
「難易度」というコンボボックスと「難易度点数」というテキストボックスがあります。
コンボボックスのもとになるテーブルは、T_難易度で

(難易度) (点数)
難易度A−1 10
難易度A−2 9
難易度A−3 7
難易度B−1 8
難易度B−2 7
難易度B−3 5

となってます。
そこで、難易度コンボボックスで難易度を選択した後、自動的に難易度点数に点数が入る方法として、難易度コンボボックスの更新後処理に

Private Sub 難易度_AfterUpdate()
Me!難易度点数=Me!難易度.Column(1)
End Sub

としましたが、まったくなしのつぶてです。これは、いったい何が悪いのでしょうか?
 


>としましたが、まったくなしのつぶてです。これは、いったい何が悪いのでしょうか?

これはいろんな原因が考えられますねぇ。と、いってもこのままにしては置けないので、とにかくサンプルファイルをごらん下さい。

 

データを格納していくテーブル(tbl_sample)フィールドは、下記のように考えます。

 

 

コンボボックスの「値集合ソース」に配置するテーブル(tbl_難易度)データは下記のようなものです。

 

難易度 点数
難易度001 10
難易度002 9
難易度003 8
難易度004 7
難易度005 6
難易度006 5
難易度007 4
難易度008 3
難易度009 2
難易度010 1

 

フォームをデザインビューで見ると下記のようになっています。

 

 

◆コンボボックスで選択したデータをテキストボックスに代入する

コンボボックスの利用で一番注意が必要なのは、下記のプロパティ設定です。

 

 

今回の場合、「値集合ソース」内では、フィールド数が2つ存在します。左から「難易度」と「点数」フィールドです。そして、テキストボックス(txt難易度得点)にデータを入れるのは、左から2番目にある「点数」です。

これを実現するために、プロパティ操作で

  • 「書式」の「列数」を 2
  • 「データ」の「連結列」を 2

に設定しています。この設定を行わない限り、正しくデータを入力することができません。

 

 

最後に、コンボボックス(cmd_難易度)の更新後処理イベントに下記プロシージャを記述します。

 

Private Sub cmb難易度_AfterUpdate()

    Me.txt難易度点数 = Me.cmb難易度
    '又は、Me.txt難易度点数 = Me.cmb難易度.Column(2)でもOK

End Sub

 

#今回の設定では、Columnプロパティを使う必要はありません。コンボボックス内の"得点フィールド"が左から2番目に位置し、且つ「連結列」設定を 2 としているからです。

 

また、テキストボックスにあえてデータを入れ込みましたが、特にそうしなければいけない事もなく、直接コンボボックスに"得点"を入れてもいいわけです。当然、テーブルフィールドとコンボボックスは連結するわけですけど、何ら問題ないと思います。*フォーム下段のコンボボックスが連結コンボボックスのサンプルです。

今回のエラーは、おそらく手順に誤りがあつたことで現れたものと推測されます。

 

関連ページ

 

 

2003/04/18


Q&A-009 コンボボックスで選択した値をテーブルフィールドへ代入する一例
--やはりコンボボックスで・・・


 

-Microsoft Access Club-