VBA 运行时错误‘-2147217900(80040e14):自动化(Automation)错误
时间:2023-12-20 23:37:02
问题描述:初试VBA去操作Access执行数据库 INSERT 操作错误-2147217900(80040)发生在操作过程中e14):自动化(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" '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操作仍未通过
SQLinsert into check(code,year,month,day) values 1,2022
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