ここから本文です

アクセスのフォーム画面上だけにIDを入力すると名前が表示されるようにしたい。 ...

Puuさん

2018/1/614:08:22

アクセスのフォーム画面上だけにIDを入力すると名前が表示されるようにしたい。

非連結のテキストBOXが2つあります。

仮に、
txt.ID検索 IDを入力するテキストBOX
txt.名前表示 IDに紐づいた名前を表示するテキストBOX
とそれぞれのテキストBOXに名前が付いています。
元となるテーブル名は、T_リストです。
T_リストのフィールド名は、名前フィールドとid1フィールドです。

txt.ID検索に入力された値=id1で、
id1のレコードの名前フィールドの値をtxt.名前表示(テキストBOX)に表示

txt.ID検索にIDを入力すると、txt.名前表示に名前が表示されるようにしたいのです。

閲覧数:
68
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

hat********さん

2018/1/615:47:19

コンボボックスを使うとシンプルにできます。
txtID検索を削除して、代わりにコンボボックスを配置して、下記のように設定します。

名前 cbID検索
値集合タイプ テーブル/クエリ
値集合ソース T_リスト
連結列

列数 2
列幅 3cm;0cm

Me.txt名前 のコントローソースを下記のように設定します。

=[cbID検索]

以上です。



VBAを使うなら、

'txtID検索の更新後処理
Private Sub txtID検索_AfterUpdate()

Me.txt名前 = DLookup("名前", "T_リスト", "id1=" & Me.txtID検索)

End Sub

id1フィールドが数値型の場合です。
テキスト型の場合は、下記のようにしてください。

Me.txt名前 = DLookup("名前", "T_リスト", "id1='" & Me.txtID検索 & "'")

該当IDがない場合は、txt名前は何も表示されません。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

con********さん

2018/1/615:13:01

検索用テキストボックスの更新後イベント

Private Sub txtID検索_AfterUpdate()
Dim strSQL As String
Dim objRst As Recordset
strSQL = "SELECT T_リスト.名前 FROM T_リスト"
strSQL = strSQL & " WHERE (((T_リスト.id1)= " & Me.txtID検索.Text & "));"

Set objRst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)

If objRst.EOF = True And objRst.BOF = True Then
MsgBox "見つかりませんでした", vbOKOnly
Else
objRst.MoveFirst
Me.txt名前 = objRst![名前]
End If
objRst.Close
Set objRst = Nothing
End Sub

こんな感じでしょうか

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる