【发布时间】:2020-01-17 10:01:43
【问题描述】:
我知道有很多相同类型的问题,但没有人帮助我,我真的被困住了。 所以我正在尝试使用 VBA 从 Excel 表中发送数据,但我总是收到相同的错误:'运行时错误 3001'参数类型错误或超出可接受范围' 问题是我不明白我的错误来自哪里?是来自我的 SQL 查询还是来自 Visual Basic 代码? 我的代码在 3 sub
Dim oConn As ADODB.Connection
第二个
Private Sub ConnectDB()
Set oConn = New ADODB.Connection
Dim str As String
str = "DRIVER={MySQL ODBC 5.1 Driver};" & _
"SERVER=XXX.XXX.XXX.XXX" & ";" & _
"PORT=3306" & ";" & _
"DATABASE=myDB" & ";" & _
"USER=User" & ";" & _
"PASSWORD=pwd" & ";" & _
"Option=3"
''' error '''
oConn.Open str
End Sub
最后一个
Sub InsertData()
Dim Rs As ADODB.Recordset
Dim Requete As String
Set Rs = New ADODB.Recordset
Call ConnectDB
With Sheets("Feuil5")
Requete = "INSERT INTO Position (Emplacement,Etage,Colonne,Taille) VALUES ('1','1','1','1');"
Rs.Open Requete, oConnect, adOpenDynamic, adLockOptimistic
End With
Debug.Print Requete
oConnect.Close
Set Rs = Nothing
End Sub
有人能找到我的错误并帮助在 vba 中实现和简单的 sql 查询吗?
【问题讨论】:
-
您正在将字符串插入
Position表中。列是字符串值吗? -
等等,为什么在另一个范围内声明了
oConn?Dim用于局部变量,因此ConnectDB分配给未声明的变量。在每个模块的顶部指定Option Explicit,然后声明局部变量,直到代码再次编译(调试~> 编译 VBAProject)。oConn.Open str的错误是什么(注意,Str是一个糟糕的名字,它实际上隐藏了 VBA 标准库中现有的全局范围函数)。 -
插入可能失败,因为您将 5 个值插入 4 列。
-
所以是的,我所有的列都是 Varchar 数据类型,它是一个变量 String 对吗?我在
Private Sub ConnectDB()之后移动了Dim oConn As ADODB.Connection。我尝试使用 Option Explicit,但每次都会出错。我在oConn.Open str上没有任何错误,我现在将 str 更改为 S -
您在使用
Option Explicit时遇到错误,因为您使用的变量未在任何地方声明,或者无法访问:这完全符合预期 -Option Explicit通过拒绝帮助强制执行正确性编译使用未声明变量的代码。解决方案是声明你的变量,而不是删除Option Explicit。
标签: mysql sql excel vba sql-insert