過去ログ

                                Page      98
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼コンボボックスの値の参照  tabi 02/11/11(月) 15:10
   ┗Re:コンボボックスの値の参照  こうちゃん 02/11/13(水) 9:38
      ┗Re:コンボボックスの値の参照  tabi 02/11/13(水) 12:44

 ───────────────────────────────────────
 ■題名 : コンボボックスの値の参照
 ■名前 : tabi
 ■日付 : 02/11/11(月) 15:10
 -------------------------------------------------------------------------
   コンボボックス(cmbA)で選択された値を
参照することができません。

値集合タイプは「テーブル/クエリ」で、
連結列は「0」です。
(「1」にすると、コンボボックスの値を選択することが
できませんでした。)

Private Sub cmdSearch_Click()
 dim a as string
 me.cmbA.SetFocus
 a = me.cmbA.Text
End Sub

という風にしたところ、
「コントロールがフォーカスを取得していない時、
コントロールのプロパティまたはメソッドを参照
することはできません」というエラーが出ます。

また、
Private Sub cmdSearch_Click()
 dim a as string
 a = Forms!フォーム名!cmbA
End Sub
とすると、選択されたインデックスらしき値を
取得することができます。
でも、Forms!フォーム名!cmbA.ItemData(a)
を参照するとNullが返ってきます。

どなたかよろしくお願いします。

 ───────────────────────────────────────  ■題名 : Re:コンボボックスの値の参照  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/11/13(水) 9:38  -------------------------------------------------------------------------
   tabiさん、おはようございます

フォームモジュールに書いているのなら、以下のコードは等価です。
(Textはフォーカスが無いときには参照できません。Valueプロパティを参照したほうがいいでしょう)
 a = Me.cmbA.Value
 a = Forms!フォーム1!cmbA
の場合変数aにはコンボボックスのインデックスではなく、コンボボックスの列0(連結列)の値を取得します。

たとえばコンボボックスの値が

1,aaaa
2,bbbb
3,cccc

のようであって「2,bbbb」が選択されていたとすると、"2"が返ります。
この場合ItemData(a)は、ItemData(2)ということになりますから、"3"が返ります。

コンボボックスの値が
11,aaaa
22,bbbb
33,cccc

の場合で「22,bbbb」
 a = Me.cmbA.Value
 a = Forms!フォーム1!cmbA
ではaには"22"が返りますので、ItemData(a)は、ItemData(22)となって結果はNullになります。

選択したアイテムを参照する場合は、
 MsgBox Me.cmbA.ItemData(Me.cmbA.ListIndex)
のようにListIndexプロパティを参照してください。

また、連結列以外の列の値を取得するならColumnプロパティを使用します。
 MsgBox Me.cmbA.Column(1, Me.cmbA.ListIndex)

 ───────────────────────────────────────  ■題名 : Re:コンボボックスの値の参照  ■名前 : tabi  ■日付 : 02/11/13(水) 12:44  -------------------------------------------------------------------------
   ▼こうちゃん さん:

こうちゃん こんにちわ。

コンボボックスの使い方、勉強になりました。
ItemDataとかColumnとか使えそうです。

値が参照できないという問題なのですが、
実は、昨日の夜いろいろ試した結果、解決しました。

まず、「連結列」を0にしていたところを、
1に変更しました。
次に、フォームのプロパティのレコードセットを
スナップショットからダイナセットに変更すると
a = cmbA
という式で選択したコンボボックスの値を参照することができました。

たぶんアクセス初心者によくあるような、ミスなのでは
ないかと思いました。

調べていただいてありがとうございました。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 98