从Excel文件查询更新

时间:2017-10-05 12:57:04

标签: sql excel vba

我有一个Excel文件,其中包含我必须导入到由我创建的Access数据库中的数据列表。在db中,我有一个名为'Description'的列。当描述比单元格更长时,我必须更新我的字段,但我不知道如何正确编写查询。

在我的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列?

1 个答案:

答案 0 :(得分:1)

尝试将查询设为:

 db.get_rs("UPDATE Voice SET Description  = '" + v.Description +"'")

由于此错误意味着此处提及的值或错过的值拼写错误:no value given for one or more required parameters