如何在SQL的LIKE函数中正确使用列表框值查询电影数据库?
解决Access查询中列表框控件值无法正确解析的问题
你遇到的核心问题是:查询里把forms![Genre_frm]![Genre_lbx].Value当成了字符串文本,而非去读取列表框的实际选中值。以下是两种可行的解决方式:
直接在Access查询的SQL视图中修改
把通配符和控件引用用&拼接,让Access先解析控件值再生成匹配条件:
SELECT title FROM Catalogue WHERE Catalogue.listed_in LIKE "*" & forms![Genre_frm]![Genre_lbx].Value & "*";
这样Access会先获取列表框的选中值,再和前后的*通配符组合,匹配listed_in字段中包含该流派的记录。
如果是在VBA中构建查询语句
先单独取出列表框的值,再拼接到SQL字符串里:
Dim selectedGenre As String Dim querySQL As String ' 获取列表框选中值 selectedGenre = Forms("Genre_frm").Genre_lbx.Value ' 拼接SQL语句 querySQL = "SELECT title FROM Catalogue WHERE listed_in LIKE '*" & selectedGenre & "*'" ' 执行查询(示例) DoCmd.RunSQL querySQL ' 或者用Recordset读取结果 ' Dim rs As Recordset ' Set rs = CurrentDb.OpenRecordset(querySQL)
额外提示
如果列表框可能存在未选中的情况,建议加上非空判断,避免无效查询:
SELECT title FROM Catalogue WHERE forms![Genre_frm]![Genre_lbx].Value IS NOT NULL AND Catalogue.listed_in LIKE "*" & forms![Genre_frm]![Genre_lbx].Value & "*";
内容的提问来源于stack exchange,提问作者user20514038
相关产品推荐
相关产品推荐

