2017-10-05 5 views
2

私が作成したAccessデータベースにインポートする必要があるデータのリストを含むExcelファイルがあります。 dbの中に私は 'Description'という名前の列があります。説明がセルよりも長い場合、フィールドを更新する必要がありますが、クエリを正しく記述する方法がわかりません。私のExcelでExcelファイルからのクエリの更新

記述はC列から始まるので、私は、文字列を抽出したいとき、私は、このようなコードの行を記述ファイル:

cap.Description = grid(r, 3).Text 

私は更新クエリを記述しようとしたが、それVSは私にこのメッセージを表示しているので動作しません: "追加情報は、1つまたは複数の必須パラメータに対して与えられた値がありません"。

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 = grid(r, 3).TextDescription = @v.Descriptionを試してみましたが、明らかにこの方法では動作しません。 ExcelのCセルでdb列を更新する必要があることをどのように表現できますか?

+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私は他の簡単なquerysを書き、プログラムは正しく動作します – Matteo

答えて

1

としてクエリを作成してください:このエラーは、ここで述べたように値または逃した値の間違ったスペルがあることを意味したよう

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

no value given for one or more required parameters

関連する問題