行に以下のコードでは問題(タイプの不一致エラー)があります: アクション= ....SQL「挿入」
は、私は、Excelからの配列をコピーするには、SQL INSERT INTOを使用するようにしてくださいPostgreSQLデータベースに貼り付けます。
Sub UploadToDatamart2()
'Defining connection objects
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim LastRow As Long
Sheets("AVON DICTIONARY").Activate
'Opening the ODBC connection
cnn.Open "Driver={PostgreSQL Unicode(x64)};DSN=postgres;Server=XXX;Port=5432;UID=YYY;PWD=ZZZ;Database=hurtownia;READONLY=0;PROTOCOL=6.4;FAKEOIDINDEX=0;SHOWOIDCOLUMN=0;ROWVERSIONING=0;SHOWSYSTEMTABLES=1"
'Find the last row
With ActiveSheet
LRow = .Cells(.Rows.Count, "A").End(xlUp).Row
'Picking up cell values
Category = .Range("A3:A" & LRow).Value
segment = .Range("B3:B" & LRow).Value
brand = .Range("C3:C" & LRow).Value
End With
'Defining and executing SQL insert
Action = "INSERT INTO temp.avon_dictionary_test" & " VALUES ('{" & Category & "}','{" & segment & "}','{" & brand & "}')"
Result = cnn.Execute(Action)
cnn.Close
End Sub
、誰もがあなたがCategory
、segment
とbrand
変数の範囲を割り当てる
'Option Explicit 'をモジュールの先頭に追加します。このような問題のデバッグに役立ちます。 'Dim Action As String'を追加し、実行行を' cnn.Execute(Action) 'に変更する必要があります。これはレコードセットを返しません。 – Comintern
私は以下を追加しました:Option Explicit - 上にも、以下もあります:Dim Category As Variant Dim segment Variantとして、Dim brand As Variant。これを修正してください:Dim LRow As Longと置き換えてResult = cnn.Execute(Action)をcnn.Execute(Action)に置き換えてください。それでも同じエラーです – Bartek
文字列としての暗黙のアクション - これも追加しましたが問題はまだ残っています – Bartek