Access中VB编写的SQL插入记录至表中间而非末尾的原因排查
Access插入记录显示在中间的原因排查
核心原因
Access的表本质是无序的数据集合,不存在“默认按插入顺序存储”的规则。你看到新记录出现在中间,是因为Access会按以下优先级自动排序显示数据:
- 表的聚集索引/主键(比如自动编号字段)的顺序
- 你之前手动设置过的表排序规则(比如点击列表头排序后,Access会记住这个设置)
你的插入代码本身逻辑没有问题,插入的记录确实已经存入表中,只是显示顺序让你误以为在“中间”。
验证步骤
- 打开
Audit_riskModelHistory表,检查是否有自动编号类型的主键,或者其他设置了索引的字段——这类字段会决定默认显示顺序。 - 点击Access顶部「开始」选项卡,找到「排序和筛选」组,点击清除所有排序,此时记录会回到无排序的状态,你可以看到新记录的实际位置。
代码优化建议(避免SQL注入)
当前拼接SQL字符串的写法存在SQL注入风险,建议改用参数化查询,示例代码:
Dim qd As QueryDef Set qd = CurrentDb.CreateQueryDef("", _ "INSERT INTO Audit_riskModelHistory (Action, User, modelKey, modelEventKey) " & _ "VALUES (@Action, @User, @ModelKey, @ModelEventKey)") qd.Parameters("@Action") = "New Record Inserted" qd.Parameters("@User") = "Mike-Admin" qd.Parameters("@ModelKey") = Me.cmb1.Value qd.Parameters("@ModelEventKey") = Me.cmb2.Value qd.Execute dbFailOnError Set qd = Nothing
内容的提问来源于stack exchange,提问作者Lubomir Burian
相关产品推荐
相关产品推荐

