Excel UserForm:根据ComboBox选择填充TextBox的问题求助
Excel UserForm:根据ComboBox选择填充TextBox的问题求助
嗨,我看了你的代码和问题描述,马上就找到问题根源啦!你当前的comboBrand_Change事件里,SQL查询直接拉取了Table1的所有记录,完全没根据选中的品牌做过滤,所以每次都会返回表的第一条记录——而且你之前用rs(2)其实取的是Port字段(你的表字段顺序是Brand(0)、Model(1)、Port(2)),这也是导致显示内容不对的小疏漏哦。
下面是帮你修正后的代码,我标注了关键改动点:
Private Sub comboBrand_Change() Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset Module1.ConnectBD ' 关键改动1:加入WHERE条件,只查询当前选中品牌对应的Model ' 用Replace处理单引号,避免品牌名称带单引号时SQL报错 rs.Open "SELECT Model FROM Table1 WHERE Brand = '" & Replace(comboBrand.Value, "'", "''") & "'", _ Conexao, adOpenKeyset, adLockReadOnly ' 关键改动2:先清空文本框,防止没有匹配记录时保留旧值 txtModel.Value = "" ' 关键改动3:判断记录集是否有数据,用字段名取值(比索引更直观,不怕字段顺序变动) If Not rs.EOF Then txtModel.Value = rs!Model End If ' 关闭并释放资源 If Not rs Is Nothing Then rs.Close Set rs = Nothing End If Module1.DisconnectBD End Sub
再给你几个实用小建议:
- 尽量用字段名(比如
rs!Model)代替索引(rs(1)),这样就算以后表的字段顺序调整,代码也不会出错 - 如果后续你的表会出现一个品牌对应多个型号的情况,可以把Model也改成ComboBox,用类似
Brand子程序的逻辑填充,体验会更好 - 如果是正式项目,建议用参数化查询代替直接拼接SQL字符串,能避免SQL注入风险,代码稳定性也更高
备注:内容来源于stack exchange,提问作者Luis Gonçalves
相关产品推荐
相关产品推荐

