2016-08-15 7 views
0

Microsoft Accessでフォームを自動入力するときに問題が発生します。アイデアはコンボボックスを使って名前を選択することです。その後、私のComboboxのonChangeコードが自動的に他のすべてのデータを適切なフィールドに挿入します。私はコンボボックスでこのコードを使用します。コンボボックスを使用してAccessでフォームを自動入力する

Private Sub cmbName_Change() 
Me.tbPersonalNumber = Me.cmbName.Column(0) 
Me.tbEmailadress = Me.cmbName.Column(2) 
Me.tbBirthday = Me.cmbName.Column(3) 
End Sub 

このメソッドは、個人番号と電子メールアドレスで正常に動作します。しかし、それは誕生日の日付には動作しません、それはnull値を返しますが、私は自分のテーブルをチェックするときに適切なフィールドに日付があります。

何か不足していますか?私はすべてを試みたが、それは動かなかった。 私はこの問題が、誕生日の列が表の最後の列に関連していると考えていました。または、日付タイプを持つ。

お時間をいただきありがとうございます。

編集;これはComboBoxで既に挿入されている名前なので、.Column(1)がありません。質問の文言によって引き起こされるいくつかの混乱があり

+0

は、誕生日の日付は、コンボボックスに表示されていますか?列の幅が0の場合は、デバッグ中に拡大します。 - 私の意見では、_AfterUpdateイベントは_Changeイベントよりも優れていますが、残りのイベントがうまくいけば、おそらく問題ではありません。 – Andre

+0

@Andreドロップされたとき、誕生日の日付はコンボボックスに表示されません。しかし、私はPersonalNumberがしていることを知りました。多分これは問題の一部ですか?これはコンボボックスに "SELECT Personel.PersonalNumber、Personel.Name、Personel.Emailadress、Personel.Birthday FROM Personel ORDER BY Personel.Name;"というSQLがあります。 –

+0

あなたは列数をチェックしましたか? – winghei

答えて

1

、私は解釈していると私はそれを持っている場合、右のそれが答えにあなたを導くことがどのように戻って述べるしようとするでしょう。

あなたは、テーブルからデータが事前にあるcmdNameと呼ばれるコンボボックスを持っています。ユーザーがJ RommersMe.tbPersonalNumberを選択すると、コンボボックスの内容は、(あなたがデータを非表示にするゼロに列幅を設定している場合があります)、以下のよう

0001|Gary Evans|[email protected]|01/Jan/1970 
0002|J Rommers |[email protected] |02/Jan/1970 

を見ることができるMe.cmbName.Column(0)(0002)が移入され、Me.tbEmailadressMe.cmbName.Column(2)が移入されます([email protected])、Me.tbBirthdayにはMe.cmbName.Column(3)(1970年2月1日)が設定されていません。

それをクリアする可能性が無いコードをテキストボックスがMe.tbBirthdayをされると仮定すると、私は、問題は、コンボボックス内にあると思います。私は以下のチェックをsuggetsでしょう、あなたのコンボボックスが設定されている方法がわからされていない: - コンボボックスのプロパティで

  • Column Countは4に等しいのですか?デバッグで
  • は、Me.tbBirthday = Me.cmbName.Column(3)にブレークポイントで、それはあなたが後にある日付を表示しますか?それがない場合
    • は、コンボボックスを移入するクエリは、それを持っているのでしょうか?さらに支援するためのコメントに基づいて

編集: -

  • 変更クエリSELECT Personel.PersonalNumber, Personel.Emailadress, Personel.Birthday, Personel.Name FROM Personel ORDER BY Personel.Name;にこれはあなたが前面に隠されたすべてのフィールドを置きます。
  • 変更列は、0,0,0にあなたが隠された場合は、この最初のものをcmbNameの性質を幅とコンボボックスの幅を埋めるために、最後の1を残します。

    Me.tbPersonalNumber = Me.cmbName.Column(0) 
    Me.tbEmailadress = Me.cmbName.Column(1) 
    Me.tbBirthday = DateValue(Me.cmbName.Column(2)) 
    

    これが占め - :

  • 列プロパティを数える確認は
  • は、以下のとおりにコードを変更し、Gustavの答え

交換用コード、まだ答えは1として4でありますフィールドをクエリ内を移動し、日付があなたが望むように日付として表示するようにします。

+0

これは上記の@Gustavのawnserと組み合わせて動作します!ありがとうございました! –

+0

私は、あなたが望むフォーマットを得るために、より多くの情報を追加しました。 –

1

コンボボックス(リストボックスと)常に文字列を返すので、それが日付値に変換します(ドロップダウンされたときに)

Me!tbBirthday.Value = DateValue(Me!cmbName.Column(3)) 
関連する問題