资讯详情

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

问题描述:初试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

标签: e14lpa5连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台