如何在VB6中查询Access数据库的自动编号字段?
解决自动编号字段查询的类型不匹配问题
错误原因
自动编号(Autonumber)字段属于数值类型,你的代码中给查询值添加了单引号,将数值转为字符串进行对比,导致数据库在匹配时出现数据类型不匹配的错误。
修复方案
1. 移除单引号,直接使用数值对比
自动编号字段的查询不需要用单引号包裹值,直接将数值代入SQL语句即可:
- 从记录集获取值的正确写法:
MyADORs.Open "SELECT Uso_CFDI FROM fact_CFDI WHERE ID = " & adoCntctsRs!CFDI, Chazaro, adOpenStatic, adLockOptimistic
- 转为整数后的正确写法:
MyADORs.Open "SELECT Uso_CFDI FROM fact_CFDI WHERE ID = " & CInt(adoCntctsRs!CFDI), Chazaro, adOpenStatic, adLockOptimistic
- 从文本框获取值的正确写法:
MyADORs.Open "SELECT Uso_CFDI FROM fact_CFDI WHERE ID = " & CInt(txtFields(0).txt), Chazaro, adOpenStatic, adLockOptimistic
2. 推荐使用参数化查询(更安全、避免类型问题)
拼接SQL语句容易引发SQL注入风险,也容易出现类型错误,建议改用参数化查询:
Dim cmd As New ADODB.Command cmd.ActiveConnection = Chazaro cmd.CommandText = "SELECT Uso_CFDI FROM fact_CFDI WHERE ID = ?" ' 添加参数,指定类型为整数(adInteger对应自动编号字段类型) cmd.Parameters.Append cmd.CreateParameter("ID", adInteger, adParamInput, , adoCntctsRs!CFDI) ' 执行查询并赋值给记录集 Set MyADORs = cmd.Execute
内容的提问来源于stack exchange,提问作者Gilberto Chazaro
相关产品推荐
相关产品推荐

