Microsoft Access 2010のvbaを使って、コンボボックスの連動を作りたいので、教えてください。
(社員名簿のテーブルから、コンボ0で、”所属”を取得し、コンボ4でその所属をもとに社員名簿テーブルをオープンし、コンボ4のプルダウンに氏名を設定し、最終的に氏名を決定したいのですが・・・。)
(1)最後の氏名を決定クリックしたときに、「このフィールドに入力した値が正しくありません」とのエラーメッセージが出ます。何かいい改善策はないでしょうか。
(2)それと、コンボ4のフォーカス時に動かしたいのですが、クリックしないとプログラムが動きません。どうしたらよいのでしょうか、改善策を教えてください。
(コードの中身については、すべてを理解しているわけではないので、すいません。)
---------------------------
"社員名簿"テーブル
(field名) (データ型)
ID オートナンバー型
氏名 テキスト型(10)
出身地 テキスト型(10)
生年月日 日付時刻型
性別 テキスト型(4)
所属部門 テキスト型(10)
---------------------------
ID(主key) 氏名 出身地 生年月日 性別 所属部門
1 佐藤裕也 大分県 1977/12/27 男 営業
2 鈴木剛 長崎県 1968/5/16 男 人事
3 高橋敬 東京都 1981/6/26 男 開発
4 田中賢太郎 奈良県 1978/8/26 男 営業
5 平井進二郎 京都府 1969/7/1 男 営業
6 安藤憲弘 愛知県 1976/4/10 男 経理
7 山田花子 青森県 1970/8/26 女 総務
---------------------------
(雑駁な質問の仕方で、すいません。)
わかる方、ご意見などご回答よろしくお願いします。
ソースは以下のとおりです。
--------------------------14:33 2015/04/03 暫定版-----------------------------------
Option Compare Database
Public str所属 As String
--------------------------------
Public Sub コンボ0_AfterUpdate()
str所属 = ""
str所属 = コンボ0.SelText
'更新後にスタティックメモリに所属を保存する。
Debug.Print "コンボ0.SelText:" & コンボ0.SelText
Debug.Print "str所属:" & str所属
MsgBox "str所属::コンボ0_AfterUpdate:" & str所属
End Sub
--------------------------------
Private Sub コンボ4_GotFocus()
'コンボ0で取得した所属で社員名簿コンボ4のプルダウンに氏名を表示する。
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Set con = CurrentProject.Connection
Set rs = New ADODB.Recordset
rs.Open "社員名簿", con, adOpenKeyset, adLockOptimistic
Me.コンボ4.RowSourceType = "Value List"
MsgBox "str所属:" & str所属
rs.MoveFirst
Do Until rs.EOF
If rs!所属部門 = str所属 Then
MsgBox rs!氏名
Debug.Print rs!氏名
'コンボ4のプルダウンに氏名を設定
Me!コンボ4.AddItem rs!氏名
End If
rs.MoveNext
Loop
rs.Close: Set rs = Nothing
con.Close: Set con = Nothing
End Sub
No.1ベストアンサー
- 回答日時:
Public Sub コンボ0_AfterUpdate()
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
dim strSQL as string
Me.コンボ4.RowSourceType = "Value List"
str所属 = コンボ0.SelText
Set con = CurrentProject.Connection
Set rs = New ADODB.Recordset
strSQL = "SELECT 氏名 FROM 社員名簿 WHERE 所属部門 ='" & STR所属 & "''"
rs.Open strSQL, con, adOpenKeyset, adLockOptimistic
rs.MoveFirst
Me!コンボ4.CLEAR
IF NOT RS.EOF THEN
Do Until rs.EOF
Me!コンボ4.AddItem rs!氏名
rs.MoveNext
Loop
END IF
rs.Close: Set rs = Nothing
con.Close: Set con = Nothing
コンボ4.setfocus
End Sub
とするとか、、
(コンボボックスにsqlそのまま書いたらだめなんだっけ?)
いかにプロトタイプ版を載せます。とりあえず、完成ということにします。ありがとうございました。
Private Sub コンボ4_GotFocus()
'コンボ0で取得した所属で社員名簿コンボ4のプルダウンに氏名を表示する。
'MsgBox "str所属:" & str所属
Dim strSQL As String
strSQL = "SELECT 社員名簿.ID, 社員名簿.氏名 FROM 社員名簿 " _
& " WHERE 社員名簿.所属部門 = '" & str所属 & "';"
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Set con = CurrentProject.Connection
Set rs = New ADODB.Recordset
rs.Open "社員名簿", con, adOpenKeyset, adLockOptimistic
Me.コンボ4.RowSourceType = "Table/Query" '<---省略可
rs.MoveFirst
'コンボ4のプルダウンにID,氏名を設定
Me.コンボ4.RowSource = strSQL
rs.Close: Set rs = Nothing
con.Close: Set con = Nothing
End Sub
No.2
- 回答日時:
他の処理系はともかく
Access ですから
テーブルを使った Access らしい処理の方が良くないですか?
例えばこんな風に。
コンボボックス作成の応用講座-1
http://www.accessclub.jp/samplefile/samplefile_1 …
いろいろ書かれていますが
要は、2番目のコンボボックスを 再クエリするコードを
1行書くだけです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access 複数条件検索の設定が上手く行きません 1 2022/07/22 20:37
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
- Access(アクセス) Accessで予定表を作成しようとしてます。 テーブル フィールド名 連番 オートナンバー型 年月日 2 2023/07/23 11:40
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
抽出条件でデータ型が一致しま...
-
accessのデータを拾って、ユー...
-
SQLの同時実行
-
オートナンバー型の数字を振り...
-
もしかして
-
エクセルで、日付を入力すると...
-
「ご処理進めて頂きますようお...
-
リストボックスの選択解除
-
VBAでループ内で使う変数名を可...
-
ImageMagickでgif画像の一部が...
-
accessで2つ以上のフォームを起...
-
VBAでセルに値が入力されるまで...
-
【Excel】特定の文字を含むセル...
-
自分の不注意で仕事で乗り合い...
-
複数シートのボタンに同一の動...
-
VBA リストボックスをダブルク...
-
Pythonでgif画像が上手く作れない
-
メルカリのメルカードで買い物...
-
「PC Helpsoft Driver Updated...
-
リョウ・・・量?料?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データがあれば○○なければのSQL
-
【access】複数のフィールドの...
-
ACCESS VBAでテーブル内の特定...
-
Access vbaで重複レコードの削...
-
ACCESS DCOUNTの抽出条件について
-
Accessで縦と横を入れ替えたい
-
VBAでテーブル名とカラム名を動...
-
DataGridViewで複数条件の抽出...
-
Access から Excelのシートをイ...
-
重複した複数のレコードを1レ...
-
DAOでSQLServerに接続し、LeftJ...
-
SQLServer→Access インポート
-
ACCESSで実行時エラー3008
-
sql文で削除クエリを書く
-
別のaccessファイルからデータ...
-
access追加クエリーでform入力...
-
抽出条件でデータ型が一致しま...
-
【PHP/MySQL】コード上で生成...
-
Accessリンクするテーブルが見...
-
ACCESSで購入回数を表示する方...
おすすめ情報