使用 ADODB Recordset 插入 Oracle DB

Use ADODB Recordset to INSERT Oracle DB

我正在转换一些将 DAO 记录集上传到 Access 数据库的 Excel-VBA 代码。我的新代码使用 ADODB 对象,需要将数据推送到 Oracle 12c。

我查阅了一些文章,并在此处找到了一个方便的等效图表:From-DAO-to-ADO。使用此信息,我创建了以下代码。

第一位只是加载源记录集。这里没有问题,但如果相关则发布:

Dim CN As New ADODB.Connection, RS As New ADODB.Recordset
Dim SRC_CN As New ADODB.Connection, SRC_RS As New ADODB.Recordset, SRC_CMD As New ADODB.Command
strSQL = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Src_WB_nm & _
        ";Extended Properties='Excel 12.0 Xml;HDR=NO';"
SRC_CN.Open strSQL
Set SRC_CMD.ActiveConnection = SRC_CN
SRC_CMD.CommandType = adCmdText
SRC_RS.Close
Set SRC_RS = Nothing
strSQL = "SELECT * FROM [" & TableNm & "]"
SRC_CMD.CommandText = strSQL
With SRC_RS
    .CursorLocation = adUseClient
    .CursorType = adOpenDynamic
    .LockType = adLockOptimistic
    .Open SRC_CMD
End With

在此段中,我打开目标连接并尝试打开目标记录集。当我在 DAO 中时,这种方法(AddNew、RS...value = RS.value、RS.Update...)就奏效了。我预计它可能需要进行一些修改,但它是我现在无法通过的 RS.Open 命令。

CN.Open CSTRG
strSQL = "DELETE FROM DFSTOOL.C_QUERYLIST"
Set RS = CN.Execute(strSQL)
Set RS = Nothing
RS.Open "DFSTOOL.C_QUERYLIST", CN, adCmdTable
Do Until SRC_RS.EOF
    RS.AddNew
    RS.Fields(0).Value = SRC_RS.Fields(0).Value
    RS.Update
    SRC_RS.MoveNext
Loop
RS.Close
SRC_RS.Close
Set RS = Nothing
Set SRC_RS = Nothing

抛出的错误是:

感谢您提供的任何帮助!

很高兴这是一个简单的语法问题。也许我应该删除 post,但我暂时保留它以防它对其他人有帮助。我引用的等效项 table 指出 "adCmdTable" 是 ADO 中的一个选项,而等效项 "dbOpenTable" 是 DAO 中的一个类型。因此,我需要跳过一些字段以使其位于正确的位置。随后进行了其他微调,最终迭代按预期工作:

RS.Open "DFSTOOL.C_QUERYLIST", CN, adOpenForwardOnly, adLockOptimistic, adCmdTable
Do Until SRC_RS.EOF
    RS.AddNew
    RS.Fields(1).Value = SRC_RS.Fields(0).Value
    RS.Update
    SRC_RS.MoveNext
Loop

感谢社区的耐心等待!