2017-10-05 52 views
2

我有一個Excel文件,其中包含必須導入到由我創建的Access數據庫中的數據列表。在db裏我有一個名爲'Description'的列。它可能會發生,當描述比單元格更長時,我必須更新我的字段,但我不知道如何正確寫入查詢。從Excel文件查詢更新

在我的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.DescriptionDescription = grid(r, 3).Text,但顯然這種方式是行不通的。 那麼,我怎麼能表達,我必須更新我的數據庫列在Excel中的C單元格?

+0

需要的參數賦值:HTTPS ://docs.microsoft.com/en-us/sql/ado/reference/ado-api/parameters-collection-ado –

+0

這似乎不是有效的VBA代碼。例如,你不能像在'Dim rs As ADODB.Recordset = db.RecordSet'中那樣在聲明中分配一些東西。此外,許多'set'命令丟失 – FunThomas

+0

@FunThomas我寫其他簡單的查詢和程序正確運行 – Matteo

回答