从 Excel 文件查询更新
Posted
技术标签:
【中文标题】从 Excel 文件查询更新【英文标题】:Query update from an Excel File 【发布时间】:2017-10-05 12:57:04 【问题描述】:我有一个 Excel 文件,其中包含我必须导入到我创建的 Access db 中的数据列表。在数据库中,我有一个名为“描述”的列。当描述比单元格长时,可能会发生我必须更新我的字段,但我不知道如何正确编写查询的情况。
在我的 Excel 文件中,描述从 C 列开始,所以当我想提取字符串时,我会编写如下代码行:
cap.Description = grid(r, 3).Text
我尝试编写更新查询,但它不起作用,因为 VS 向我显示此消息:“附加信息没有为一个或多个必需参数提供值”。
Public Sub updateDB(ByVal PathDB As String)
Dim db As New cDB
Dim v As New cVoice
Dim rs As ADODB.Recordset = db.RecordSet
db.connect_DB(PathDB)
db.get_rs("UPDATE Voice SET Description = @v.Description")
db.close_DB()
End Sub
Public Function get_rs(ByVal query As String) As ADODB.Recordset
If db Is Nothing Then rs = Nothing : Return rs
rs = New ADODB.Recordset
rs.CursorType = ADODB.CursorTypeEnum.adOpenStatic
rs.LockType = ADODB.LockTypeEnum.adLockOptimistic
rs.Open(query, db)
Return rs
End Function
Public Function connect_DB() As ADODB.Connection
If Not My.Computer.FileSystem.FileExists(pPathDB) Then db = Nothing : Return db
db = New ADODB.Connection
db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & pPathDB & ";Persist Security Info=False"
db.Open()
If db.State = ConnectionState.Closed Then db = Nothing
Return db
End Function
然后我愚蠢地尝试将Description = @v.Description
切换为Description = grid(r, 3).Text
,但显然这种方式行不通。
那么,如何表达我必须在 Excel 中使用 C 单元格更新我的 db 列?
【问题讨论】:
需要给参数赋值:docs.microsoft.com/en-us/sql/ado/reference/ado-api/… 这似乎不是有效的 VBA 代码。例如,您不能像在Dim rs As ADODB.Recordset = db.RecordSet
中那样在声明中分配某些内容。此外,很多set
命令丢失
@FunThomas 我写了其他简单的查询,程序运行正常
【参考方案1】:
尝试将查询设为:
db.get_rs("UPDATE Voice SET Description = '" + v.Description +"'")
由于此错误意味着此处提到的值或缺失值的拼写错误:no value given for one or more required parameters
【讨论】:
以上是关于从 Excel 文件查询更新的主要内容,如果未能解决你的问题,请参考以下文章