VBA 运行时错误‘-2147217900(80040e14):自动化(Automation)错误

在尝试使用VBA执行INSERT操作时遇到'运行时错误'-2147217900(80040e14):自动化(Automation)错误'。问题源于字段名使用了关键字、特殊字符,以及SQL语句中数字值误用单引号。解决方案包括避免使用关键字作为字段名,确保字段名无特殊字符,以及在数值插入时不加单引号。经过调整,成功执行了INSERT操作。
摘要由CSDN通过智能技术生成

问题描述:初次尝试使用VBA去操作Access数据库,执行 INSERT 操作的时候,发生了“运行时错误'-2147217900(80040e14):自动化(Automation)错误”异常。

 

图 1

Sub 连接()
    
    Dim con As ADODB.Connection '声明对象变量
    Set con = New ADODB.Connection '创建对象变量
    Dim sql As String

    '建立数据库连接
    'con.Open "provider=microsoft.ace.oledb.12.0;data source =" & ThisWorkbook.Path & "\test.accdb"  '连接access数据库
   
    '以下写法等效于 con.Open
    With con
        .Provider = "microsoft.ace.oledb.12.0"
        .ConnectionString = ThisWorkbook.Path & "\test.accdb"
        .Open
    End With
    MsgBox "连接成功"
    
   sql = "insert into check(code,year,month,day) values ('1','2022','1','1')"
   'sql = "insert into m_check(m_code,m_year,m_month,m_day) values (3,2022,1,1)"
   
    con.Execute (sql)

    con.Close   '关闭连接
    Set con = Nothing '释放变量
End Sub

 解决过程:

1.在Access SQL 查询分析器执行以下SQL,结果类似如图2所示是通过的。但是VBA运行仍然不通过

SQL insert into check(code,year,month,day) values ('1','2022','1','1')

2.考虑是不是因为使用了 code 、year 、month 、day 等字段所引起的,所以将这几个字段更改成了 m_code、m_year、m_month、m_day。问题还是存在。

3.检查字段名前后有无空格

4.参考许多案例,发现值是为数字的时候,不需要加 ''(单引号)。【字段类型设置是短文本类型】,问题解决。如图3成功

sql = "insert into m_check(m_code,m_year,m_month,m_day) values (3,2022,1,1)"

图 2

图 3

 总结:

        1. 数据库表字段名称不能使用关键字

        2.表字段不能使用空格和其他特殊字符

        3.排除SQL语法错误

        4.值为数字时,不应使用单引号,即使表字段类型是文本类型。

参考:

 

http://cn.voidcc.com/question/p-fowngkyr-qb.html

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OOQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值