You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 11:08:12