私が作成した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).Text
とDescription = @v.Description
を試してみましたが、明らかにこの方法では動作しません。 ExcelのCセルでdb列を更新する必要があることをどのように表現できますか?
パラメータに値を割り当てる必要があります。https ://docs.microsoft.com/en-us/sql/ado/reference/ado-api/parameters-collection-ado –
これは有効なVBAコードではないようです。たとえば、 'Dim rs As ADODB.Recordset = db.RecordSet'のように宣言に何かを割り当てることはできません。また、多くの 'set'コマンドがありません – FunThomas
@FunThomas私は他の簡単なquerysを書き、プログラムは正しく動作します – Matteo